Skip to content

EOmaps v5.0

Compare
Choose a tag to compare
@raphaelquast raphaelquast released this 02 Nov 23:29
· 1955 commits to master since this release
41c3ca9

A new major release that brings a lot of very nice features and updates πŸ₯³

❗ (possibly) breaking changes to v4.x ❗

New layer-name convention:

  • All layer-names are now parsed as string!
    (any non-string object passed as layer-name will be converted to string and a warning is shown)

  • The "|" character is used as a separator for multi-layers (see new ⧉ Multi Layers feature below)
    (a layer-name such as "first|second" now represents the combined artists for the layers "first" and "second")

Changes for the colorbar

The implementation of the colorbar has been re-worked and several changes have been introduced:

  • Colorbars are now accessible via m.colorbar
    • Some arguments of m.add_colorbar(...) have changed! Check the docstring for details!
    • The individual colorbar-axes are accessible via m.colorbar.ax_cb and m.colorbar.ax_cb_plot
    • To set the size of the colorbar, use m.colorbar.set_position(...)
    • To remove a colorbar, use m.colorbar.remove()

🌳 New

🧰 Companion widget

Starting with v5.0, EOmaps provides an awesome companion-widget to speed up data-comparisons and analysis.

NOTE: Using the widget is only possible if you use matplotlibs "PyQt5" backend!

  • To open the widget, simply press w on the keyboard while the mouse-pointer is hoovering the map.
  • The ? button on the top left can be used to activate showing help-tooltips if you hoover over the controls explain their functionalities.

πŸ“– Checkout the corresponding section in the docs for more details! 🧰 Companion Widget

✏️ Draw shapes on the map

There is a new functionality to draw simple (geo-coded) shapes on the map!

πŸ“– Checkout the corresponding section in the docs for more details! ✏️ Draw shapes on the map

⧉ Multi Layers

It is now possible to create "multi-layers" which inherit their artists from existing layers.
The layer-name hereby consists of existing layer-names separated by "|".

To show the layers "first" and "second" at the same time, use:

m.show_layer("first|second")
  • If you view a multi-layer, ALL artists from the constituting layers will be shown!
    • E.g.: "first|second|third" will show all artists of the layers "first", "second" and "third"
  • The "vertical stacking order" for plotting is still exclusively determined by the zorder property of the artists!
    • (artists at the same zorder are ordered with respect to the creation-time)
  • It is possible (however rarely useful) to create a Maps object representing multi-layers
    • Its artists will then only be shown if all constituting layers are visible

πŸ“– Checkout the corresponding section in the docs for more details! πŸš€ Basics/Layers

πŸ—οΈ Updates for the Layout Editor

  • Select (and edit) multiple axes by holding shift while clicking on the axes
  • Scaling the axes-size (with the scroll-wheel or the +/- buttons) now preserves the center of the axis
  • If you hold down control while a colorbar is selected, the scroll wheel (or the +/- buttons) will adjust
    the relative size between the colorbar and the histogram
  • If you hold down h (or v) the scroll-wheel adjusts only the horizontal (or vertical) size of the axes

πŸ“– Checkout the corresponding section in the docs for more details! πŸ—οΈ Layout Editor

πŸ—ΊοΈ Set map-extent via OpenStreetMap Nominatim query

  • There is now a method to set the extent of the map via a OSM query.
    m = Maps()
    m.set_extent_to_location("Austria")
    m.add_wms.OpenStreetMap.add_layer.default()

πŸ“· Snapshots for JupyterNotebooks

  • The new m.shapshot() functionality allows you to plot static snapshots of a map
    in Jupyter Notebooks (or in the IPython console) irrespective of the used backend.

πŸ‘“ Updates for peek-layer callbacks:

  • It is now possible to use transparency when peeking on a layer!
    m.cb.click.attach.peek_layer(layer="some layer", alpha=.5)
  • There's a new option how="full" to overlay another layer on the whole axis
  • The size of the square used for peeking (e.g. how=0.5) is now always with respect to the smallest axis-dimension

... additional new features ...

  • Equi7Grid projections can now be accessed via explicit names (e.g.: Equi7_EU, Equi7_AF...)
  • Any colormap created by EOmaps during runtime is now always registered as a matplotlib colormap
  • It is now possible to add logos to specific layers by using: m.add_logo(layer=...)
  • πŸ›°οΈ New WebMap services
    • m.add_wms.OpenStreetMap.OSM_wms
    • m.add_wms.OpenStreetMap.OSM_landuse

Dynamic artists are now layer-sensitive!

  • annotations and markers can now be added to specific layers:
    m.add_annotation(layer=...) and m.add_marker(layer=...)
  • To add dynamic artists on specific layers, simply use m.BM.add_artist(<artist>, layer=...)
    (to make the artist visible on all layers, simply use layer="all")

🌦️ (non-breaking) Changes

  • obsolete arguments radius and radius_crs have been removed from m.set_shape.raster()
  • the default radius for m.set_shape.geod_circles has been set to 1km

πŸ”¨ Fixes

  • fix default style kwarg for wms layers
  • remove obsolete shape arguments
  • fix custom args for feature presets
  • fix _on_layer_change actions
  • fix fetching wmts services
  • fix passing kwargs to wms and wmts services added to the active layer
  • fix updating background layers on add/remove of artists
  • fix handling of encoded NetCDF data