Programování v GIS 4
2025-10-14
ABC z modulu abcQgsMapLayer - rozhraní pro všechny vrstvycrs(), extent(), legend(), renderer(), reload() a celá řada dalšíchQgsMapLayer a lze s nimi tudíž nakládat stejněQgsGeometryQgsPoint, QgsLineString, …), případně pomocí WKT/WKBQgsGeometry využijte pro transformace, serializaci (asWkt(), asWkb()), validitu (isGeosValid()), prostorové operace (buffer(), centroid(), intersection(), …)area() dává smysl pro plochy, nikoliv pro body/linie)QgsAbstractGeometryQgsPoint, QgsLineString, QgsPolygonQgsMultiPoint, QgsMultiLineString, QgsMultiPolygonQgsGeometryCollectionQgsSurface, QgsCurve, QgsCompoundCurve, QgsTriangleQgsAbstractGeometry – společné rozhraní pro všechny geometrieQgsPoint, QgsLineString, QgsPolygonQgsMultiPoint, QgsMultiLineString, QgsMultiPolygonQgsGeometryCollection, QgsSurface, QgsCurve, QgsCompoundCurve, QgsTrianglePoznámka: Třída QgsGeometry je „obal“ kolem konkrétní implementace rozhraní QgsAbstractGeometry a poskytuje nadstavbové funkce (transformace, serializace WKT/WKB, validace, prostorové operace atp.).
from qgis.core import QgsGeometry, QgsPoint, QgsTriangle
# vytvoření trojúhelníku z bodů (QgsTriangle implementuje QgsAbstractGeometry)
triangle = QgsTriangle(
QgsPoint(0, 0),
QgsPoint(1, 0),
QgsPoint(0.5, 2),
)
# metriky přímo nad abstraktní geometrií
print(f"Area: {triangle.area()}") # plocha trojúhelníku
print(f"Length: {triangle.length()}") # obvod trojúhelníku
# převod na hlavní třídu QgsGeometry (wrapper kolem abstraktní geometrie)
geom = QgsGeometry(triangle)
# jednoduchá operace nad geometrií – densifikace
densified = geom.densifyByDistance(0.3)
print(densified.asWkt()) # výstup ve formátu WKTpartCount() a ringCount() dávají smysl pro vícedílné nebo polygonové geometrie; u bodů vrací typicky 1/1QgsGeometryCollection) je vhodné hlídat typy prvků uvnitř kolekceMateriály dostupné: https://jancaha.github.io/vsb-vyuka/