ruian-import
Python library for downloading and parsing ČÚZK (RÚIAN) registries: regions, districts, municipalities, and city districts (městské části / obvody), plus WGS84 boundary geometry for each level.
Installation
pip install ruian-import
# with coordinate support (S-JTSK -> WGS84):
pip install "ruian-import[coordinates]"
Usage
from ruian_import import fetch_regions, fetch_districts, fetch_municipalities
regions = fetch_regions() # list[Region]
districts = fetch_districts() # list[District]
municipalities = fetch_municipalities() # list[Municipality]
Data classes
@dataclass
class Region:
code: str # e.g. "19"
name: str # e.g. "Hlavní město Praha"
nuts_lau: str | None # e.g. "CZ010"
abolished: str | None # abolishment date "YYYY-MM-DD", or None if active
@dataclass
class District:
code: str
name: str
region_code: str
nuts_lau: str | None
abolished: str | None
@dataclass
class Municipality:
code: str # 6-digit municipality code, e.g. "554979"
name: str
district_code: str
lat: float | None # WGS84, only available with [coordinates]
lon: float | None
abolished: str | None
@dataclass
class CityDistrict: # městský obvod / městská část (MOMC)
code: str
name: str
municipality_code: str # parent obec (statutární město)
abolished: str | None
City districts (městské části / obvody)
Statutory cities and Prague are subdivided into MOMC units. They come from the ČÚZK ArcGIS layer (which carries a clean parent-obec link), not a CSV registry:
from ruian_import import fetch_city_districts
for cd in fetch_city_districts():
print(cd.code, cd.name, "->", cd.municipality_code)
Boundary geometry
Every administrative level exposes its full boundary (not just a centroid) as GeoJSON, keyed by RUIAN code, in WGS84 (lon/lat order):
from ruian_import import (
fetch_region_geometries,
fetch_district_geometries,
fetch_municipality_geometries,
fetch_city_district_geometries,
)
geoms = fetch_district_geometries() # {code: {"type": "Polygon"|"MultiPolygon", ...}}
outline = geoms["3207"] # okres Beroun
# custom simplification tolerance (degrees; default ~0.001 ≈ 110 m):
detailed = fetch_municipality_geometries(simplify=0.0002)
Geometry is downloaded from the ČÚZK ArcGIS REST API with server-side
Douglas-Peucker simplification and transparent pagination. Only active units
(platido IS NULL) are returned.
Abolished records have abolished set to a date string; active records have abolished = None.
Municipality coordinates
UI_OBEC.csv does not include coordinates. Use fetch_municipalities_with_coordinates() to make a second request to the ČÚZK ArcGIS REST API and return polygon centroids (accuracy ~100 m, one HTTP request for all municipalities):
from ruian_import import fetch_municipalities_with_coordinates
municipalities = fetch_municipalities_with_coordinates() # lat/lon populated
Or fetch coordinates separately:
from ruian_import import fetch_municipality_coordinates
coords = fetch_municipality_coordinates() # dict[str, tuple[float, float]] - code -> (lat, lon)
Custom URL / local files
from ruian_import._parse import parse_municipalities
data = Path("UI_OBEC.zip").read_bytes()
municipalities = parse_municipalities(data)
Data sources
ČÚZK registries are updated daily:
- Regions:
https://services.cuzk.cz/sestavy/cis/UI_VUSC.zip - Districts:
https://services.cuzk.cz/sestavy/cis/UI_OKRES.zip - Municipalities:
https://services.cuzk.cz/sestavy/cis/UI_OBEC.zip
License
MIT
Metadata
Release files for ruian-import 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ruian_import-0.3.0.tar.gz | 101.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ruian_import-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 111.9 kB
Release files / ruian_import-0.3.0.tar.gz
| Download URL | ruian_import-0.3.0.tar.gz |
|---|---|
| Size | 101.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b139f53d1d74a05e9af0343c5b5db40f06b846176c2eaccb4f5d35505ff418aa
|
|
BLAKE2b-256 checksum How to use checksums |
faa0fced624008c05b88144e21ca92d359486fccab756f84190933e5db9e48e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / ruian_import-0.3.0-py3-none-any.whl
| Download URL | ruian_import-0.3.0-py3-none-any.whl |
|---|---|
| Size | 10.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59538bcfbf4414fd6bbba0bb03aa053a4c98d8d3728892837522f2d4d700f502
|
|
BLAKE2b-256 checksum How to use checksums |
76d8fd2e01fa72d0768b5b5011d2ed627d89b4ab6500fe169c2f13b428b3519e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|