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
u'ESRI Shapefile'
>>> # souřadnicový systém
>>> chko.crs
{u'lon_0': 24.83333333333333, u'k': 0.9999, u'ellps': u'bessel', u'y_0': 0, u'no_defs': True,
u'proj': u'krovak', u'x_0': 0, u'units': u'm', u'alpha': 30.28813972222222, u'lat_0': 49.5}
>>> # jméno souboru
>>> chko.path
u'data/chko.shp'
>>> # jméno vrstvy
>>> chko.name
u'chko'
>>> # hraniční souřadnice
>>> chko.bounds
(-891817.1765, -1209945.3889999986, -440108.9158999994, -943075.1875)
>>> # všechna metadata pohromadě
>>> chko.meta
>>> ...
>>> ...
>>> import json # naformátovat výstup
>>> print(json.dumps(chko.meta, sort_keys=True, indent=4, separators=(',', ': ')))
{
"crs": {
"alpha": 30.28813972222222,
"ellps": "bessel",
"k": 0.9999,
"lat_0": 49.5,
"lon_0": 24.83333333333333,
"no_defs": true,
"proj": "krovak",
"units": "m",
"x_0": 0,
"y_0": 0
},
"driver": "ESRI Shapefile",
"schema": {
"geometry": "Polygon",
"properties": {
"IUCN": "str:2",
"KAT": "str:4",
"KOD": "int:10",
"NAZEV": "str:27",
"OBJECTID": "int:10",
"OP_TYP": "str:3",
"PREKRYV": "int:10",
"ROZL": "float:24.15",
"SHAPE.AREA": "float:24.15",
"SHAPE.LEN": "float:24.15",
"ZMENA_G": "int:10",
"ZMENA_T": "int:10",
"ZONA": "str:3",
"gml_id": "str:80"
}
}
}
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.
from fiona.crs import to_string
print(to_string(chko.crs))
+init=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
from_epsg(5514)
{'init': 'epsg:5514', 'no_defs': True}
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ů.