ČÚ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_boundaries

Run 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_parquet

Convert a specific download snapshot:

kedro run --pipelines cuzk_buildings_to_parquet \
  --params="cuzk.snapshot_date=2026-07-14"

Install Tippecanoe on macOS:

brew install tippecanoe

Build the PMTiles visualization files:

kedro run --pipelines cuzk_buildings_to_pmtiles
kedro run --pipelines cuzk_plots_to_pmtiles

The 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-scratch

Leave 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.