Skip to content

Commit 7a97ca0

Browse files
committed
📝 Add file formats for geodata
1 parent 07d9800 commit 7a97ca0

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed

docs/data-processing/geodata.rst

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,119 @@
55
Geodaten
66
========
77

8+
Dateiformate
9+
------------
10+
11+
.. _pmtiles:
12+
13+
PMTiles
14+
~~~~~~~
15+
16+
`PMTiles <https://docs.protomaps.com>`_ ist ein allgemeines Format für
17+
Kacheldaten, die durch Z/X/Y-Koordinaten adressiert werden. Dabei kann es sich
18+
um kartografische Vektorkacheln, :ref:`Fernerkundungsdaten <remote-sensing>`,
19+
JPEG-Bilder oder ähnliches handeln.
20+
21+
Zum Lesen werden `HTTP Range Requests
22+
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests>`_ verwendet,
23+
um nur die relevanten Kacheln oder Metadaten innerhalb eines PMTiles-Archivs
24+
abzurufen. Die Anordnung der Kacheln und Verzeichnisse ist so konzipiert, dass
25+
die Anzahl der Anfragen beim Verschieben und Zoomen minimiert wird.
26+
27+
PMTiles ist jedoch ein schreibgeschütztes Format: Es ist nicht möglich, einen
28+
Teil des Archivs zu aktualisieren, ohne die gesamte Datei neu zu schreiben. Wenn
29+
ihr transaktionale Aktualisierungen benötigt, solltet ihr eine Datenbank wie
30+
SQLite oder :doc:`postgresql/postgis/index` und `ST_asMVT
31+
<https://postgis.net/docs/ST_AsMVT.html>`_ verwenden.
32+
33+
.. seealso::
34+
* `GitHub Repository <https://github.com/protomaps/PMTiles>`_
35+
* `PMTiles Version 3 Specification
36+
<https://github.com/protomaps/PMTiles/blob/main/spec/v3/spec.md>`_
37+
* `pmtiles Python package
38+
<https://github.com/protomaps/PMTiles/tree/main/python/pmtiles>`_
39+
40+
Mapbox Vector Tiles (MVT)
41+
~~~~~~~~~~~~~~~~~~~~~~~~~
42+
43+
Das `Mapbox Vector Tiles
44+
<https://docs.mapbox.com/data/tilesets/guides/vector-tiles-standards/>`_-Dateiformat
45+
speichert jede Kachel in einem Verzeichnisbaum wie :file:`/Z/X/Y.mvt`. Dies
46+
funktioniert gut für kleine Kachelsätze, aber das Aktualisieren einer kompletten
47+
globalen Pyramide mit ~300 Millionen Kacheln ist sehr ineffizient.
48+
:ref:`pmtiles` ist dagegen eine einzige Datei, in deren Kacheln de-dupliziert
49+
sind, wodurch die Größe globaler Vektor-Basiskarten um ~70% reduziert werden.
50+
51+
Zum Schreiben muss die :ref:`gdal`-Bibliothek mit `SQLite
52+
<https://www.sqlite.org>`_ und `GEOS <https://libgeos.org>`_-Unterstützung
53+
installiert sein. Dabei werden die Mapbox Vector Tiles in SQLite wie
54+
:ref:`mbtiles` gespeichert und können mit dem MBTiles-Treiber verarbeitet
55+
werden.
56+
57+
.. seealso::
58+
* `Mapbox Vector Tile specification
59+
<https://github.com/mapbox/vector-tile-spec>`_
60+
* `MVT: Mapbox Vector Tiles
61+
<https://gdal.org/en/stable/drivers/vector/mvt.html>`_
62+
63+
.. _mbtiles:
64+
65+
MBTiles
66+
~~~~~~~
67+
68+
`MBTiles <https://docs.mapbox.com/help/glossary/mbtiles/>`_ ist ein
69+
Containerformat für Kacheldaten auf der Grundlage von SQLite. Es ist für den
70+
lokalen Zugriff optimiert, nicht wie :ref:`pmtiles` auf den Zugriff via HTTP.
71+
72+
.. seealso::
73+
* `MBTiles specification <https://github.com/mapbox/mbtiles-spec>`_
74+
875
.. _geodata-repositories:
976

