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 + gf.land + gf.ocean * gf.land * gf.coastline * gf.borders).opts(
"Feature", projection=crs.Geostationary(), global_extent=True, height=325
).cols(3)
[2]:
Als Beispieldaten verwenden wir geoviews-sample-data.zip und entpacken es als data
-Verzeichnis.
[3]:
!curl http://assets.holoviews.org/geoviews-sample-data.zip --output geoviews-sample-data.zip
!unzip geoviews-sample-data.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6246k 100 6246k 0 0 5679k 0 0:00:01 0:00:01 --:--:-- 5694k
Archive: geoviews-sample-data.zip
inflating: ensemble.nc
inflating: ensembles.nc
inflating: pre-industrial.nc
[4]:
dataset = gv.Dataset(xr.open_dataset("./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:
[4]:
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())
/tmp/ipykernel_88986/2104909695.py:5: FutureWarning: The geopandas.dataset module is deprecated and will be removed in GeoPandas 1.0. You can get the original 'naturalearth_lowres' data from https://www.naturalearthdata.com/downloads/110m-cultural-vectors/.
gpd.read_file(gpd.datasets.get_path("naturalearth_lowres")),
[4]: