Knihovny fiona, rasterio, shapely

Programování v GIS 2

Jan Caha

2024-03-18

Typy knihoven pro Python

  • nativní knihovny - pouze Python kód
  • kompilované knihovny - C, C++, Rust nebo i jiné jazyky
  • nativní knihovny fungují automaticky všude, kompilované je nutné sestavit pro danou platformu a verzi Pythonu

fiona, rasterio, shapely

  • kompilované knihovny
  • postavené nad GDAL/OGR (ne nad balíkem osgeo)
  • snaha aby pracovaly více jako Python knihovny a méně jako C++ kód
  • o něco měně komplikované než přímé použití GDAL/OGR skrze osgeo, o něco horší spolupráce knihoven (zejména fiona a shapely)

fiona

  • knihovna pro práci s vektorovými daty
  • odstraňuje mnoho dílčích kroků, které jsou v osgeo
  • souřadnicové systémy a transformace s knihovnou pyproj
  • api není bohaté na práci s geometrií
  • přístup např. ke struktuře vrstvy je velice jednoduchý
  • nepodporuje vše co osgeo
  • dokumentace

shapely

  • knihovna založená na GEOS
  • zpracování geometrií
  • při využití s fiona nutné konverze mezi jejich typy
  • dokumentace

Konverze geometrií

  • modul shapely.geometry
  • z fiona do shapely funkce shape(feature.geometry)
  • z shapely do fiona funkce mapping()

rasterio

  • knihovna pro práci s rastrovými daty
  • platí pro ni v podstatě to samé co pro fiona
  • výrazné propojení s numpy (knihovna pro dvou a vícerozměrné matic)
  • oproti osgeo jednodušší přístupy
  • dokumentace
  • problém s typováním - nutné hodně se opírat o dokumentaci

GDAL/OGR fiona, rasterio, shapely

  • GDAL/OGR má širší možnosti, ale práce je komplikovanější
  • knihovny jsou zjednodušené a přístupnější
  • nástroje gdal.VectorTranslate(), gdal.Warp(), gdal.Translate() atd. určitě využívat z osgeo
  • základní modifikace či zpracování dat je v 90% případů snadnější z knihoven
  • komplexní situace lze řešit přímo použítím osgeo
  • používat princip KISS (Keep it simple, stupid!) – začít s jednoduchou verzí, dokud funguje a upgradovat pouze pokud je to nutné

Dotazy?