cartocosmos's People
Forkers
scottaames kaitlyndlee jkaufy cgm78 acpaquette thareusgs swalterfub amesamoyers geostac amystamile-usgs mr-perrycartocosmos's Issues
Create Projection Control
Create a subclass of L.Control that contains the swap projection code. Follow: https://leafletjs.com/examples/extending/extending-3-controls.html
Try to filter WFS request to only get names back
try addinf propertyName=clean_feature
to the WFS query
Polish GUI styling
Add proj-strings for all targets and their projections
Will need to create a JSON that stored the proj-strings for all targets and their projections.
Add Overlays to Jupyter Notebook
We still need to add the overlays to Jupyter Notebook.
Document Jupyter Notebook Python Code for PIP
PIP has documenting standards for use on their site. We need to implement these standards with our Jupyter Notebook code.
Create Leaflet Layer subclass
Create a subclass of L.Layer that contains the layer code. Follow: https://leafletjs.com/examples/extending/extending-1-classes.html
Remove unnecessary imports
Remove unused imports from files after testing
Integrate GUI and Map
Unit testing for AstroMath class
Abstract Map Class
Add Jupyter Notebook Demo to this repo somewhere
Create documentation with JsDocs
We will need to make sure that we can generate documentation using jsdocs and add the docs to our GitHub docs repo (CartoCosmos.github.io). We will probably need to setup a website for the docs through GitHub pages and push our docs to it.
Figure out how to use Proj with ipyleaflet
After some research, it looks like we will have to either create a wrapper around proj4leaflet or add an interface to proj ourselves.
Fix Coordinate Class to take in JSON file
As of now, the coordinate class uses a switch case to find the radius of different targets. Change it so we can use a JSON file to find the radius for the targets instead.
Create AutoComplete Demo
Disable proj buttons if the target does not have that proj
Right now, if a target does not have any layers with polar projections, then an error occurs. If there are no layers for that projection, the buttons should be disabled.
Disable lat/lon outside of body
Change default/max zoom based on the target's radii
If a target's radii is small compared to Mars, then the zoom is too high for the layers. So, we should calculate the zoom level based off of the radii.
Write documentation on how to setup conda
Some users will want to use conda for installing dependencies and will need steps to use conda with our module.
Split Jupyter Notebook Code into two class GUI and AstroMap.
To make the code more practical we should split the Jupyter Notebook module into two different classes.
Link LatLonSelects to Coordinate Class
Write JSDocs for AutoComplete
Add polygons to Map
This includes drawing on the map, creating coordinates and adding them to the map, and drawing polygons from a WKT string. We also need to output the WKT for a polygon drawn on the map: both drawn with the control and added through a method.
Add AstroMap Unit Test
Add requirements.txt file for easy pip installs
A user should be able to run pip install -r requirements.txt
and install all dependencies. See: https://pip.pypa.io/en/stable/user_guide/
Write documentation on how to setup.
Put Autocomplete search bar in map page
Add target switcher
Add FullScreen Menu
Put AutoComplete Demo in this Repo
Need assistance pulling autocomplete.js github repo into my own.
I want to pull the autocomplete.js repo into my own under the autocomplete.js folder so we can download only one github but am having trouble doing this.
Comment out WFS code for now
Add fullscreen functionality to GUI
When the map is in fullscreen, the GUI should become a sidebar.
Add wrapping to Coordinate Class
I commented out the code for now because it was making 0 degrees 180 degrees.
Create GUI Prototype
Abstract the code from the demo.
Unrendering results list
Results list gets rendered when I enter a value but not unrendered when I click outside of the textbox, trying to get it to unrender when I focus out or select a value.
Abstract Coordinate Class
Warp drawn shape to projection
If you draw a shape on a n/s projected map or change from cylindrical to n/s, then the drawn shape will need to warp to the projection. OpenLayers currently does this using WKT, but OL has native support for WKT. Might be trickier for us.
Add WFS functionality to AutoComplete
Space between searchbox and results list.
There is a space between the searchbox and results list in the autocomplete which I would like to get rid off. I am having trouble but believe it to be an issue with the css file.
[BUG] proj buttons become enabled if active button is n/s polar and switch to target without n/s polar projections
Sorted features not completely sorted
Not sure why this is happening, but when we sort the list of features, some features are not being sorted correctly.
Add setup.py script
We should have a setup.py script that installs our module into an environment, pip or conda. Checkout: https://packaging.python.org/tutorials/packaging-projects/
Add draw command to map
This includes outputting a WKT of the polygon.
Reformat jupyter notebook directory
How python modules are usually setup:
- root directory
setup.py
environment.yml
- <name_of_module>
.py
files in module__init__.py
Example to look at: https://github.com/USGS-Astrogeology/ale
Add WFS overlays to the Leaflet Map
We are currently using WMS to add the feature names to the maps. We should change these to use WFS. WMS returns an image, while WFS will return a GeoJSON
Cannot display any maps in a Jupyter Notebook
Hello,
Nice project! I wanted to give CartoCosmos a try but I failed very quickly...
Do you have any ideas why I'm getting the following error?
(installation using pip worked fine)
Thanks
import CartoCosmos as l
map = l.planetary_maps('mars')
map.display_map()
---------------------------------------------------------------------------
TraitError Traceback (most recent call last)
<ipython-input-5-14e8d0255894> in <module>
----> 1 map = l.planetary_maps('mars')
2 map.display_map()
~/workspace/majis/venv/lib/python3.6/site-packages/CartoCosmos/planetary_maps.py in __init__(self, targetName)
52
53 self.find_radius()
---> 54 self.create_layers()
55 self.create_map()
56
~/workspace/majis/venv/lib/python3.6/site-packages/CartoCosmos/planetary_maps.py in create_layers(self)
97 crs='EPSG4326',
98 base=True,
---> 99 show_loading=False,
100 )
101
~/workspace/majis/venv/lib/python3.6/site-packages/ipyleaflet/leaflet.py in __init__(self, **kwargs)
267
268 def __init__(self, **kwargs):
--> 269 super(TileLayer, self).__init__(**kwargs)
270 self.on_msg(self._handle_leaflet_event)
271
~/workspace/majis/venv/lib/python3.6/site-packages/ipyleaflet/leaflet.py in __init__(self, **kwargs)
96
97 def __init__(self, **kwargs):
---> 98 super(Layer, self).__init__(**kwargs)
99 self.on_msg(self._handle_mouse_events)
100
~/workspace/majis/venv/lib/python3.6/site-packages/ipywidgets/widgets/widget.py in __init__(self, **kwargs)
410 """Public constructor"""
411 self._model_id = kwargs.pop('model_id', None)
--> 412 super(Widget, self).__init__(**kwargs)
413
414 Widget._call_widget_constructed(self)
~/workspace/majis/venv/lib/python3.6/site-packages/traitlets/traitlets.py in __init__(self, *args, **kwargs)
995 for key, value in kwargs.items():
996 if self.has_trait(key):
--> 997 setattr(self, key, value)
998 else:
999 # passthrough args that don't set traits to super
~/workspace/majis/venv/lib/python3.6/site-packages/traitlets/traitlets.py in __set__(self, obj, value)
583 raise TraitError('The "%s" trait is read-only.' % self.name)
584 else:
--> 585 self.set(obj, value)
586
587 def _validate(self, obj, value):
~/workspace/majis/venv/lib/python3.6/site-packages/traitlets/traitlets.py in set(self, obj, value)
557
558 def set(self, obj, value):
--> 559 new_value = self._validate(obj, value)
560 try:
561 old_value = obj._trait_values[self.name]
~/workspace/majis/venv/lib/python3.6/site-packages/traitlets/traitlets.py in _validate(self, obj, value)
589 return value
590 if hasattr(self, 'validate'):
--> 591 value = self.validate(obj, value)
592 if obj._cross_validation_lock is False:
593 value = self._cross_validate(obj, value)
~/workspace/majis/venv/lib/python3.6/site-packages/traitlets/traitlets.py in validate(self, obj, value)
2527
2528 def validate(self, obj, value):
-> 2529 value = super(Dict, self).validate(obj, value)
2530 if value is None:
2531 return value
~/workspace/majis/venv/lib/python3.6/site-packages/traitlets/traitlets.py in validate(self, obj, value)
1675 return value
1676 else:
-> 1677 self.error(obj, value)
1678
1679 def info(self):
~/workspace/majis/venv/lib/python3.6/site-packages/traitlets/traitlets.py in error(self, obj, value)
1522 % (self.name, self.info(), msg)
1523
-> 1524 raise TraitError(e)
1525
1526
TraitError: The 'crs' trait of a WMSLayer instance must be a dict, but a value of class 'str' (i.e. 'EPSG4326') was specified.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.