RUIAN / GDAL

Z FreeGIS portál
Přejít na: navigace, hledání

Tato stránka se věnuje problematice podpory výměnného formátu RÚIAN (VFR) v knihovně GDAL. Knihovna GDAL podporuje výměnný formát RÚIAN (VFR) od verze 1.11. Kromě toho vznikla sada Python skriptů, která usnadňuje konverzi data VFR především do databáze PostGIS a Oracle včetně korektního zpracování změnových souborů.

Nástroje knihovny GDAL

Požadavkem je, aby byla knihovna GDAL zkompilována s podporou pro formát GML. To lze ověřit následujícím příkazem:

ogrinfo --formats
  -> "GML" (read/write)

Poznámka: Služba Veřejného dálkového přístupu poskytuje data komprimovaná algoritmem gzip. Knihovna GDAL umožňuje přistupovat ke komprimovaným datům přímo (xml.gz), jejich dekomprese tedy není nutná. Příklad: http://vdp.cuzk.cz/vymenny_format/soucasna/20140331_OB_564729_UKSH.xml.gz

Seznam vrstev získáme nástrojem ogrinfo, např.

ogrinfo 20140331_OB_564729_UKSH.xml.gz
1: Obce (Multi Point, Multi Polygon, Multi Polygon)
2: CastiObci (Point)
3: KatastralniUzemi (Multi Point, Multi Polygon, Multi Polygon)
4: Zsj (Multi Point, Multi Polygon)
5: Ulice (Multi Line String)
6: Parcely (Point, Polygon)
7: StavebniObjekty (Point, Multi Polygon)
8: AdresniMista (Point, Point, Point)

Poznámka: Vypisovány jsou i vrstvy, které neobsahující žádné prvky.

Informace o prvcích poskytuje opět nástroj ogrinfo, příklad pro 'Obce':

ogrinfo 20140331_OB_564729_UKSH.xml.gz Obce
Layer name: Obce
Geometry (DefinicniBod): Multi Point
Geometry (OriginalniHranice): Multi Polygon
Geometry (GeneralizovaneHranice): Multi Polygon
Feature Count: 1
Extent (DefinicniBod): (-773555.000000, -999234.000000) - (-773555.000000, -999234.000000)
Extent (OriginalniHranice): (-775622.390000, -1001081.930000) - (-770049.810000, -996485.770000)
...

Poznámka: Vrstva 'Obce' má definovány tři geometrie - DefinicniBod, OriginalniHranice, GeneralizovaneHranice. V tomto případě data obsahuje pouze DefinicniBod a OriginalniHranice (viz Extent).

Převod do jiných formátů umožňuje nástroj ogr2ogr. Řada vrstev obsahuje dva typy geometrií, např. MultiPoint and MultiPolygon (viz vrstva 'Obce'). Příklad převodu do geodatabáze PostGIS:

ogr2ogr -f PostgreSQL PG:dbname=vfr 20140331_OB_564729_UKSH.xml.gz

kde 'vfr' je název výstupní geodatabáze PostGIS.

Některé formáty umožňují uložit pouze jeden typ geometrie, v tomto případě musíme zvolit jaký to bude (buď MultiPoint anebo MultiPolygon). Příklad pro formát Esri Shapefile:

ogr2ogr -f "Esri Shapefile" -lco ENCODING=UTF-8 -sql "select Nazev,OriginalniHranice from Obce" obce.shp 20140331_OB_564729_UKSH.xml.gz

Příklady uživatelských Python skriptů pro práci s daty RÚIAN zde.

VFR konverzní skripty

Pro konverzi dat ve výměnném formátu RÚIAN (VFR) lze využít sadu skriptů napsaných v jazyce Python (verze 2).

Tyto skripty jsou dostupné na adrese: https://github.com/ctu-geoforall-lab/gdal-vfr

Skripty lze stáhnout ve formě ZIP souboru anebo přímo z Git repozitáře:

git clone git@github.com:ctu-geoforall-lab/gdal-vfr.git

V adresáři 'gdal-vfr' jsou k dispozici tři skripty:

  • vfr2ogr - univerzální skript pro konverzi dat VFR do libovolného knihovnou GDAL podporovaného formátu
  • vfr2pg - skript zaměřený na konverzi do geodatabáze PostGIS
  • vfr2oci - skript zaměřený na konverzi do geodatabáze Oracle Spatial

Přístup k datům

Skripty umožňují zpracovávat VFR soubory jak umistěné na disku, tak online z Veřejného dálkového přístupu. Lze zpracovat dávkově i více souborů najednou.

Jednotlivé VFR soubory
  • Cesta k souboru ve formátu VFR může být zadána pomocí parametru --file (v níže uvedeném případě předpokládáme, že v aktuálním adresáři existuje soubor s názvem '20140331_OB_564729_UKSH.xml.gz'):
vfr2ogr --file 20140331_OB_564729_UKSH.xml.gz
  • Anebo ve formě datumu (--date) a typu požadavku (-type), tj.:
vfr2ogr --date 20140331 --type OB_564729_UKSH
--------------------------------------------------------------------------------
Reading http://vdp.cuzk.cz/vymenny_format/soucasna/20140331_OB_564729_UKSH.xml.gz...
--------------------------------------------------------------------------------
V tomto případě skript čte příslušný soubor ve formátu VFR přímo ze služby Veřejného dálkového přístupu. Čtená VFR data nejsou na disku ukládána, ale čtena přímo přes HTTP protokol.
Pokud si přejete načtená data přes HTTP protokol, uložit na lokální disk do aktuálního adresáře, použijte přepínač -d.
vfr2ogr --date 20140331 --type OB_564729_UKSH -d
--------------------------------------------------------------------------------
Downloading http://vdp.cuzk.cz/vymenny_format/soucasna/20140331_OB_564729_UKSH.xml.gz into currect directory...
--------------------------------------------------------------------------------
  • Parametr --data lze vynechat, potom skript stáhne soubor ve formátu VFR k poslednímu datu předchozího měsíce (tj. nejaktuálnější úplnou kopii, kterou VDP nabízí), např.
vfr2ogr --type OB_564729_UKSH
--------------------------------------------------------------------------------
Reading http://vdp.cuzk.cz/vymenny_format/soucasna/20140430_OB_564729_UKSH.xml.gz...
--------------------------------------------------------------------------------
Seznam VFR souborů

Soubor předaný pomocí parametru --file může být kromě samotného VFR souboru (viz výše) i textový soubor obsahující seznam VFR souborů. Tento seznam může být uveden ve třech formátech:

1. jako URL
http://vdp.cuzk.cz/vymenny_format/soucasna/20140430_OB_500011_UKSH.xml.gz
http://vdp.cuzk.cz/vymenny_format/soucasna/20140430_OB_500020_UKSH.xml.gz
http://vdp.cuzk.cz/vymenny_format/soucasna/20140430_OB_500046_UKSH.xml.gz
2. jako název souboru
20140430_OB_500011_UKSH.xml.gz
20140430_OB_500020_UKSH.xml.gz
20140430_OB_500046_UKSH.xml.gz
3. jako typ souboru, konverzní skripty si potom stáhnou data z VDP k nejbližšímu datumu (jiné datum lze vynutit přepínačem --date)
OB_500011_UKSH.xml.gz
OB_500020_UKSH.xml.gz
OB_500046_UKSH.xml.gz

