Releases: raphaelquast/EOmaps
Releases · raphaelquast/EOmaps
EOmaps v2.1.1
just some minor bugfixes
🔨 fixes
- fix some issues with the crs-specification in
m.add_gdf()
- automatically activate matplotlib's interactive mode using
plt.ion()
and callplt.show()
when a map is created - include wms dependencies in setup.py
- the default radius for
m.add_marker
no longer requires a dataset - add support for using a custom picker (work-in-progress)
EOmaps v2.1
... there are a lot of documentation updates!
🌳 new
- axes-specifications can now be passed to the initialization of a
MapsGrid
object - there are new WebMap layers!
- OSM default style (https://openstreetmap.org)
- OSM german default style (https://openstreetmap.de)
- OpenTopoMap (https://opentopomap.org)
- OSM stamen toner (standard, lite, lines, labels, background, hybrid) (http://maps.stamen.com/#toner)
- OSM stamen terrain (standard, lines, labels, background) (http://maps.stamen.com/#terrain)
- OSM stamen watercolor (http://maps.stamen.com/#watercolor)
🐛changes
- adding WebMap services now works exclusively via
m.add_wms
independent of the service-type
(m.add_wmts
has been removed)- for services that allow multiple access possibilities (e.g. WMS, WMTS, etc.), the preferred way of accessing the WebMap service can be set on the initialization of the Maps-object via
m = Maps(preferred_wms_service="wmts")
- for services that allow multiple access possibilities (e.g. WMS, WMTS, etc.), the preferred way of accessing the WebMap service can be set on the initialization of the Maps-object via
🔨 fixes
- positional arguments are now properly forwarded when callbacks are attached
(e.g.m.cb.click.peek_layer(1)
now works as expected) - generalized access to xyz-tile-server
- kwargs passed to
MapsGrid
are now forwarded toGridSpec
EOmaps v2.0.2
another minor bugfix release
🌳 new
- There's a new example on how to use WebMap services in the doc!
🔨 fixes
- make sure WebMap services are put on the assigned default layer
- avoid initializing axes on S1GBM wms-collection initialization
- make sure to update S1GBM layer if "home" or "left/right" toolbar buttons are pressed
EOmaps v2.0.1
... just a minor bugfix release
EOmaps v2.0
This release represents a complete re-work compared to EOmaps v1.x.x !
🌼 A documentation is now available on readthedocs! >>> check it out here
🌳 new
🌴 WMS and WMTS capabilities
- ❗ requires optional dependency
owslib
- WMTS (or WMS) layers can be added via:
m.add_wmts.<COLELCTION>.add_layer.<LAYER>(**kwargs)
m.add_wmts.<COLELCTION>[<LAYER>](**kwargs)
- pre-defined layers include interfaces to
- ESA Copernicus & WorldCover layers
- Sentinel-1 Global Backscatter Model
- EEA Discomap layers
- NASA GIBS
- Austrian basemaps (basemap.at & Vienna)
- ... and more!
🌵 re-arrange plot-axes via drag & drop
- press
alt
+d
to activate / deactivate "axis-arrangement" mode- use the mouse to select the axis you want to change
- use "left/right/up/down" or the mouse to move the selected layer
- use "alt+left/right/up/down" to move the layer quicker
- use "ctrl+up/down" to show/hide colorbars & histograms
🌲 share callback-events between multiple Maps objects
- e.g.: click on one map to trigger a callback on multiple connected maps!
- to connect maps-objects, provide a "parent"-object on initialization
m = Maps(parent=m0)
- forward callback-triggers from one Maps object to others via:
m.cb.click.forward_events(m1, m2, m3)
- ... or join the callback-events "both-ways" via
m.cb.click.share_events(m1, m2, m3)
- to connect maps-objects, provide a "parent"-object on initialization
🌱... and some more:
- there's a new
MapsGrid
object to quickly initialize a grid of Maps-objects
m1, m2, m3, m4 = MapsGrid(2, 2)
- join zoom-limits between multiple axes (with the same crs)
m.join_limits(m1, m2, m3)
🦠changes
-
f
,gs_ax
andorientation
are now set on initialization of the Maps-object!
(they are no longer arguments ofm.plot_map()
) -
callbacks are now accessed differently
- instead of
m.cb.attach()
andm.cb_click.attach
there's nowm.cb.click
: trigger callbacks when clicking anywhere on the mapm.cb.pick
: trigger callbacks when clicking on a point of the plotted datasetm.cb.keypress
: trigger callbacks when pressing a keym.cb.dynamic
: trigger callbacks on events (e.g. zoom)
- instead of
🔨 fixes
- make sure shapes are properly copied on
m.copy()
- make sure
geod_circles
only takes numbers as radius - sharing callbacks now works across coordinate-systems!
- multiple temporary markers & annotations are now supported
EOmaps v1.0.2
🌳 new
m.set_shape.rectangles(radius, radius_crs, n)
now supports an additionaln
keyword to calculate intermediate points on the edges
(e.g. useful to draw "curved" projected rectangles)
🛸 fixes
- allow setting
n
also in the mark-callback
EOmaps v1.0.1
a minor bugfix release
🌳 new
- a new method
m.indicate_masked_points()
is added to indicate points that have been masked
🛸 fixes
- fix repr-string of the callback-container
- fix adding markers if "geod_circles" have been plotted
- avoid transforming "out-of-bounds" for rectangles
- don't create markers with radius="pixel" if the shape does not set a radius
🌍 checkout the README, the example-notebook and the docstrings
for usage-details!
EOmaps v1.0
- major updates and breaking changes compared to EOmaps v0.x.x
🌍 checkout the README, the example-notebook or the docstrings
for usage-details!
EOmaps v0.1.7
new
there are 2 new plot-types:
"delauney_triangulation"
- ... e.g. plot a (continuous) triangulation-shading of irregularly distributed points
- it supports additional customization by adding a suffix to the "shape"-name:
_flat
: plot actual polygons (with mean-values) instead of a mesh that interpolates values_masked
: use the defined "radius" to mask any triangle for which the distance between the centroid and the vertices exceeds (2 * radius)
(particularly useful for densely sampled data-points whose exterior is a a concave shape)_flat_masked
: a combination of the above options
"Voroni"
- create a voroni-diagram
- similar as with the Delauney triangulation, any polygon whose defining data-point is farther than (2 * radius) away from any vertex of the Voroni-diagram is masked
fixes
- cache the background on first draw of the map so that callbacks can immediately trigger
EOmaps v0.1.6
new
- example notebook updated to show most of the implemented functionalities
- markers & annotations now support
permanent=True/False
- there's now an option
m.set_plot_specs(histbins="bins")
to use the bins calculated
by the data-classification for the histogram! (...only possible if a classification is used!) - you can now specify "layers" for dynamic plot components (e.g. markers, annotations etc)
- option "radius_crs" added to
m.cb.mark
to specify the radius of the marker in an arbitrary crs
new functions:
m.cb.clear_annotations()
andm.cb.clear_markers()
to clear all annotations and markersm.figure.set_colorbar_position()
to manually change the position of the colorbar & histogramm.add_overlay_legend()
to quickly customize the legend for map-overlays
fixes
- "rectangle"-marker can now be properly "buffered"
- fix setting "vmin" and "vmax" in
plot_specs
- major improvements on blitting implementation
- use explicit cleanup functions to clear markers & annotations separately
- set "double_click=False" as the default for callbacks
(to avoid the open issue that double-clicks are not recognized inipympl
for Jupyter-Notebooks ) - ensure histogram is always properly positioned on top of the colorbar
- fix rotation and size of markers
- allow multiple callbacks (with same button) for "marker" and "annotation"
- fix initialization of subgrids if a
GridSpec
is passed tom.plot_map
- always overwrite all
classify_specs
to avoid mixing kwargs