GeoViews

Mit GeoViews lassen sich geografische, meteorologische und ozeanografische Datensätze leicht erkunden und visualisieren. GeoViews basiert auf HoloViews und ergänzt deren Visualisierung multidimensionaler Daten um geografischen Plot-Typen, die auf Cartopy basieren.

Installation

Wenn Cartopy bereits installiert ist, kann GeoViews mit pipenv installiert werden:

$ pipenv install geoviews

Beispiele

GeoViews arbeitet gut mit Iris- und xarray-Bibliotheken für mehrdimensionale Arrays zusammen, wie sie in netCDF-Dateien gespeichert sind. GeoViews akzeptiert jedoch auch Daten als NumPy-Arrays und Pandas-Datenrahmen. In jedem Fall können die Daten in ihrem ursprünglichen, nativen Format gespeichert und in ein HoloViews- oder GeoViews-Objekt verpackt werden, das interaktive Visualisierungen ermöglicht.

xarray-Beispiel

Für das folgende Beispiel benötigen wir ebenfalls noch xarray. Es kann mit Spack installiert werden mit:

$ spack install py-xarray
[1]:
import geoviews as gv
import geoviews.feature as gf
import xarray as xr
from cartopy import crs

gv.extension('bokeh', 'matplotlib')
[2]:
gf.ocean
[3]:
(gf.ocean * gf.land * gf.coastline * gf.borders).opts(
    'Feature', projection=crs.Geostationary(), global_extent=True, height=325,width=525,)

Als Beispieldaten verwenden wir geoviews-sample-data.zip und entpacken es als data-Verzeichnis.

[4]:
dataset = gv.Dataset(xr.open_dataset('./data/ensemble.nc'))
ensemble = dataset.to(gv.Image, ['longitude', 'latitude'], 'surface_temperature')

gv.output(ensemble.opts(cmap='viridis', colorbar=True, fig_size=200, backend='matplotlib') * gf.coastline(),
          backend='matplotlib')

GeoPandas-Beispiel

GeoViews unterstützt auch nativ GeoPandas-Datenstrukturen, so dass wir shapefiles und Choropleth einfach darstellen können:

[5]:
import geopandas as gpd
gv.Polygons(gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')), vdims=['pop_est', ('name', 'Country')]).opts(
    tools=['hover'], width=600, projection=crs.Robinson()
)