Základ QGIS Python API

Programování v GIS 4

Jan Caha

2024-09-23

QGIS

  • nejrrozšířenější open-source GIS software
  • vychází a staví na mnoha open-source knihovnách - např. GDAL/OGR, PROJ, GEOS, PostGIS, PDAL, SpatiaLite, ale i GRASS a další
  • míra rozšřenosti se výrazně liší regionálně, ale i dle oboru

Zdrojový kód QGIS

  • většinou C++
  • výrazně se opírá o knihovnu Qt, zejména GUI ale i další části
  • vývojáři QGIS se snaží o co největší modularitu a přehlednost kódu
  • kód je připravován tak, aby byla snadná jeho propojitelnosti s Pythonem, který slouží pro tvorbu pluginů, skriptů a nástrojů
  • zajímavost - většina kódu je sice v C++, ale testuje se z velké části až Python binding

QGIS Python API

  • část QGIS API, která je dostupná v Pythonu pro použití vyvojářů
  • umožňuje přístup k třídám a funcím QGIS, stejně jako práci s celým softwarem
  • dokumentace - v poslední době výrazně vylepšená a rozšířená

Struktura QGIS Python API

  • v pythonu importujeme modul qgis a jeho submoduly
  • několiv hlavních částí
    • qgis.core - hlavní a nejdůležitější část, třídy pro reprezentaci klíčových prvků GIS
    • qgis.gui - grafické uživatelské rozhraní a jeho třídy
    • qgis.analysis - třídy pro analýzy a zpracování dat
    • qgis.server - třídy pro práci s QGIS serverem (publikace online map)
    • qgis.processing - třídy pro tvorbu nástrojů v QGIS
    • qgis._3d - 3D funcionalita QGIS

Vývoj QGIS

  • kontinuální vývoj
  • sudé verze - vydávají se (3.32, 3.34, 3.36, …), liché verze jsou vývojové (3.33, 3.35, 3.37, 3.39, …)
  • 3 verze ročně - z toho jedná je s dlouhodobou podporou (LTR)
  • financováné skrze sponzory, granty, ale i příspěvky komunity
  • vhodné pravidelně updatovat

Functionalita QGIS

  • samotný software obsahuje značné množství funkcí a nástrojů
  • ale zásadní pro použitelnost a rozšířenost jsou pluginy
  • QGIS Python Plugins Repository
  • výhodou pluginů je, že jsou psány v Pythonu a tudíž v podstatě “by default” open-source
  • kód většiny pluginů je dostupný na GitHubu či jiné platformě pro sdílení kódu

Ukázky pluginů

  • výběr zajímavých pluginů

Dotazy?