Základ QGIS Python API

Programování v GIS 4

Jan Caha

2025-09-16

QGIS

  • nejrozšíř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 funkcí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.40, 3.42, 3.44, …), liché verze jsou vývojové (3.41, 3.43, 3.45, 3.99, …)
  • 3 verze ročně - z toho jedná je s dlouhodobou podporou (LTR)
  • financováno 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?