77+
Cloud Optimized GeoTIFF (COG)
78+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79+
80+
`Cloud Optimized GeoTIFF <https://cogeo.org>`_ ist eine Raster-TIFF-Datei, die
81+
ähnlich wie :ref:`pmtiles` für das Lesen aus einem Cloud-Speicher optimiert ist.
82+
:ref:`pmtiles` kann jedoch auch andere Kacheldaten, :abbr:`z.B. (zum Beispiel)`
83+
Vektor-Kacheln ausliefern. COG ist jedoch mit den meisten GIS-Programmen, die
84+
mit GeoTIFF arbeiten, abwärtskompatibel.
85+
86+
.. seealso::
87+
* `OGC Cloud Optimized GeoTIFF Standard
88+
<https://docs.ogc.org/is/21-026/21-026.html>`_
89+
90+
.. _geoparquet:
91+
92+
GeoParquet
93+
~~~~~~~~~~
94+
95+
`Parquet <https://parquet.apache.org>`_ ist ein quelloffenes,
96+
spaltenorientiertes Datendateiformat, das für die effiziente Speicherung und
97+
Abfrage von Daten entwickelt wurde. Es bietet effiziente
98+
Datenkomprimierungs- und -kodierungsverfahren mit optimierter Verarbeitung
99+
großer, komplexer Daten. `GeoParquet <https://geoparquet.org>`_ erweitert
100+
Parquet um interoperable Geodatentypen (Punkt, Linie, Polygon).
101+
102+
* :doc:`pyviz:matplotlib/geopandas/index` unterstützt das `Lesen
103+
<https://geopandas.org/en/stable/docs/reference/api/geopandas.read_parquet.html>`_
104+
und `Schreiben
105+
<https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.to_parquet.html>`_
106+
von GeoParquet.
107+
* `GeoParquet Downloader Plugin
108+
<https://plugins.qgis.org/plugins/qgis_plugin_gpq_downloader/>`_ für `QGIS
109+
<https://qgis.org>`_ ermöglicht Streaming-Downloads von großen
110+
GeoParquet-Datensätzen.
111+
* `DuckDB <https://duckdb.org>`_ erlaubt mit der `Spatial Extension
112+
<https://duckdb.org/docs/stable/extensions/spatial/overview.html>`_ das Lesen
113+
und Schreiben von GeoParquet-Dateien.
114+
115+
.. seealso::
116+
* `GeoParquet specification <https://github.com/opengeospatial/geoparquet>`_
117+
* `GeoParquet Software <https://geoparquet.org/#implementations>`_
118+
* `validate_geoparquet.py
119+
<https://github.com/OSGeo/gdal/blob/master/swig/python/gdal-utils/osgeo_utils/samples/validate_geoparquet.py>`_
120+
10121
Daten-Repositorien
11122
------------------
12123

@@ -31,6 +142,8 @@ Software
31142
Lesen und Schreiben
32143
~~~~~~~~~~~~~~~~~~~
33144

145+
.. _gdal:
146+
34147
`Geospatial Data Abstraction Library (GDAL) <https://gdal.org/en/latest/>`_
35148
bietet eine einfache, aber leistungsfähige API zum Lesen und Schreiben von
36149
Hunderten von Datenformaten.
@@ -138,6 +251,8 @@ Lesen und Schreiben
138251
.. seealso::
139252
:ref:`geo-wrappers`
140253

254+
.. _remote-sensing:
255+
141256
Fernerkundung
142257
~~~~~~~~~~~~~
143258

0 commit comments

Comments
 (0)