ČÚZK spatial data
These datasets contain buildings, cadastral plots, and administrative boundaries published by the Czech Office for Surveying, Mapping and Cadastre (ČÚZK).
Sources
The INSPIRE GML archives and the RÚIAN SHP archive use EPSG:5514. The pipelines convert their geometries to EPSG:4326.
Storage
Data is stored in the geoczechia bucket. Each snapshot is identified by its UTC download date:
geoczechia/
└── cuzk/
├── raw/
│ ├── buildings/
│ │ └── <download-date>/*.zip
│ ├── plots/
│ │ └── <download-date>/*.zip
│ └── administrative_boundaries/
│ └── <download-date>/1.zip
├── intermediate/
│ ├── buildings/
│ │ └── <download-date>/*.parquet
│ ├── plots/
│ │ └── <download-date>/*.parquet
│ └── administrative_boundaries/
│ └── <download-date>/*.parquet
└── visualization/
├── buildings/
│ └── <download-date>/buildings.pmtiles
└── plots/
└── <download-date>/plots.pmtiles
The corresponding full S3 paths are:
s3://geoczechia/cuzk/raw/buildings/<download-date>/*.zip
s3://geoczechia/cuzk/raw/plots/<download-date>/*.zip
s3://geoczechia/cuzk/raw/administrative_boundaries/<download-date>/1.zip
s3://geoczechia/cuzk/intermediate/buildings/<download-date>/*.parquet
s3://geoczechia/cuzk/intermediate/plots/<download-date>/*.parquet
s3://geoczechia/cuzk/intermediate/administrative_boundaries/<download-date>/*.parquet
s3://geoczechia/cuzk/visualization/buildings/<download-date>/buildings.pmtiles
s3://geoczechia/cuzk/visualization/plots/<download-date>/plots.pmtiles
What is stored
| S3 location | Stored data |
|---|---|
cuzk/raw/buildings/<date>/*.zip |
Original ČÚZK INSPIRE Buildings ZIP archives, stored byte-for-byte without extraction. Their GML uses EPSG:5514 and retains the complete source content. |
cuzk/raw/plots/<date>/*.zip |
Original ČÚZK INSPIRE Cadastral Parcels ZIP archives, stored byte-for-byte without extraction. Their GML uses EPSG:5514 and retains the complete source content. |
cuzk/raw/administrative_boundaries/<date>/1.zip |
Original whole-country RÚIAN SHP archive, stored unchanged. It contains all administrative and territorial layers in EPSG:5514. |
cuzk/intermediate/buildings/<date>/*.parquet |
One derived GeoParquet file for each raw building GML file. Geometries are converted to EPSG:4326. Normal GML fields remain typed and additional nested XML values and attributes are flattened into xml__... columns. |
cuzk/intermediate/plots/<date>/*.parquet |
One derived GeoParquet file for each raw plot GML file, with EPSG:4326 geometry and flattened nested XML properties. |
cuzk/intermediate/administrative_boundaries/<date>/*.parquet |
Twelve EPSG:4326 GeoParquet layers: state, cohesion regions, regions, districts, ORP, POU, municipalities, cadastral units, election districts, building-office areas, cadastral-workplace areas, and basic settlement units. |
cuzk/visualization/buildings/<date>/buildings.pmtiles |
One PMTiles archive containing coalesced buildings_overview coverage at zooms 0–13 and detailed buildings footprints at zooms 14–17. |
cuzk/visualization/plots/<date>/plots.pmtiles |
One PMTiles archive containing generalized CadastralZoning coverage in plots_overview at zooms 0–13 and individual CadastralParcel geometry in plots at zooms 14–17. Zoning polygons are simplified and coalesced rather than dropped, preserving mutually disjoint land coverage. |
The raw ZIP archives are the authoritative source data. The converter also accepts legacy raw .xml and .gml objects already present in S3. All three storage layers are declared in the Kedro catalog, which performs the Hetzner S3 reads and writes through s3fs. Pipeline nodes do not construct an S3 client or handle bucket paths.
Kedro catalog
| Catalog dataset | Pipeline role | Format |
|---|---|---|
cuzk_raw_buildings |
Raw buildings input/output | Partitioned ZIP; legacy XML/GML readable |
cuzk_raw_plots |
Raw plots input/output | Partitioned ZIP; legacy XML/GML readable |
cuzk_raw_administrative_boundaries |
Raw whole-country RÚIAN input/output | Partitioned ZIP |
cuzk_buildings |
Converted buildings input/output | Partitioned GeoParquet |
cuzk_plots |
Converted plots input/output | Partitioned GeoParquet |
cuzk_administrative_boundaries |
Conversion output containing all boundary layers | Partitioned GeoParquet |
cuzk_states, cuzk_cohesion_regions, cuzk_regions, cuzk_districts |
Individually loadable boundary layers | Date-partitioned GeoParquet |
cuzk_orp, cuzk_pou, cuzk_municipalities, cuzk_cadastral_units |
Individually loadable local administrative layers | Date-partitioned GeoParquet |
cuzk_election_districts, cuzk_building_office_areas, cuzk_cadastral_workplace_areas, cuzk_basic_settlement_units |
Individually loadable specialist territorial layers | Date-partitioned GeoParquet |
cuzk_buildings_pmtiles |
Tiled buildings output | PMTiles |
cuzk_plots_pmtiles |
Tiled plots output | PMTiles |
For example, load the latest municipality snapshot in a Kedro notebook:
municipality_snapshots = catalog.load("cuzk_municipalities")
municipalities = municipality_snapshots[max(municipality_snapshots)]()All S3 entries use the shared hetzner_s3 credentials from conf/local/credentials.yml. Their values come from .env:
HETZNER_S3_BUCKET
HETZNER_S3_ENDPOINT_URL
HETZNER_S3_REGION
HETZNER_S3_ACCESS_KEY
HETZNER_S3_SECRET_KEY
HETZNER_S3_ENDPOINT_URL must be a complete URL, for example https://fsn1.your-objectstorage.com.
Pipeline
The storage flow is:
ČÚZK ZIP archives
-> cuzk_raw_{buildings|plots}
-> cuzk_{buildings|plots}
-> cuzk_{buildings|plots}_pmtiles
Kedro evaluates raw and GeoParquet partitions lazily. The PMTiles stage processes bounded chunks into disk-backed GeoJSON sequences. Tippecanoe creates coalesced polygon overviews for zooms 0–13 and detailed geometry for zooms 14–17, then tile-join combines both layers into one PMTiles archive. The plot overview uses ČÚZK CadastralZoning polygons instead of millions of individual parcels and merges rather than drops them when necessary, preserving mutually disjoint coverage. Detailed plot tiles contain only CadastralParcel; redundant CadastralBoundary rows are excluded. Nested xml__* fields and large text fields are excluded from the tiles.
Download the original raw ZIP snapshots:
kedro run --pipelines cuzk_buildings
kedro run --pipelines cuzk_plots
kedro run --pipelines cuzk_administrative_boundariesRun a small real download of 10 files per dataset:
kedro run --pipelines cuzk_buildings --params="cuzk.limit_per_source=10"
kedro run --pipelines cuzk_plots --params="cuzk.limit_per_source=10"Preview discovery without downloading or uploading:
kedro run --pipelines cuzk_buildings \
--params="cuzk.limit_per_source=10,cuzk.dry_run=true"
kedro run --pipelines cuzk_plots \
--params="cuzk.limit_per_source=10,cuzk.dry_run=true"Rebuild GeoParquet from the latest raw snapshot:
kedro run --pipelines cuzk_buildings_to_parquet
kedro run --pipelines cuzk_plots_to_parquet
kedro run --pipelines cuzk_administrative_boundaries_to_parquetConvert a specific download snapshot:
kedro run --pipelines cuzk_buildings_to_parquet \
--params="cuzk.snapshot_date=2026-07-14"Install Tippecanoe on macOS:
brew install tippecanoeBuild the PMTiles visualization files:
kedro run --pipelines cuzk_buildings_to_pmtiles
kedro run --pipelines cuzk_plots_to_pmtilesThe conversion and PMTiles stages can place their temporary XML, GeoJSON sequences, Tippecanoe working files, and intermediate PMTiles archives on an external disk. Configure an existing writable directory in conf/base/parameters_cuzk.yml:
cuzk:
scratch_dir: /Volumes/ExternalSSD/delficharge-scratchLeave the value empty to use the system temporary directory. A one-run override can be supplied with --params="cuzk.scratch_dir=/Volumes/ExternalSSD/delficharge-scratch".
To build a specific snapshot, add --params="cuzk.snapshot_date=YYYY-MM-DD". The output PMTiles files remain display-oriented derivatives; use the GeoParquet catalog datasets for analysis and complete attributes.