Poznámka: Ve všech výše uvedených příkladech lze vynechat příponu .xml.gz. Prázdné řádky či řádky začínající znakem # budou ignorovány.

Příkazy vfr2ogr, vfr2pg či vfr2oci načtou VFR soubory uvedené v tomto souboru postupně.

vfr2pg --file seznam.txt --dbname vfr

Pokud skript najde daný VFR soubor v aktuálním adresáři, tak jej použije:

--------------------------------------------------------------------------------
Processing 20140731_ST_UKSH.xml.gz (1 out of 3)...
--------------------------------------------------------------------------------

V opačném případě stáhne soubor z VDP:

--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140731_ST_ZKSH.xml.gz (1 out of 3)...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3 VFR files will be processed...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Processing 1 out of 3...
--------------------------------------------------------------------------------
Processing layer Obce                 ...  1     features
Processing layer CastiObci            ...  1     features
Processing layer KatastralniUzemi     ...  1     features
Processing layer Zsj                  ...  2     features
Processing layer Ulice                ...  18    features
Processing layer Parcely              ...  6214  features
Processing layer StavebniObjekty      ...  874   features
Processing layer AdresniMista         ...  732   features
--------------------------------------------------------------------------------
Time elapsed: 5 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Processing 2 out of 3...
--------------------------------------------------------------------------------
Processing layer Obce                 ...  1     features
Processing layer CastiObci            ...  2     features
Processing layer KatastralniUzemi     ...  1     features
Processing layer Zsj                  ...  2     features
Processing layer Ulice                ...  0     features
Processing layer Parcely              ...  2691  features
Processing layer StavebniObjekty      ...  536   features
Processing layer AdresniMista         ...  373   features
--------------------------------------------------------------------------------
Time elapsed: 2 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Processing 3 out of 3...
--------------------------------------------------------------------------------
Processing layer Obce                 ...  1     features
Processing layer CastiObci            ...  1     features
Processing layer KatastralniUzemi     ...  1     features
Processing layer Zsj                  ...  1     features
Processing layer Ulice                ...  0     features
Processing layer Parcely              ...  4434  features
Processing layer StavebniObjekty      ...  693   features
Processing layer AdresniMista         ...  529   features
--------------------------------------------------------------------------------
Time elapsed: 3 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Summary
--------------------------------------------------------------------------------
Layer          Obce                 ... 3     features
Layer          CastiObci            ... 4     features
Layer          KatastralniUzemi     ... 3     features
Layer          Zsj                  ... 5     features
Layer          Ulice                ... 18    features
Layer          Parcely              ... 13339 features
Layer          StavebniObjekty      ... 2103  features
Layer          AdresniMista         ... 1634  features
--------------------------------------------------------------------------------
Time elapsed: 14 sec
--------------------------------------------------------------------------------

Prvky jsou postupně přídávany do stejné tabulky, např. celkový počet parcel (13339) je složen z prvků ze tří souborů (6214+2691+4434). Skript vfr2pg (export do PostGIS) umožňuje definovat pro každý soubor vlastní schéma, poté jsou prvky z jednotlivých VFR souborů exportovány do separátních tabulek.

Základní informace

Skripty vyžadují alespoň jeden parametr a to cestu ke vstupní souboru ve formátu VFR (--file anebo --date a --type). Pokud nenásledují další parametry, skript vypíše informace o dostupných vrstvách a počtu prvků:

vfr2ogr --file 20140331_OB_564729_UKSH.xml.gz
Number of features in Obce                : 1
Number of features in CastiObci           : 4
Number of features in KatastralniUzemi    : 4
Number of features in Zsj                 : 4
Number of features in Ulice               : 0
Number of features in Parcely             : 3172
Number of features in StavebniObjekty     : 310
Number of features in AdresniMista        : 221

