Eomaps

Latest version: v8.2.1

Safety actively analyzes 641024 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 11 of 15

3.1.3

... another bugfix release

🌦️ changes
- an AssertionError is now raised if data- and coordinate dimensions do not match
(to avoid treating datasets with equal size but different shape as valid 1D inputs)

🔨 fixes
- fix re-projection of data provided with 1D coordinates and 2D data-values (e.g. raster-data)
- fix treatment of nan-values for datashader plots
- update docs for NaturalEarth features and GeoDataFrames

3.1.2

... some more quick fixes
🔨 fixes
- fix rotation angle of ellipses
- remove unnecessary print command
- fix treatment of plot_specs kwargs (vmin, vmax, cmap etc...) in Maps.from_file
- fix defaultargs in add_gdf

3.1.1

A minor bugfix release

🌦️ changes
- 🚀 major speedup and reduced memory consumption for very large datasets
- new way for indexing picked pixels (uses much less ram with similar performance)
- the `pick_distance` argument of `Maps()` now specifies the search-rectangle for identifying picked pixels
- a rectangle of `radius * pick_distance` x `radius * pick_distance` around the center of the clicked pixel is used

🔨 fixes
- fix deleting callbacks from within a callback
- fix automatic identification of Equi7Grid crs
- fix treatment of numerical wms-layer names
- fix intersection of gdf with crs domain
- fix Maps.read_file should be a classmethod
- fix deleting data_specs when figure is closed

3.1

🌳 New

