Datenquellen
GeoParquet
GeoParquet speichert Vektordaten in einer komprimierten, spaltenorientierten Datei. map0 lädt die Datei, dekodiert sie im Browser und stellt sie wie GeoJSON dar. Die 4.522 Bäume unten belegen als GeoParquet 121 KB, als unkomprimiertes GeoJSON 2,6 MB.
Ausprobieren: Den Netzwerk-Tab öffnen und die Seite neu laden. Der Baumdatensatz des 1. Wiener Bezirks wird als einzelne Datei mit 121 KB geladen. Mit der Maus über einen Baum fahren zeigt die Baumart, ein Klick öffnet die Attribute. „Auf Ebene zoomen“ verwendet bei den Bezirksgrenzen die in den Metadaten gespeicherte Ausdehnung.
Konfiguration
Ein geoparquet-Layer verweist mit url auf eine Datei. Für Darstellung, Clustering, Popups und Hover gelten dieselben Optionen wie bei einem geojson-Layer.
{
"$schema": "https://map0.net/schema/v1.json",
"version": 1,
"meta": { "title": "GeoParquet" },
"map": { "center": [16.3695, 48.2095], "zoom": 14 },
"basemaps": [
{
"id": "grau",
"title": "Grey",
"type": "raster",
"url": "https://mapsneu.wien.gv.at/basemap/bmapgrau/normal/google3857/{z}/{y}/{x}.png",
"attribution": "© basemap.at",
"default": true
}
],
"layers": [
{
"id": "baumkataster",
"type": "geoparquet",
"title": "Tree cadastre, 1st district",
"url": "/data/vienna-trees-1010.parquet",
"style": {
"circle-color": "#15803d",
"circle-radius": 4.5,
"circle-stroke-color": "#ffffff",
"circle-stroke-width": 1
},
"hover": { "content": "{{GATTUNG_ART}}" },
"popup": {
"title": "{{GATTUNG_ART}}",
"fields": [
{ "key": "PFLANZJAHR_TXT", "label": "Planted" },
{ "key": "BAUMHOEHE_TXT", "label": "Height" },
{ "key": "STAMMUMFANG_TXT", "label": "Trunk circumference" },
{ "key": "KRONENDURCHMESSER_TXT", "label": "Crown diameter" },
{ "key": "OBJEKT_STRASSE", "label": "Location" }
]
},
"attribution": "Stadt Wien, data.wien.gv.at"
},
{
"id": "bezirksgrenzen",
"type": "geoparquet",
"title": "District boundaries",
"url": "/data/vienna-districts.parquet",
"style": {
"fill-color": "#7c3aed",
"fill-opacity": 0.04,
"line-color": "#7c3aed",
"line-width": 1.5
},
"popup": { "title": "{{NAMEK}}", "fields": [{ "key": "BEZNR", "label": "District no." }] },
"attribution": "Stadt Wien, data.wien.gv.at"
}
]
}Was diese Demo zeigt
urlverweist auf eine GeoParquet-Datei, die map0 vollständig im Browser lädt und dekodiert- Punkte und Polygone aus getrennten Dateien, mit vereinfachten Styles und MapLibre-Style-Layern
- Dieselben Optionen für Popups, Hover, Clustering und
promoteIdwie bei GeoJSON - „Auf Ebene zoomen“ liest die Ausdehnung aus den GeoParquet-Metadaten, statt Koordinaten zu scannen
- Der Decoder (hyparquet, ca. 22 KB) wird bei Bedarf geladen. Zusätzliche Codecs (ca. 76 KB) werden nur für andere Kompressionsverfahren als Snappy benötigt; auch unkomprimierte Dateien verarbeitet der Basisdecoder.
Für den Baumdatensatz dieser Seite ergeben sich 2,6 MB als unkomprimiertes GeoJSON, 215 KB als GeoJSON mit gzip und 121 KB als GeoParquet. Bei GeoParquet ist die Kompression Teil des Dateiformats. Die geringere Dateigröße gilt daher auch auf statischem Speicher ohne HTTP-Kompression.
crs angegeben werden. Die Datei wird vollständig geladen und dekodiert. Ladezeit und Speicherbedarf hängen deshalb von der Dateigröße und der Komplexität der Geometrien ab. Bei großen Datensätzen ermöglichen Vektorkacheln wie PMTiles das Laden passend zum Kartenausschnitt.GeoParquet erzeugen
GDAL mit Parquet-Unterstützung und DuckDB mit der Spatial-Erweiterung können GeoParquet-Dateien erzeugen. Die folgenden Beispiele schreiben auch die von map0 benötigten Geometrie-Metadaten. Eine vorherige Umrechnung nach WGS84 ist optional, wenn map0 das Ausgangskoordinatensystem unterstützt:
ogr2ogr -f Parquet trees.parquet trees.gpkg -t_srs EPSG:4326
INSTALL spatial; LOAD spatial;
COPY (SELECT * FROM ST_Read('trees.geojson'))
TO 'trees.parquet' (FORMAT PARQUET, COMPRESSION SNAPPY);Die Dateien dieser Seite wurden mit DuckDB aus dem Open-Data-WFS der Stadt Wien erzeugt. Die Bezirksgrenzen wurden mit einer Toleranz von rund 20 m vereinfacht, um die Dateigröße zu reduzieren. map0 unterstützt Snappy, gzip, brotli, zstd und lz4. Dateien ohne geo-Metadaten werden abgelehnt.
Wann eignet sich GeoParquet?
GeoParquet eignet sich, um einen vollständigen Vektordatensatz als einzelne Datei auf einem Webserver oder Objektspeicher zu veröffentlichen. Gegenüber GeoJSON kann die Downloadgröße sinken; Geometrien und Attribute bleiben zusammen erhalten. Wenn die Datenverarbeitung bereits GeoParquet erzeugt, lässt sich diese Datei direkt verwenden. Für Datensätze, die zu groß zum vollständigen Laden sind, kommen Vektorkacheln wie PMTiles infrage.