Přepínač -e vytiskne rozšířenou statistiku (podporován je pouze s volbou --file:

vfr2ogr --file 20140331_OB_564729_UKSH.xml.gz -e
--------------------------------------------------------------------------------
Number of features in Obce                : 1
                             DefinicniBod : 1
                        OriginalniHranice : 1
                    GeneralizovaneHranice : 0
--------------------------------------------------------------------------------
Number of features in CastiObci           : 4
                             DefinicniBod : 4
--------------------------------------------------------------------------------
Number of features in KatastralniUzemi    : 4
                             DefinicniBod : 4
                        OriginalniHranice : 4
                    GeneralizovaneHranice : 0
--------------------------------------------------------------------------------
Number of features in Zsj                 : 4
                             DefinicniBod : 4
                        OriginalniHranice : 4
--------------------------------------------------------------------------------
Number of features in Ulice               : 0
                            DefinicniCara : 0
--------------------------------------------------------------------------------
Number of features in Parcely             : 3172
                             DefinicniBod : 3172
                        OriginalniHranice : 3172
--------------------------------------------------------------------------------
Number of features in StavebniObjekty     : 310
                             DefinicniBod : 220
                        OriginalniHranice : 298
--------------------------------------------------------------------------------
Number of features in AdresniMista        : 221
                               AdresniBod : 212
                                Zachranka : 0
                                   Hasici : 0
--------------------------------------------------------------------------------
Comparing OGR layers and input XML file (may take some time)...
--------------------------------------------------------------------------------
+ Ulice

Skript vfr2ogr navíc umožňuje pomocí přepínače -f vytisknout seznam podporovaných formátů, do kterých lze zapisovat:

vfr2ogr -f
...
ESRI Shapefile
...
PostgreSQL
...
SQLite

Syntax příkazu vytiskne přepínač --help:

vfr2ogr -h
Converts VFR file into desired GIS format supported by OGR library.

Requires GDAL/OGR library version 1.11 or later.

One of input options must be given:
       --file
       --date and --type

Usage: vfr2ogr [-f] [-o] [--file=/path/to/vfr/filename] [--date=YYYYMMDD] [--type=ST_ABCD|OB_000000_ABCD] [--layer=layer1,layer2,...]
                         [--format=<output format>] [--dsn=<OGR datasource>]

       -f         List supported output formats
       -o         Overwrite existing files
       -e         Extended layer list statistics 
       -d         Save downloaded VFR data in currect directory (--date and --type required)
       --file     Path to xml.gz or URL list file
       --date     Date in format 'YYYYMMDD'
       --type     Type of request in format XY_ABCD, eg. 'ST_UKSH' or 'OB_000000_ABCD'
       --layer    Import only selected layers separated by comma (if not given all layers are processed)
       --format   Output format
       --dsn      Output OGR datasource

Konverze dat

Skript vfr2ogr umožňuje konverzi dat VFR do libovolného formátu podporovaného knihovnou OGR v režimu zápisu (viz přepínač -f).

Příklad konverze do SpatialLite
vfr2ogr --file 20140331_OB_564729_UKSH.xml.gz --format 'SQLite' --dsn vfr.db

V tomto případě se v aktuálním adresáři vytvoří databáze s názvem 'vfr.db'.

Příklad konverze do PostGIS
vfr2ogr --date 20140331 --type OB_564729_UKSH --format 'PostgreSQL' --dsn PG:dbname=vfr

Poznámka: Pro konverzi dat do geodatabáze PostGIS můžete použít skript vfr2pg (viz níže).

Konverze do Esri Shapefile

Formát Esri Shapefile umožnuje uložit do souboru pouze jeden typ geometrie. Musíme tedy zvolit jakou geometrii chcete vyexportovat (DefinicniBod, OriginalniHranici, ...). Dále je potřeba definovat, jaká VFR vrstva se má do výstupního souboru naimportovat.

  • Vytvoření souboru s originálními hranicemi okresu
vfr2ogr --type ST_UKSH --format Esri_Shapefile --layer Okresy --geom OriginalniHranice --dsn .

V tomto případě se v aktuálním adresáři vytvoří soubor ve formátu Esri Shapefile s názvem okresy.shp.

Konverze do SpatiaLite

Při konverzi do formátu SpatiaLite zvolíme preferovanou geometrii.

vfr2ogr --file 20160331_OB_564567_UKSH.xml.gz --format SQLite --dsn ruian.db --geom OriginalniHranice
Konverze do PostGIS

Skript vfr2pg vychází ze stejného základu jako vfr2ogr a je určen výhradně pro konverzi dat VFR do geodatabáze PostGIS. Např.

vfr2pg --file 20140331_OB_564729_UKSH.xml.gz --dbname vfr

V tomto případě se data uloží do databáze s názvem 'vfr'. Výsledek importu si můžeme ověřit přímo z konzole PostgreSQL.

select f_table_name,f_geometry_column,type from geometry_columns;
   f_table_name   | f_geometry_column |     type     
------------------+-------------------+--------------
 obce             | definicnibod      | MULTIPOINT
 obce             | originalnihranice | MULTIPOLYGON
 castiobci        | definicnibod      | POINT
 katastralniuzemi | definicnibod      | MULTIPOINT
 katastralniuzemi | originalnihranice | MULTIPOLYGON
 zsj              | definicnibod      | MULTIPOINT
 zsj              | originalnihranice | MULTIPOLYGON
 ulice            | definicnibod      | MULTIPOINT
 parcely          | definicnibod      | POINT
 stavebniobjekty  | definicnibod      | POINT
 adresnimista     | definicnibod      | POINT
select nazev,round(st_area(originalnihranice)/1e3) as vymera_km2 from obce;
  nazev  | vymera_km2 
---------+------------
 Děčany |      12373

Informace o dalších volbách poskytne přepínač --help:

vfr2pg -h
Imports VFR data to PostGIS database

Requires GDAL/OGR library version 1.11 or later.

One of input options must be given:
       --file
       --date and --type

Usage: vfr2py [-f] [-o] [--file=/path/to/vfr/filename] [--date=YYYYMMDD] [--type=ST_ABCD|OB_000000_ABCD] [--layer=layer1,layer2,...]  [--geom=OriginalniHranice|GeneralizovaneHranice]
                         --dbname <database name>
                         [--schema <schema name>] [--user <user name>] [--passwd <password>] [--host <host name>]
                            

       -o         Overwrite existing PostGIS tables
       -e         Extended layer list statistics
       -d         Save downloaded VFR data in currect directory (--date and --type required)
       -s         Create new schema for each VFR file
       --file     Path to xml.gz or URL list file
       --date     Date in format 'YYYYMMDD'
       --type     Type of request in format XY_ABCD, eg. 'ST_UKSH' or 'OB_000000_ABCD'
       --layer    Import only selected layers separated by comma (if not given all layers are processed)
       --geom     Preferred geometry column 'OriginalniHranice' or 'GeneralizovaneHranice' (if not found or given than first column is used)
       --dbname   Output PostGIS database
       --schema   Schema name (default: public)
       --user     User name
       --passwd   Password
       --host     Host name
Výstupní schéma

Výchozí schéma pro vytvožené tabulky je 'public', toto nastavení lze změnit pomocí volby --schema, např.

 vfr2pg --date 20140331 --type OB_564729_UKSH --dbname vfr --schema vfr_data

Poznámka: Pokud toto schéma v databázi neexistuje, tak ho skript automaticky vytvoří. Výsledek můžeme zkontrolovat SQL příkazem:

select * from geometry_columns where f_table_schema = 'vfr_data';
 f_table_catalog | f_table_schema |   f_table_name   |   f_geometry_column   | coord_dimension | srid |      type       
-----------------+----------------+------------------+-----------------------+-----------------+------+-----------------
 vfr             | vfr_data       | obce             | definicnibod          |               2 | 5514 | MULTIPOINT
 vfr             | vfr_data       | obce             | originalnihranice     |               2 | 5514 | MULTIPOLYGON
 vfr             | vfr_data       | obce             | generalizovanehranice |               2 | 5514 | MULTIPOLYGON
 vfr             | vfr_data       | katastralniuzemi | definicnibod          |               2 | 5514 | MULTIPOINT
 vfr             | vfr_data       | katastralniuzemi | originalnihranice     |               2 | 5514 | MULTIPOLYGON
 vfr             | vfr_data       | katastralniuzemi | generalizovanehranice |               2 | 5514 | MULTIPOLYGON
 vfr             | vfr_data       | zsj              | definicnibod          |               2 | 5514 | MULTIPOINT
 vfr             | vfr_data       | zsj              | originalnihranice     |               2 | 5514 | MULTIPOLYGON
 vfr             | vfr_data       | castiobci        | definicnibod          |               2 | 5514 | POINT
 vfr             | vfr_data       | parcely          | definicnibod          |               2 | 5514 | POINT
 vfr             | vfr_data       | parcely          | originalnihranice     |               2 | 5514 | POLYGON
 vfr             | vfr_data       | ulice            | definicnicara         |               2 | 5514 | MULTILINESTRING
 vfr             | vfr_data       | stavebniobjekty  | definicnibod          |               2 | 5514 | POINT
 vfr             | vfr_data       | stavebniobjekty  | originalnihranice     |               2 | 5514 | MULTIPOLYGON
 vfr             | vfr_data       | adresnimista     | adresnibod            |               2 | 5514 | POINT
 vfr             | vfr_data       | adresnimista     | zachranka             |               2 | 5514 | POINT
 vfr             | vfr_data       | adresnimista     | hasici                |               2 | 5514 | POINT

Další možností je nastavit vlastní schéma pro každný VFR soubor, to umožňuje volba -s. Název schématu je odvozen z názvu souboru. To je vhodné např. při čtení seznamu VFR souborů, kdy chceme prvky z VFR souborů umístit do vlastních schémat, např.

vfr2pg --file seznam.txt --dbname vfr -s
select distinct f_table_schema,f_table_name from geometry_columns  order by f_table_schema;
 vfr_20140430_ob_500011_uksh | adresnimista
 vfr_20140430_ob_500011_uksh | castiobci
 vfr_20140430_ob_500011_uksh | katastralniuzemi
 vfr_20140430_ob_500011_uksh | obce
 vfr_20140430_ob_500011_uksh | parcely
 vfr_20140430_ob_500011_uksh | stavebniobjekty
 vfr_20140430_ob_500011_uksh | ulice
 vfr_20140430_ob_500011_uksh | zsj
 vfr_20140430_ob_500020_uksh | adresnimista
 vfr_20140430_ob_500020_uksh | castiobci
 vfr_20140430_ob_500020_uksh | katastralniuzemi
 vfr_20140430_ob_500020_uksh | obce
 vfr_20140430_ob_500020_uksh | parcely
 vfr_20140430_ob_500020_uksh | stavebniobjekty
 vfr_20140430_ob_500020_uksh | ulice
 vfr_20140430_ob_500020_uksh | zsj
 vfr_20140430_ob_500046_uksh | adresnimista
 vfr_20140430_ob_500046_uksh | castiobci
 vfr_20140430_ob_500046_uksh | katastralniuzemi
 vfr_20140430_ob_500046_uksh | obce
 vfr_20140430_ob_500046_uksh | parcely
 vfr_20140430_ob_500046_uksh | stavebniobjekty
 vfr_20140430_ob_500046_uksh | ulice
 vfr_20140430_ob_500046_uksh | zsj
Konverze do Oracle Spatial

Skript vfr2oci vychází ze stejného základu jako vfr2ogr a je určen výhradně pro konverzi dat VFR do geodatabáze Oracle Spatial. Knihovna OGR podporuje čtení a zápis do databáze Oracle Spatial díky ovladači OCI.

Poznámka: Příkaz vfr2oci bude fungovat pouze za předpokladu, že máte nainstalovánu databázi Oracle!

vfr2oci -h
Imports VFR data to Oracle Spatial database

Requires GDAL/OGR library version 1.11 or later.

One of input options must be given:
       --file
       --date and --type

Usage: vfr2oci [-f] [-o] [--file=/path/to/vfr/filename] [--date=YYYYMMDD] [--type=ST_ABCD|OB_000000_ABCD] [--layer=layer1,layer2,...] [--geom=OriginalniHranice|GeneralizovaneHranice]
                          --dbname <database name>
                         [--user <user name>] [--passwd <password>] [--host <host name>]

       -o         Overwrite existing Oracle tables
       -e         Extended layer list statistics 
       -d         Save downloaded VFR data in currect directory (--date and --type required)
       --file     Path to xml.gz file
       --date     Date in format 'YYYYMMDD'
       --type     Type of request in format XY_ABCD, eg. 'ST_UKSH' or 'OB_000000_ABCD'
       --layer    Import only selected layers separated by comma (if not given all layers are processed)
       --geom     Preferred geometry column 'OriginalniHranice' or 'GeneralizovaneHranice' (if not found or given than first column is used)
       --dbname   Output Oracle database
       --user     User name
       --passwd   Password
       --host     Host name

Upozornění: OGR OCI driver nepodporuje uložení více atributů s geometrii do jedné tabulky. To má za následek, že u vrstev, které mají definovánu vícenásobnou geometrii (např. DefinicniBod a OriginalniHranice) je zvolen automaticky první atribut geometrie, v tomto případě DefinicniBod. Parametr --geom umožňuje vynutit zvolený atribut s geometrií, např.

 vfr2oci --file 20140331_OB_564729_UKSH.xml.gz --user <user> --passwd <passwd> --layer Obce --geom OriginalniHranice
Známé problémy
  • OGR OCI driver končí chybou při sestavování prostorové indexu
vfr2oci --date 20140331 --type OB_564729_UKSH --user <user> --passwd <passwd> --layer Obce --o
Processing layer Obce                 ...  1     features
ERROR 1: ORA-00955: name is already used by an existing object
 in CREATE INDEX "OBCE_IDX" ON OBCE("ORA_GEOMETRY") INDEXTYPE IS MDSYS.SPATIAL_INDEX
  • OGR OCI nepodporuje datový typ IntegerList, tato data jsou exportována jako VARCHAR
Warning 6: Can't create field BonitovanyDilVymera with type IntegerList on Oracle layers.  Creating as VARCHAR.
  • Oracle má limit na délku názvu atributu - ORA-00972
ERROR 1: ORA-00972: identifier is too long
 in ALTER TABLE PARCELY ADD "BonitovanyDilBonitovanaJednotkaKod" VARCHAR2(2047)
Poznámky ke geometrii

Většina GIS formátů umožňuje uložit pouze jeden typ geometrie (např. Esri Shapefile). Jiné formáty umožňují uložit více atributů geometrie najednou, ale současně není tato vlastnost podporována knihovnou OGR (např. SQLite/SpatiaLite, Oracle či MSSQL). V tomto případě konverzní skripty vezmou v potaz pouze první atribut s geometrií (tj. DefinicniBod, DefinicniCara či AdresniBod). Příklad pro SQLite/SpatiaLite:

vfr2ogr --type OB_500011_UKSH --format SQLite --dsn vfr.db
...
WARNING: Driver 'SQLite' doesn't support multiple geometry columns. Only first will be used.
...
select f_table_name,geometry_type from geometry_columns;
adresnimista      1 # adresnibod    
castiobci         1 # definicnibod           
katastralniuzemi  4 # definicnibod           
obce              4 # definicnibod            
parcely           1 # definicnibod            
stavebniobjety    1 # definicnibod            
ulice             5 # definicnicara           
zsj               4 # definicnibod 

Pomocí volby --geom můžete vynutit jiný atribut geometrie, např. OriginalniHranice. U vrstev, kde není tento atribut dostupný (např. 'adresnimista') je použit opět první atribut s geometrií (v tomto případě AdresniBod).

vfr2ogr --type OB_500011_UKSH --format SQLite --dsn vfr.db --geom OriginalniHranice
adresnimista      1 # adresnibod
castiobci         1 # definicnibod           
katastralniuzemi  6 # originalnihranice           
obce              6 # originalnihranice                      
parcely           3 # originalnihranice                      
stavebniobjekty   6 # originalnihranice                      
ulice             5 # definicnicara           
zsj               6 # originalnihranice           

Poznámka:

  • 1 ... Point
  • 3 ... Polygon
  • 4 ... MultiPoint
  • 5 ... MultiLineString
  • 6 ... MultiPolygon

Typické příklady využití

Oracle Spatial

Příklady jsou psány pro databázi Oracle 11g Express & Oracle SQL Developer (vfr2oci), v případě ostatních formátů zaměňte za příkaz vfr2ogr či vfr2pg (databáze PostGIS).

Poznámka: Příkaz vfr2oci bude fungovat pouze za předpokladu, že máte nainstalovánu databázi Oracle!

Výpis vrstev
vfr2oci --file data\20140331_OB_564729_UKSH.xml.gz
Number of features in Obce                : 1
Number of features in CastiObci           : 4
Number of features in KatastralniUzemi    : 4
Number of features in Zsj                 : 4
Number of features in Ulice               : 0
Number of features in Parcely             : 3172
Number of features in StavebniObjekty     : 310
Number of features in AdresniMista        : 221
Podrobnější analýza VFR dat
vfr2oci --file data\20140331_OB_564729_UKSH.xml.gz -e
--------------------------------------------------------------------------------
Number of features in Obce                : 1
                             DefinicniBod : 1
                        OriginalniHranice : 1
                    GeneralizovaneHranice : 0
--------------------------------------------------------------------------------
Number of features in CastiObci           : 4
                             DefinicniBod : 4
--------------------------------------------------------------------------------
Number of features in KatastralniUzemi    : 4
                             DefinicniBod : 4
                        OriginalniHranice : 4
                    GeneralizovaneHranice : 0
--------------------------------------------------------------------------------
Number of features in Zsj                 : 4
                             DefinicniBod : 4
                        OriginalniHranice : 4
--------------------------------------------------------------------------------
Number of features in Ulice               : 0
                            DefinicniCara : 0
--------------------------------------------------------------------------------
Number of features in Parcely             : 3172
                             DefinicniBod : 3172
                        OriginalniHranice : 3172
--------------------------------------------------------------------------------
Number of features in StavebniObjekty     : 310
                             DefinicniBod : 220
                        OriginalniHranice : 298
--------------------------------------------------------------------------------
Number of features in AdresniMista        : 221
                               AdresniBod : 212
                                Zachranka : 0
                                   Hasici : 0
--------------------------------------------------------------------------------
Comparing OGR layers and input XML file (may take some time)...
--------------------------------------------------------------------------------
+ Ulice

Závěr: V tomto případě, neobsahuje vrstva "Ulice" žádné prvky.

Převod všech OGR vrstev (celého souboru VFR) do cílového formátu (v tomto případě databáze Oracle)
vfr2oci --file data\20140331_OB_564729_UKSH.xml.gz --user <user> --passwd <passwd>
Processing layer Obce                 ...  1     features
Processing layer CastiObci            ...  4     features
Processing layer KatastralniUzemi     ...  4     features
Processing layer Zsj                  ...  4     features
Processing layer Ulice                ...  0     features
Processing layer Parcely              ...  3172  features
Processing layer StavebniObjekty      ...  310   features
Processing layer AdresniMista         ...  221   features
--------------------------------------------------------------------------------
Time elapsed: 16 sec
--------------------------------------------------------------------------------
Převod vybrané OGR vrstvy do cílového formátu (v tomto případě databáze Oracle)
vfr2oci --file data\20140331_OB_564729_UKSH.xml.gz --user <user> --passwd <passwd> --layer Parcely
Processing layer Parcely              ...  3172  features
--------------------------------------------------------------------------------
Time elapsed: 11 sec
--------------------------------------------------------------------------------
Převod vybrané OGR vrstvy do cílového formátu (v tomto případě databáze Oracle) - omezení pouze na jeden atribut geometrie
vfr2oci --file data\20140331_OB_564729_UKSH.xml.gz --user <user> --passwd <passwd> --layer Obce --geom OriginalniHranice
Obce                 ...  1     features
-----------------------------------------------------------------
Time elapsed: 0 sec
-----------------------------------------------------------------
Dávkové zpracování obcí

Kódy obcí získáme z číselníku na stránkách ČÚZK. Pro vytvoření seznamu odkazů použijeme standardní unixové nástroje (pod Windows dostupné z MinGW).

Vstupní data:

KOD;NAZEV;STATUS_KOD;POU_KOD;OKRES_KOD;CLENENI_SM_ROZSAH_KOD;CLENENI_SM_TYP_KOD;PLATI_OD;PLATI_DO
554979;Abertamy;3;1121;3403;;;14.12.2012 00:00:00;
531367;Adamov;2;221;3205;;;15.11.2013 00:00:00;
...

Příkaz pro vytvoření seznamu odkazů pro konverzní skripty:

# dekomprese na standardní výstup
zcat UI_OBEC.zip | \
# vybrat první položku
cut -d';' -f1 | \
# přeskočit první řádek (názvy položek)
sed 1d | \
# přeskočit prázdné řádky
sed '/^\s*$/d' | \
awk '{print "OB_"$1"_UKSH"}' > seznam_obce.txt

Výsledek (také umístěný na github.com):

OB_554979_UKSH
OB_531367_UKSH
OB_535826_UKSH
...

Export do geodatabáze PostGIS:

vfr2pg --file seznam_obce.txt --dbname vfr --o
--------------------------------------------------------------------------------
6253 VFR files will be processed...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140531_OB_554979_UKSH.xml.gz (1 out of 6253)...
--------------------------------------------------------------------------------
Processing layer Obce                 ...  1     features
Processing layer CastiObci            ...  2     features
Processing layer KatastralniUzemi     ...  2     features
Processing layer Zsj                  ...  2     features
Processing layer Ulice                ...  31    features
Processing layer Parcely              ...  2296  features
Processing layer StavebniObjekty      ...  673   features
Processing layer AdresniMista         ...  544   features
--------------------------------------------------------------------------------
Time elapsed: 1 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140531_OB_531367_UKSH.xml.gz (2 out of 6253)...
--------------------------------------------------------------------------------
...
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140531_OB_534510_UKSH.xml.gz (6253 out of 6253)...
--------------------------------------------------------------------------------
Processing layer Obce                 ...  1     features
Processing layer CastiObci            ...  10    features
Processing layer KatastralniUzemi     ...  5     features
Processing layer Zsj                  ...  8     features
Processing layer Ulice                ...  0     features
Processing layer Parcely              ...  4294  features
Processing layer StavebniObjekty      ...  518   features
Processing layer AdresniMista         ...  397   features
--------------------------------------------------------------------------------
Time elapsed: 11 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Summary
--------------------------------------------------------------------------------
Layer          Obce                 ... 6253  features
Layer          CastiObci            ... 15068 features
Layer          KatastralniUzemi     ... 13093 features
Layer          Zsj                  ... 22428 features
Layer          Ulice                ... 80836 features
Layer          Parcely              ... 21205837 features
Layer          StavebniObjekty      ... 4045410 features
Layer          AdresniMista         ... 5788860 features
--------------------------------------------------------------------------------
Time elapsed: 13:48:18.971162
--------------------------------------------------------------------------------

Poznámka: Při spuštění importu na serveru (předpokládejme OS GNU/Linux) je výhodné vzhledem k trvání importu spustit příkaz na pozadí např. pomocí nohup.

Vytvoření kompletní databáze

(Návod pro GNU/Linux)

  • Vytvoření cílové databáze s názvem vfr_uksh (pokud již databáze s tímto názvem existuje, tak bude nejprve odstraněna):
export DB=ruian ; createdb $DB || (dropdb $DB && createdb $DB) && psql $DB -c"create extension postgis"
  • Naplnění databáze (ST+OB) k poslednímu měsíci - originální hranice:
nohup ./vfr2pg --file test_suite/db_uksh.txt --dbname $DB &

Poznámka: pro generalizované hranice použijte --file test_suite/db_uksg.txt.

Kombinace příkazu nohup a & spustí příkaz na pozadí tak, že poběží i po odhlášení ze serveru.

(Návod pro MS Windows)

  • Naplnění databáze (ST+OB) k poslednímu měsíci - originální hranice:
set DB=ruian
vfr2pg --file bin\test_suite\db_uksh.txt --dbname %DB% --user postgres --o
Přepínač --o (--overwrite) přepíše databázové tabulky a existující záznamy z DB odstraní!
Standardní výstup bude přesměrován do souboru log.txt, chybový výstup do souboru log_err.txt.
Zpracování změnových souborů

Změny k určitému datu jsou poskytovány v rámci Veřejného dálkového přístupu ve čtyřech formách (viz přehled poskytovaných VFR souborů):

  • ST_ZZHZ (historické)
  • ST_ZZSZ (platné, základní)
  • ST_ZKSH (platné, základní + originální hranice)
  • ST_ZKSG (platné, základní + generalizované hranice)

Čtení změnových souborů (Zxxx) se neliší od uplných kopií (Uxxx), například zpracování změnového souboru k poslednímu dni:

vfr2ogr --type ST_ZKSH
--------------------------------------------------------------------------------
Reading http://vdp.cuzk.cz/vymenny_format/soucasna/20140714_ST_ZKSH.xml.gz...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140714_ST_ZKSH.xml.gz (1 out of 1)...
--------------------------------------------------------------------------------
Number of features in Staty               : 0
Number of features in RegionySoudrznosti  : 2
Number of features in Kraje               : 2
Number of features in Vusc                : 2
Number of features in Okresy              : 7
Number of features in Orp                 : 10
Number of features in Pou                 : 12
Number of features in Obce                : 36
Number of features in SpravniObvody       : 0
Number of features in Mop                 : 0
Number of features in Momc                : 0
Number of features in CastiObci           : 0
Number of features in KatastralniUzemi    : 64
Number of features in Zsj                 : 0
Number of features in Ulice               : 23
Number of features in Parcely             : 13226
Number of features in StavebniObjekty     : 1767
Number of features in AdresniMista        : 154
Number of features in ZaniklePrvky        : 1181
--------------------------------------------------------------------------------

Změny k danému dni získáme pomocí volby --date, např.

vfr2ogr --type ST_ZKSH --date 20140515
--------------------------------------------------------------------------------
Reading http://vdp.cuzk.cz/vymenny_format/soucasna/20140515_ST_ZKSH.xml.gz...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140515_ST_ZKSH.xml.gz (1 out of 1)...
--------------------------------------------------------------------------------
Number of features in Staty               : 1
Number of features in RegionySoudrznosti  : 1
Number of features in Kraje               : 1
Number of features in Vusc                : 3
Number of features in Okresy              : 9
Number of features in Orp                 : 13
Number of features in Pou                 : 18
Number of features in Obce                : 48
Number of features in SpravniObvody       : 0
Number of features in Mop                 : 0
Number of features in Momc                : 0
Number of features in CastiObci           : 0
Number of features in KatastralniUzemi    : 71
Number of features in Zsj                 : 0
Number of features in Ulice               : 264
Number of features in Parcely             : 16955
Number of features in StavebniObjekty     : 1394
Number of features in AdresniMista        : 177
Number of features in ZaniklePrvky        : 717
--------------------------------------------------------------------------------

Poznámka: Pokud nejsou k danému dni žádné změny k dispozici, soubor není na straně poskytovatele vygenerován. Potom konverzní skript skončí chybou:

vfr2ogr --type ST_ZKSH --date 20140705
--------------------------------------------------------------------------------
Reading http://vdp.cuzk.cz/vymenny_format/soucasna/20140705_ST_ZKSH.xml.gz...
--------------------------------------------------------------------------------
ERROR: Unable to read '/vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140705_ST_ZKSH.xml.gz'

Příklad zpracování změn ke dni 1.7.2014 (ZKSH):

vfr2pg --type ST_ZKSH --date 20140701 --dbname vfr
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140701_ST_ZKSH.xml.gz (1 out of 1)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Kraje                ...          2 features (    0 added,     2 updated,     0 deleted)
Processing layer Vusc                 ...          4 features (    0 added,     4 updated,     0 deleted)
Processing layer Okresy               ...          9 features (    0 added,     9 updated,     0 deleted)
Processing layer Orp                  ...         11 features (    0 added,    11 updated,     0 deleted)
Processing layer Pou                  ...         14 features (    0 added,    14 updated,     0 deleted)
Processing layer Obce                 ...         44 features (    0 added,    44 updated,     0 deleted)
Processing layer SpravniObvody        ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          2 features (    2 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...         66 features (    0 added,    66 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...         40 features (    0 added,    40 updated,     1 deleted)
Processing layer Parcely              ...      22917 features ( 5033 added, 17884 updated,   179 deleted)
Processing layer StavebniObjekty      ...       2914 features (   99 added,  2815 updated,    35 deleted)
Processing layer AdresniMista         ...        120 features (   70 added,    50 updated,    23 deleted)
--------------------------------------------------------------------------------
Time elapsed: 145 sec
--------------------------------------------------------------------------------
Dávkové zpracování změn

Skripty umožňují zpracovat změnové soubory za i daný interval. Syntax pro zadání datumu (--date) může mít celkem čtyři formy:

  • --date YYYYMMDD stáhne změnový soubor k danému dni
vfr2pg --type ST_ZKSH --date 20140709 --dbname vfr
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140709_ST_ZKSH.xml.gz (1 out of 1)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          1 features (    0 added,     1 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Kraje                ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Vusc                 ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Okresy               ...          8 features (    0 added,     8 updated,     0 deleted)
Processing layer Orp                  ...          6 features (    0 added,     6 updated,     0 deleted)
Processing layer Pou                  ...         11 features (    0 added,    11 updated,     0 deleted)
Processing layer Obce                 ...         47 features (    0 added,    47 updated,     0 deleted)
Processing layer SpravniObvody        ...          1 features (    1 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          1 features (    1 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          1 features (    1 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...         73 features (    0 added,    73 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...         45 features (    0 added,    45 updated,     1 deleted)
Processing layer Parcely              ...      21221 features ( 7193 added, 14028 updated,   121 deleted)
Processing layer StavebniObjekty      ...       2344 features (  160 added,  2184 updated,    91 deleted)
Processing layer AdresniMista         ...        226 features (  112 added,   114 updated,    78 deleted)
--------------------------------------------------------------------------------
Time elapsed: 131 sec
--------------------------------------------------------------------------------
  • --date YYYYMMDD: (ukončeno dvojtečkou) stáhne všechny změnové soubory od zadaného dne až po poslední soubor (tj. včerejší)
vfr2pg --type ST_ZKSH --date 20140701: --dbname vfr
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140701_ST_ZKSH.xml.gz (1 out of 23)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Kraje                ...          2 features (    0 added,     2 updated,     0 deleted)
Processing layer Vusc                 ...          4 features (    0 added,     4 updated,     0 deleted)
Processing layer Okresy               ...          9 features (    0 added,     9 updated,     0 deleted)
Processing layer Orp                  ...         11 features (    0 added,    11 updated,     0 deleted)
Processing layer Pou                  ...         14 features (    0 added,    14 updated,     0 deleted)
Processing layer Obce                 ...         44 features (    0 added,    44 updated,     0 deleted)
Processing layer SpravniObvody        ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          2 features (    2 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...         66 features (    0 added,    66 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...         40 features (    0 added,    40 updated,     1 deleted)
Processing layer Parcely              ...      22917 features ( 5033 added, 17884 updated,   179 deleted)
Processing layer StavebniObjekty      ...       2914 features (   99 added,  2815 updated,    35 deleted)
Processing layer AdresniMista         ...        120 features (   70 added,    50 updated,    23 deleted)
--------------------------------------------------------------------------------
Time elapsed: 144 sec
--------------------------------------------------------------------------------
...
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140723_ST_ZKSH.xml.gz (23 out of 23)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Kraje                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Vusc                 ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Okresy               ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Orp                  ...         10 features (    0 added,    10 updated,     0 deleted)
Processing layer Pou                  ...         13 features (    0 added,    13 updated,     0 deleted)
Processing layer Obce                 ...         41 features (    0 added,    41 updated,     0 deleted)
Processing layer SpravniObvody        ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...          1 features (    0 added,     1 updated,     0 deleted)
Processing layer Parcely              ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer StavebniObjekty      ...        212 features (  108 added,   104 updated,    87 deleted)
Processing layer AdresniMista         ...        134 features (   95 added,    39 updated,   123 deleted)
--------------------------------------------------------------------------------
Time elapsed: 11 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Summary
--------------------------------------------------------------------------------
Layer          Staty                ...          1 features
Layer          RegionySoudrznosti   ...          8 features
Layer          Kraje                ...          8 features
Layer          Vusc                 ...         14 features
Layer          Okresy               ...         77 features
Layer          Orp                  ...        206 features
Layer          Pou                  ...        394 features
Layer          Obce                 ...       6253 features
Layer          SpravniObvody        ...          2 features
Layer          Mop                  ...          2 features
Layer          Momc                 ...          7 features
Layer          CastiObci            ...      15070 features
Layer          KatastralniUzemi     ...      13098 features
Layer          Zsj                  ...      22428 features
Layer          Ulice                ...      80979 features
Layer          Parcely              ...   21295221 features
Layer          StavebniObjekty      ...    4046385 features
Layer          AdresniMista         ...    2895567 features
--------------------------------------------------------------------------------
Time elapsed: 0:20:10.842230
--------------------------------------------------------------------------------
  • --date :YYYYMMDD (započato dvojtečkou) stáhne všechny změnové soubory od prvního dne aktuálního měsíce až po zadaný den (včetně)
vfr2pg --type ST_ZKSH --date :20140707 --dbname vfr
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140701_ST_ZKSH.xml.gz (1 out of 7)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Kraje                ...          2 features (    0 added,     2 updated,     0 deleted)
Processing layer Vusc                 ...          4 features (    0 added,     4 updated,     0 deleted)
Processing layer Okresy               ...          9 features (    0 added,     9 updated,     0 deleted)
Processing layer Orp                  ...         11 features (    0 added,    11 updated,     0 deleted)
Processing layer Pou                  ...         14 features (    0 added,    14 updated,     0 deleted)
Processing layer Obce                 ...         44 features (    0 added,    44 updated,     0 deleted)
Processing layer SpravniObvody        ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          2 features (    2 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...         66 features (    0 added,    66 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...         40 features (    0 added,    40 updated,     1 deleted)
Processing layer Parcely              ...      22917 features ( 5033 added, 17884 updated,   179 deleted)
Processing layer StavebniObjekty      ...       2914 features (   99 added,  2815 updated,    35 deleted)
Processing layer AdresniMista         ...        120 features (   70 added,    50 updated,    23 deleted)
--------------------------------------------------------------------------------
Time elapsed: 145 sec
--------------------------------------------------------------------------------
...
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140707_ST_ZKSH.xml.gz (7 out of 7)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Kraje                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Vusc                 ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Okresy               ...          2 features (    0 added,     2 updated,     0 deleted)
Processing layer Orp                  ...          4 features (    0 added,     4 updated,     0 deleted)
Processing layer Pou                  ...         10 features (    0 added,    10 updated,     0 deleted)
Processing layer Obce                 ...         35 features (    0 added,    35 updated,     0 deleted)
Processing layer SpravniObvody        ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...         47 features (    0 added,    47 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...          3 features (    3 added,     0 updated,     0 deleted)
Processing layer Parcely              ...      14494 features ( 2304 added, 12190 updated,    41 deleted)
Processing layer StavebniObjekty      ...       1065 features (  127 added,   938 updated,    72 deleted)
Processing layer AdresniMista         ...        190 features (   96 added,    94 updated,    65 deleted)
--------------------------------------------------------------------------------
Time elapsed: 73 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Summary
--------------------------------------------------------------------------------
Layer          Staty                ...          1 features
Layer          RegionySoudrznosti   ...          8 features
Layer          Kraje                ...          8 features
Layer          Vusc                 ...         14 features
Layer          Okresy               ...         77 features
Layer          Orp                  ...        206 features
Layer          Pou                  ...        394 features
Layer          Obce                 ...       6253 features
Layer          SpravniObvody        ...          1 features
Layer          Mop                  ...          1 features
Layer          Momc                 ...          4 features
Layer          CastiObci            ...      15070 features
Layer          KatastralniUzemi     ...      13098 features
Layer          Zsj                  ...      22428 features
Layer          Ulice                ...      80949 features
Layer          Parcely              ...   21285980 features
Layer          StavebniObjekty      ...    4045861 features
Layer          AdresniMista         ...    2895108 features
--------------------------------------------------------------------------------
Time elapsed: 0:08:36.837270
--------------------------------------------------------------------------------
  • --date YYYYMMDD:YYYYMMDD (datumy odděleny dvojtečkou) stáhne všechny změnové soubory mezi zadanými dny (včetně)
vfr2pg --type ST_ZKSH --date 20140706:20140709 --dbname vfr
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140706_ST_ZKSH.xml.gz (1 out of 4)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Kraje                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Vusc                 ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Okresy               ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Orp                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Pou                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Obce                 ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer SpravniObvody        ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Parcely              ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer StavebniObjekty      ...          2 features (    1 added,     1 updated,     0 deleted)
Processing layer AdresniMista         ...          1 features (    1 added,     0 updated,     0 deleted)
--------------------------------------------------------------------------------
Time elapsed: 25 sec
--------------------------------------------------------------------------------
...
--------------------------------------------------------------------------------
Processing /vsicurl/http://vdp.cuzk.cz/vymenny_format/soucasna/20140709_ST_ZKSH.xml.gz (4 out of 4)...
--------------------------------------------------------------------------------
Processing layer Staty                ...          1 features (    0 added,     1 updated,     0 deleted)
Processing layer RegionySoudrznosti   ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Kraje                ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Vusc                 ...          3 features (    0 added,     3 updated,     0 deleted)
Processing layer Okresy               ...          8 features (    0 added,     8 updated,     0 deleted)
Processing layer Orp                  ...          6 features (    0 added,     6 updated,     0 deleted)
Processing layer Pou                  ...         11 features (    0 added,    11 updated,     0 deleted)
Processing layer Obce                 ...         47 features (    0 added,    47 updated,     0 deleted)
Processing layer SpravniObvody        ...          1 features (    1 added,     0 updated,     0 deleted)
Processing layer Mop                  ...          1 features (    1 added,     0 updated,     0 deleted)
Processing layer Momc                 ...          1 features (    1 added,     0 updated,     0 deleted)
Processing layer CastiObci            ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer KatastralniUzemi     ...         73 features (    0 added,    73 updated,     0 deleted)
Processing layer Zsj                  ...          0 features (    0 added,     0 updated,     0 deleted)
Processing layer Ulice                ...         45 features (    0 added,    45 updated,     1 deleted)
Processing layer Parcely              ...      21221 features ( 7189 added, 14032 updated,   121 deleted)
Processing layer StavebniObjekty      ...       2344 features (  154 added,  2190 updated,    91 deleted)
Processing layer AdresniMista         ...        226 features (  112 added,   114 updated,    78 deleted)
--------------------------------------------------------------------------------
Time elapsed: 104 sec
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Summary
--------------------------------------------------------------------------------
Layer          Staty                ...          1 features
Layer          RegionySoudrznosti   ...          8 features
Layer          Kraje                ...          8 features
Layer          Vusc                 ...         14 features
Layer          Okresy               ...         77 features
Layer          Orp                  ...        206 features
Layer          Pou                  ...        394 features
Layer          Obce                 ...       6253 features
Layer          SpravniObvody        ...          1 features
Layer          Mop                  ...          1 features
Layer          Momc                 ...          2 features
Layer          CastiObci            ...      15070 features
Layer          KatastralniUzemi     ...      13098 features
Layer          Zsj                  ...      22428 features
Layer          Ulice                ...      80921 features
Layer          Parcely              ...   21281661 6features
Layer          StavebniObjekty      ...    4045662 features
Layer          AdresniMista         ...    2894970 features
--------------------------------------------------------------------------------
Time elapsed: 0:05:19.483336
--------------------------------------------------------------------------------

Testování pod MS Windows

Postup
  1. Stáhněte zip archiv (2017/02/25) a rozbalte jej
  2. Z adresáře OSGeo4W64_vfr spusťte soubor OSGeo4W.bat
  3. Ze spuštěné příkazové řádky jsou dostupné nástroje ogrinfo, ogr2ogr či vfr2pg

Funkcionalitu můžete otestovat příkazem

vfr2ogr --file bin\test_suite\OB_UKSH.xml.gz
Příkazová řádka OSGeo4W pro práci s daty VFR

Poznámka pro Oracle

Pokud není na počítači nainstalována databáze Oracle, tak příkaz vfr2oci skočí chybou (viz obr. níže).

Chybějící knihovna oci.dll

Dále předpokládáme, že adresář, který obsahuje knihovnu oci.dll v je cestě (systémová proměnná PATH). V případě Oracle 11g Express se jedná o adresář C:\oraclexe\app\oracle\product\11.2.0\server\bin. Instalátor Oracle systémovou cestu automaticky upraví a po restartu OS by měla být korektně nastavena. Systémovou cestu lze zkontrolovat pomocí příkazu

echo %PATH%

Souřadnicový systém EPSG 5514

VFR je od verze 1.1 poskytováno v souřadnicovém systému EPSG 5514 (v dřívějších verzích EPSG 2065). Souřadnicový systém EPSG 5514 byl do databáze EPSG přidán v polovině roku 2011. Z tohoto důvodu je podporován knihovnou Proj až verze 4.9. PostGIS prozatím nepodporuje EPSG 5514 ani ve své vývojové verzi, proto musíme definici tohoto souřadnicového systému do tabulky spatial_ref_sys přidat manuálně:

INSERT into spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext) values ( 5514, 'EPSG', 5514, '+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589,76,480,0,0,0,0 +units=m +no_defs ', 'PROJCS["S-JTSK / Krovak East North",GEOGCS["S-JTSK",DATUM["System_Jednotne_Trigonometricke_Site_Katastralni",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],TOWGS84[589,76,480,0,0,0,0],AUTHORITY["EPSG","6156"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4156"]],PROJECTION["Krovak"],PARAMETER["latitude_of_center",49.5],PARAMETER["longitude_of_center",24.83333333333333],PARAMETER["azimuth",30.28813972222222],PARAMETER["pseudo_standard_parallel_1",78.5],PARAMETER["scale_factor",0.9999],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],AUTHORITY["EPSG","5514"]]');

Poznámka: Skript vfr2pg přidá definici souřadnicového systému EPSG 5514 do databáze PostGIS automaticky.

Příklady vlastních Python skriptů

Náměty na další vývoj

  • Upravit skripty vfr2*, tak aby volitelně vytvářely pro každý typ geometrie zvláštní vrstvu (např. parcely_definicnibod a parcely_originalnihranice), to se bude hodit především pro drivery/formáty, které nepodporují více složek popisu geometrie na vrstvu (výjimka je GML a PostGIS, ve vývoji Oracle). Tato možnost je zásadní i pro QGIS, který ve standardním dialogu zobrazuje pouze jeden typ geometrie na vrstvu.
  • ... ?

Známé problémy

  • Datové typy int s délkou 18 platných cifer (bigint) knihovna GDAL podporuje až od verze 2.0.0 (viz trac) - opraveno ve verzi 1.11.1, kdy se hodnota ukládá jako textový řetězec
  • Knihovna chybně interpretuje změnové soubory, chybí vrstva ZaniklePrvky (viz trac) - opraveno ve verzi 1.11.1
  • Podpora pro speciální formát volebních okrsků přidán ve verzi GDAL 1.11.2
  • GDAL ve verzi 1.11 nepodporuje křivky. To má vliv na tvar hranic parcel a definičních čar ulic, které mohou být tvořeny kružnicemi či kruhovými oblouky, viz obr. níže.
Hranice parcely, která je tvořena kruhovými oblouky ve verzi knihovny GDAL 1.11 a 2.0.0dev
  • GDAL podporuje geometrii OriginalniHraniceOmpv až od verze 1.11.3 (viz trac)

Kontakt na autora

Implementace podpory formátu VFR v knihovně GDAL včetně konverzních skriptů byla finačně podpořena Výzkumným ústavem geodetickým, topografickým a kartografickým.

Projekt byl institucionálně podpořen Katedrou geomatiky (Fakulta stavební, ČVÚT v Praze).