⭐ New bindings for the awesome [datashader](https://datashader.org/) library!
- Particularly useful to speed up plotting of **extremely large datasets** (>10M datapoints)
- Requires `datashader` to be installed (e.g. `conda install -c conda-forge datashader`)
- To use "datashader" for rendering the map, set the `plot-shape` to:
- `m.set_shape.shade_points(...)` :
use datashader to "shade" the data with infinitesimal points
- `m.set_shape.shade_raster(...)` :
(only for rectangular datasets with data_crs=plot_crs)
use datashader to "shade" the data as a dynamically updated QuadMesh

⭐ It is now possible to add a **Compass** (or a **North-Arrow**) to the map!
- simply use `c = m.add_compass(...)`
- the compass is dynamically updated on zoom events and can be dragged around with the mouse!
![asdf](https://user-images.githubusercontent.com/22773387/154319658-2a11a335-6d29-40e9-8328-620b1cf6442d.png)

⭐ EOmaps now has some basic readers for common data-types (NetCDF, GeoTIFF, CSV)
- Requires `xarray`, `rioxarray` and `pandas`
- Use `gdf = m.read_file.NetCDF(...)` to read all relevant data
- Use `m = Maps.from_file.NetCDF(...)` to directly initialize a ``Maps``-object from a file
- Use `m2 = m.new_layer_from_file.NetCDF(...)` to add a new layer to an existing ``Maps`` object from a file

⭐ Support for Equi7Grid projection
- EOmaps now provides a cartopy-compatible crs for [Equi7Grid](https://github.com/TUW-GEO/Equi7Grid) projections!
- Requires `equi7grid` to be installed (e.g. `pip install equi7grid`)
python
from eomaps.projections import Equi7Grid_projection
m = Maps(Equi7Grid_projection("EU")

![asdf2](https://user-images.githubusercontent.com/22773387/154441310-f7987207-9b62-4c45-bf16-039557581c0c.png)

⭐ New clipping & re-projection methods for GeoDataFrames
- `m.add_gdf()` and `m.add_feature()` now have 2 new arguments: `reproject` and `clip`
(useful to avoid re-projection issues):
- `reproject` lets you select between geopandas (="gpd") and "cartopy" for re-projecting the geometries
- `clip` lets you select multiple ways for clipping the data prior to plotting
- "crs", "crs_bounds", "extent", "gdal_SymmetricDifference", "gdal_Intersection" and "gdal_Difference"

🌦️ changes
- The pixel-radius is now estimated using a more robust method if no explicit radius is provided.
- it's based on the median of the nearest-neighbour distances for the first 100k datapoints
- the number of datapoints used to estimate the radius can be adjusted by setting
`m.set_shape.radius_estimation_range `
- The `title` argument of `m.set_plot_specs` is now depreciated... use `m.ax.set_title()` instead!

⚙️ fixes
- fix `MapsGrid` crs-specifications with pyproj and `numpy`-dtypes
- fix skipping re-projection if "in-crs" == "plot_crs"
- fix `MapsGrid` has no attribute `preferred_wms_service`
- fix 'radius' estimation for shapes that do not explicitly require a radius
- fix background-layers need to be re-fetched if the figure canvas is resized
- clear data from memory if the figure is closed
- fix masking of nan-values prior to plotting
- `m.add_colorbar()` now supports setting the number of bins used to draw the histogram via the `histbins` kwarg
- make sure that zoom and close callbacks are only attached once to the figure
- fix delayed fetching of RestAPI services

3.0

EOmaps v3.0 comes with a lot of usability improvements and some nice new features!

❗ NOTE: There are breaking changes compared to EOmaps v2.x
... if you used EOmaps before, make sure to take a quick look at the list below!
(or check the [examples](https://eomaps.readthedocs.io/en/latest/EOmaps_examples.html) in the doc which have been updated accordingly)

<details>
<summary> ❗ details on breaking changes with respect to EOmaps v2.x - [click to expand] </summary>

- Removed functions and properties: `m.add_overlay`, `m.add_coastlines`, `m.crs_list`
- Changed arguments and/or behavior: `Maps`, `MapsGrid`, `m.copy`, `m.plot_map`, `m.add_gdf`, `m.add_colorbar`
- New functions: `m.new_layer`, `m.add_feature`, `m.add_logo`, `m.cb.pick.highlight_geometry`

- ❗ `m.add_overlay` and `m.add_coastlines` have been removed in favor of `m.add_feature`
- ⭐ use `m.add_feature.<category>.<feature>( ... )` instead
- ❗ the `coastlines` as well as the `colorbar` argument for `m.plot_map()` have been removed
- ⭐ use `m.add_feature.preset.coastline()` or `m.ax.coastlines()` instead
- ⭐ use `m.add_colorbar()` after calling `m.plot_map()` to add a colorbar for an existing map
- ❗ the arguments and behavior of `m.copy(...)` have changed
(note that most of the time users anyway will want the new ⭐`m.new_layer()` function)
- all arguments of `m.copy` are now without the "copy_" prefix, e.g.: "data" instead of "copy_data" etc.
- ❗ the first argument of `Maps` is now the plot-crs (e.g. `Maps(crs=3857)` is the same as `m.plot_specs.crs=3857` )
and additional `kwargs` are forwarded to the initialization of the matplotlib-figure (e.g. `plt.figure`)
</details>

🌳 New
⭐ the plot coordinate-system is now specified directly on initialization of `Maps` object
- ❗ NOTE: this replaces `m.set_plot_specs(crs=...)` as well as `m.plot_specs.crs=...`
- additional kwargs are passed to the initialization of the `matplotlib` figure
python
m=Maps(crs=4326, figsize=(10,5))


⭐ there's a new function `m.new_layer()` that simplifies adding new layers to a map
- it simply returns a new `Maps` object that shares the figure and plot-axes.

⭐ EOmaps now supports multiple ways for providing datasets!
- a single `pandas.DataFrame` containing both values and coordinates (the only option for EOmaps < v2.4.2)
- individual `pandas.Series` for data-values and coordinates
- individual 1D or 2D `numpy.arrays` for data-values and coordinates
- individual 1D lists for data-values and coordinates

⭐ The new `m.add_feature` container provides direct access to ALL NaturalEarth features!
- ❗ NOTE: this replaces `m.add_overlay` and `m.add_coastlines`
- autocompletion helps with identifying the relevant NaturalEarth features
- e.g. `m.add_feature.physical_10m.<...feature...>(...)` or `m.add_feature.cultural_50m.<...feature...>(...)`
- with `geopandas` installed, NaturalEarth features can be interactive too!
(adding static layers works also without `geopandas`)

python
access specific NaturalEarth layers:
m.add_feature.cultural_50m.admin_0_countries(fc="red", ec="k", alpha=0.5)

there are some presets to quickly add commonly used features
m.add_feature.preset.ocean() (coastline, land, countries)

make the layers interactive (requires geopandas)!
m.add_feature.cultural_50m.admin_0_countries(fc="none", ec="k", picker_name="countries")
m.cb.pick["countries"].attach.highlight_geometry(fc="r")


⭐ there's a new function `m.add_logo` that can be used to add images to the map
- particularly useful to add a smal logo in the corner of a plot

⭐ a lot of improvements to `m.add_gdf`
- it is now possible to pick a geometry based on the closest `"centroids"` or based on a `"contains"` query
- with this, picking now also works for lines and points!
python
for picking lines and points
m.add_gdf(gdf, picker_name="pickername", pick_method="centroids")
m.cb.pick["pickername"].attach.<...>
for picking polygons
m.add_gdf(gdf, picker_name="pickername2", pick_method="contains")
m.cb.pick["pickername2"].attach.<...>


⭐ there's a new pre-defined callback `m.cb.pick[<name>].highlight_geometries`
- this callback is exclusive to `geopandas.GeoDataFrames` and allows highlighting a shape when you click on it!

⭐ `m.add_colorbar()` can now be used to add colorbars to existing Maps!
- ❗ NOTE: this replaces the old `colorbar`-argument of `m.plot_map()`

⭐ `MapsGrid` now supports additional functionalities
- use `MapsGrid(crs=...)` to specify the crs
(unique crs for each Maps-objects can be specified by passing `lists` or `dicts`)
- there are a lot of new convenience-functions to execute actions on all `Maps` objects on the grid:
- `mgrid.add_feature`, `mgrid.add_wms`, `mgrid.add_colorbar`, `mgrid.set_shape`, `mgrid.add_logo`

⭐ the plot-axis can now be accessed directly via `m.ax`

⭐ possible crs for plotting are now accessible via `Maps.CRS` and possible classifiers are accessible via `Maps.CLASSIFIERS`

🔧 fixes
- fix `m.cb.pick.plot` callback
- fix forwarding of event attributes
- treatment of point- or line-like NaturalEarth features
- fix `layer` kwarg for `m.add_gdf`
- a lot more unittests!
- allow positional arguments for `m.set_data` (or `m.set_data_specs`)

2.4.1

A minor bugfix release

🔧 fixes
- fix nested copying of Maps objects with "connect=True"
- fix `EEA_DiscoMap` WMS service
- fix toolbar-action check if no toolbar exists
- fix `m.cb.dynamic.indicate_extent()` does not show extent right away
- ... update some warnings, remove obsolete functions and print-statements

⚙️ updates
- ... a lot of new unittests
- all examples from the doc are run during the unittests
- added tests for WebMap services
- added tests for interactive capabilities (scalebar, draggable axes, etc.)

Page 11 of 15

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.