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