Bevezetés a QGIS programozásába

A QGIS egy sokoldalú eszköz térinformatikai adatok kezelésére, amelyet a beépített Python programozási lehetőségek még hatékonyabbá tesznek. A Python konzol segítségével automatizálhatod a rutinfeladatokat, például az adatok előkészítését vagy jelentések generálását, így időt takaríthatsz meg. Ebben a cikkben megmutatjuk, hogyan kezdheted el a PyQGIS használatát, hogy munkád gyorsabb és kreatívabb legyen.

A cikk elsősorban azoknak készült, akik már rendelkeznek programozási tapasztalattal, még ha nem is Python nyelvben. Azok számára, akiknek nincs semmilyen programozási tapasztalatuk, a cikk végén található források között kiemelten ajánlom a "Learn Python" honlapot, amely segít az alapok elsajátításában.

Mi az a PyQGIS?

A PyQGIS a QGIS térinformatikai rendszer Python nyelvű programozási interfésze. Lehetővé teszi a felhasználók számára, hogy a QGIS-ben végezhető térinformatikai elemzéseket és munkafolyamatokat Python kóddal automatizálják és testreszabják. A PyQGIS segítségével a fejlesztők közvetlenül elérhetik a QGIS funkcionalitását, így bővítményeket készíthetnek, új eszközöket létrehozhatnak és integrálhatják a QGIS-t más rendszerekkel. Az API rendkívül széleskörű, és különböző GIS-munkafolyamatok, például adatkezelés, térképkészítés és elemzés automatizálására ad lehetőséget.

Első lépések a Python konzolban

A QGIS Python konzoljának megnyitásához lépj a menüsorban az „Plugins” menüre, majd válaszd ki a „Python konzol” lehetőséget. Ez megnyit egy interaktív Python környezetet.

A "Hello, World!" program hagyományosan az első alkalmazás, amelyet egy új fejlesztési környezetben futtatunk. Ez a program egyszerű, mégis hatékony módja annak ellenőrzésére, hogy a fejlesztési környezet megfelelően van-e beállítva. Vizsgáljuk meg tehát, hogy a megadott szöveg helyesen jelenik-e meg a kimenetben.

print("Szia világ!")
Hello World!

A Python konzol rendelkezik számos beépített utasítással, amit a rendszerrel való ismerkedésnél érdemes átnézni. Például a ? utasításra kapunk egy rövid súgót, továbbá a help utasítással objektumokról, modulokról kaphatunk részletes leírást. Például help(pprint) vagy help(QMessageBox).

Qt használata a QGIS-ben

A Qt egy platformfüggetlen fejlesztési keretrendszer, amelyet elsősorban grafikus felhasználói felületek (GUI) készítésére használnak. A név a "cute" (aranyos) szóból ered, ami egy szójáték, hiszen a Qt kiejtése is hasonló, miközben a keretrendszer sokoldalú és rugalmas. A QGIS a Qt-t használja a grafikus elemek, például gombok, ablakok és egyéb vezérlők létrehozására. A PyQGIS segítségével Python nyelven is készíthetünk Qt alapú felületeket, amelyeket saját alkalmazásainkban használhatunk, bővítve ezzel a QGIS funkcionalitását és interaktivitását.

Íme egy rövid példa arra, hogyan hozhatsz létre egy egyszerű párbeszédablakot két gombbal.

(Ha hosszabb kódot szeretnél beírni a Python konzolon a „Szerkesztő megjelenítése” gombra kattints, majd az oldalsó panelbe írt kódot a felette lévő „Szkript futtatása” gombbal tudod elindítani.)

mb = QMessageBox()
mb.setWindowTitle('Szia világ!')
mb.setText('Szerinted?')
mb.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
return_value = mb.exec()
if return_value == QMessageBox.Yes:
    print('Igen-re nyomtál.')
elif return_value == QMessageBox.No:
    print('A nem-re kattintottál.')
Qt párbeszédablak

Változók és hibakeresés

A Python konzolban könnyedén vizsgálhatod a változóidat és azok típusait.

(Ha kezdő programozóként nem értettél mindent, akkor ne csüggedj, idővel majd minden a helyére kerül.)

Egy "QGIS-es" példa

Az előző példakódok után nézzük egy valóban QGIS-hez köthető mintakódot. Adott shape fájl adatait írjuk ki a konzolra. (A shape fájlokról részletesen itt olvashatsz!)

# A shape fájl elérési útja
zipfile_path = "C:\\works\\shapefile.zip"

# A ZIP fájlon belüli shape fájl betöltése
layer = QgsVectorLayer(f"/vsizip/{zipfile_path}", "My Layer", "ogr")

if not layer.isValid():
    print("A réteg betöltése nem sikerült!")
else:
    print("A réteg sikeresen betöltődött.")

    # A koordináta rendszer EPSG kódjának kiírása
    print(f"A réteg koordináta rendszere: {layer.crs().authid()}")

    # Minden egyes geometriai objektum lekérdezése
    for feature in layer.getFeatures():

        # A geometriai objektum típusának kiírása:
        print(f"Geometria típus: {feature.geometry().type().name}")

        # Attribútom tábla kiírása:
        print("Attribútumok:")
        for field, value in zip(layer.fields(), feature.attributes()):
            print(f"{field.name()}: {value}")

További források

A következő oldalakon további olvasnivalót találsz majd a PyQGIS-ről, QGIS Api-ról:

A programozással illetve a Pythonnal most ismerkedőknek a következő két honlap különösen hasznos lehet.

Bár az előző források is tartalmaznak Qt-re vonatkozó információkat, a részletesebb megértéshez az alábbi dokumentációt ajánlom.

Összegzés

A PyQGIS segítségével könnyen automatizálhatod a GIS-feladataidat, és saját bővítéseket készíthetsz QGIS-ben. Kezd a Python konzolban egyszerű parancsokkal, majd fedezd fel a bonyolultabb lehetőségeket a dokumentáció segítségével. Az automatizált adatelemzéstől kezdve az egyedi jelentések generálásán át egészen a személyre szabott pluginek fejlesztéséig számtalan lehetőség nyílik meg előtted. Ezek az eszközök nemcsak időt takarítanak meg, hanem lehetőséget adnak arra is, hogy kreatívabb és innovatívabb megoldásokat találj a térinformatikai problémákra. Ismerd meg a PyQGIS világát, és tapasztald meg, hogyan alakíthatod át a GIS-munkafolyamatokat egy hatékonyabb, dinamikusabb eszközkészlet segítségével!