Skip to content

Releases: raphaelquast/EOmaps

EOmaps v2.1.1

07 Dec 11:50
8292223
Compare
Choose a tag to compare

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 call plt.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

03 Dec 15:50
f938a5b
Compare
Choose a tag to compare

... there are a lot of documentation updates!

🌳 new

🐛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")

🔨 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 to GridSpec

EOmaps v2.0.2

30 Nov 21:27
1006d57
Compare
Choose a tag to compare

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

23 Nov 14:03
debdb54
Compare
Choose a tag to compare

... just a minor bugfix release

EOmaps v2.0

23 Nov 13:53
dd5e69f
Compare
Choose a tag to compare

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)

🌱... 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 and orientation are now set on initialization of the Maps-object!
    (they are no longer arguments of m.plot_map())

  • callbacks are now accessed differently

    • instead of m.cb.attach() and m.cb_click.attach there's now
      • m.cb.click : trigger callbacks when clicking anywhere on the map
      • m.cb.pick : trigger callbacks when clicking on a point of the plotted dataset
      • m.cb.keypress : trigger callbacks when pressing a key
      • m.cb.dynamic : trigger callbacks on events (e.g. zoom)

🔨 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

04 Nov 12:10
248148f
Compare
Choose a tag to compare

🌳 new

  • m.set_shape.rectangles(radius, radius_crs, n) now supports an additional n 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

03 Nov 22:18
d6c5db0
Compare
Choose a tag to compare

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

03 Nov 16:10
3de6cf4
Compare
Choose a tag to compare
  • 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

15 Oct 14:49
59db8d3
Compare
Choose a tag to compare

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

12 Oct 08:34
Compare
Choose a tag to compare

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() and m.cb.clear_markers() to clear all annotations and markers
  • m.figure.set_colorbar_position() to manually change the position of the colorbar & histogram
  • m.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 in ipympl 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 to m.plot_map
  • always overwrite all classify_specs to avoid mixing kwargs