Práce s datových zdrojem

V této části si blíže popíšeme, jak otevřít a načíst vektorový soubor a jak manipulovat s jednotlivými objekty (tj. vektorovými geoprvky - features).

Datovou vrstvu otevřeme pomocí funkce open(), ta vytvoří objekt tvz. kolekce geoprvků:

import fiona

chko = fiona.open('data/chko.shp', 'r', encoding='utf-8')
print(chko)
print(chko.driver)

# doporučujeme využít více obvyklou cestu otevírání souborů pomocí příkazu
# `with`, který je schopný na konci bloku kódu soubor automaticky uzavřít
#
# with fiona.open("data/chko.shp", "r", encoding='utf-8') as chko:
#   print(chko)

Následně můžeme zjišťovat vlastnosti této kolekce geoprvků, viz dokumentace knihovny.

>>> # driver
>>> chko.driver
'ESRI Shapefile'

>>> # souřadnicový systém
>>> chko.crs
'PROJCS["S_JTSK_Krovak_East_North",GEOGCS["GCS_S-JTSK",DATUM["System_of_the_Unified_Trigono...'

>>> # jméno souboru
>>> chko.path
'data/chko.shp'

>>> # jméno vrstvy
>>> chko.name
'chko'

>>> # hraniční souřadnice
>>> chko.bounds
(-891817.1765, -1209945.3889999986, -440108.9158999994, -943075.1875)

>>> # všechna metadata pohromadě
>>> chko.meta
{'driver': 'ESRI Shapefile', 'schema': {'properties': {'gml_id': 'str:80', 'OBJECTID': ... }

Prvky uložené v kolekci můžeme standardním postupem iterovat a zpracovávat je prvek po prvku. Nejprve ale zjistíme jejich počet:

>>> len(chko)
5626

Souřadnicové systémy

Na pozadí Fiony se používají nástroje knihovny GDAL, proto ani práce se souřadnicovými systémy není o tolik zjednodušena, jak by možná bylo potřeba. Pokud je souřadnicový systém datové vrstvy definován pomocí kódu EPSG, je tento kód dále využit, v našem případě se jedná o EPSG:4326.

with fiona.open('data/natural.shp') as data:
    print(data.crs)
EPSG:4326

Při vytvoření nového geoprvku s definicí souřadnicového systému je postupováno analogicky (zde S-JTSK, EPSG:5514):

from fiona.crs import from_epsg
print(from_epsg(5514))
EPSG:5514

Fiona těmito funkcemi pouze mapuje jednotlivé parametry souřadnicového systému a stará se o jejich převod do textového řetězce a z textových řetězců.