Skip to main content

A library to create interactive maps of geographical datasets.

Project description

tests codecov       pypi Conda Version       Documentation Status Buy Me A Coffee


A library to create interactive maps of geographical datasets.

  • 🌍 EOmaps provides a simple and intuitive interface to visualize and interact with geographical datasets
    • ⬥ Data can be provided as 1D or 2D lists, numpy-arrays or pandas.DataFrames
    •       ... usable also for large datasets with > 1M datapoints!
    • ⬥ WebMap layers, annotations, markers can be added with a single line of code
    • ⬥ EOmaps is built on top of matplotlib and cartopy and integrates well pandas and geopandas
  • 🌎 Quickly turn your maps into powerful interactive data-analysis widgets
    • ⬥ use callback functions to interact with the data (or an underlying database)
    • ⬥ compare multiple data-layers, WebMaps etc.

🌲🌳 Checkout the documentation for more details and examples 🌳🌲

🔨 Installation

To install EOmaps (and all its dependencies) via the conda package-manager, simply use:

conda install -c conda-forge eomaps

For more information, have a look at the installation instructions in the documentation!

🚀 Contribute

Found a bug or got an idea for an interesting feature? Open an issue or start a discussion and I'll see what I can do!
(I'm of course also happy about actual pull requests on features and bug-fixes!)


EOmaps example image 2 EOmaps example image 1 EOmaps example image 3 EOmaps example image 1 EOmaps example image 1 EOmaps example image 1

🌳 Basic usage

🛸 Checkout the documentation! 🛸

  • A list of coordinates and values is all you need as input!
    • plots of large (>1M datapoints) irregularly sampled datasets are generated in a few seconds!
  • Represent your data
    • as shapes with actual geographic dimensions (ellipses, rectangles, geodetic circles)
    • via Voroni diagrams and Delaunay triangulations to get interpolated contour-plots
    • via dynamic data-shading to speed up plots with extremely large datasets
  • Re-project the data to any crs supported by cartopy
  • Quickly add features and additional layers to the plot
    • Markers, Annotations, WebMap Layers, NaturalEarth features, Scalebars, Compasses (or North-arrows) etc.
  • Interact with the data via callback-functions.
import pandas as pd
from eomaps import Maps

# the data you want to plot
lon, lat, data = [1,2,3,4,5], [1,2,3,4,5], [1,2,3,4,5]

# initialize Maps object
m = Maps(crs=Maps.CRS.Orthographic())

# set the data
m.set_data(data=data, xcoord=lon, ycoord=lat, crs=4326)
# set the shape you want to use to represent the data-points
m.set_shape.geod_circles(radius=10000) # (e.g. geodetic circles with 10km radius)

# (optionally) set the appearance of the plot
m.set_plot_specs(cmap="viridis", label="a nice label")
# (optionally) classify the data
m.set_classify_specs(scheme=Maps.CLASSIFIERS.Quantiles, k=5)

# plot the map
m.plot_map()

# add a colorbar with a histogram on top
m.add_colorbar()

# add a scalebar
m.add_scalebar()

# add a compass
m.add_compass()

# add some basic features from NaturalEarth
m.add_feature.preset.coastline()

# use callback functions make the plot interactive!
m.cb.pick.attach.annotate()

# ---- add another plot-layer on a different level (1) to the map
#      (by default only layer 0 is shown!)
m3 = m.new_layer(layer=1)
...
# peek on layer 1 if you click on the map
m.cb.click.attach.peek_layer(layer=1, how=0.4)
# switch between the layers if you press "0" or "1" on the keyboard
m.cb.keypress.attach.switch_layer(layer=0, key="0")
m.cb.keypress.attach.switch_layer(layer=1, key="1")

# ---- add new layers directly from a GeoTIFF / NetCDF or CSV files
m4 = m.new_layer_from_file.GeoTIFF(...)
m4 = m.new_layer_from_file.NetCDF(...)
m4 = m.new_layer_from_file.CSV(...)

🌼 Thanks to

Project details


Release history Release notifications | RSS feed

This version

3.3

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

EOmaps-3.3.tar.gz (202.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

EOmaps-3.3-py3-none-any.whl (203.8 kB view details)

Uploaded Python 3

File details

Details for the file EOmaps-3.3.tar.gz.

File metadata

  • Download URL: EOmaps-3.3.tar.gz
  • Upload date:
  • Size: 202.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12

File hashes

Hashes for EOmaps-3.3.tar.gz
Algorithm Hash digest
SHA256 f971b266f5f92b6d976a2ee108e3bb3389da8d9a1d68b64be9cd7c243b2ef5cf
MD5 807eb08eaf37348699bdf3ee11b0106f
BLAKE2b-256 6e37fab042eff5b6f396b65430bb162c79584d264554be2c435c9e7c324a87d6

See more details on using hashes here.

File details

Details for the file EOmaps-3.3-py3-none-any.whl.

File metadata

  • Download URL: EOmaps-3.3-py3-none-any.whl
  • Upload date:
  • Size: 203.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12

File hashes

Hashes for EOmaps-3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 dc08330ee36bde2b1c83c494054dbc6b18acf8960eebddcb30fe5924973bd071
MD5 788e85abd692051655767e6d63432d59
BLAKE2b-256 2d4d2b08b43aaf66a786086d5418a3c33b7ccfa6b0f2760a825187aef09e91aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page