Introducere

Acest document are rolul de tutorial dar și de ghid de referință. Chiar dacă nu prezintă toate cazurile de utilizare posibile, ar trebui să ofere o bună imagine de ansamblu a funcționalității principale.

Începând cu versiunea 0.9, QGIS are suport de scriptare opțional, cu ajutorul limbajului Python. Ne-am decis pentru Python deoarece este unul dintre limbajele preferate în scriptare. PyQGIS depinde de SIP și PyQt4. S-a preferat utilizarea SIP în loc de SWIG deoarece întregul cod QGIS depinde de bibliotecile Qt. Legarea Python cu Qt (PyQt) se face, de asemenea, cu ajutorul SIP, acest lucru permițând integrarea perfectă a PyQGIS cu PyQt.

DE EFECTUAT:

Noțiuni de bază PyQGIS (Compilare manuală, Depanare)

Există mai multe modalități de a crea legături între QGIS și Python, acestea fiind detaliate în următoarele secțiuni:

  • scrierea comenzilor în consola Python din QGIS

  • crearea în Python a plugin-urilor

  • crearea aplicațiilor personalizate bazate pe QGIS API

Există o referință API QGIS completă care documentează clasele din bibliotecile QGIS. API-ul QGIS pentru python este aproape identic cu cel pentru C++.

Există unele resurse despre programarea PyQGIS pe blog-ul QGIS. A se vedea tutorialul QGIS portat în Python pentru câteva exemple de aplicații simple produse de t3rțe părți. O metodă bună de învățare, atunci când lucrați cu plugin-uri, este de a descărca câteva din depozitul de plugin-uri și să le examinați codul. De asemenea, folderul python/plugins/ din instalarea QGIS conține unele plugin-uri pe care le puteți modifica, pentru a efectua unele dintre cele mai comune sarcini

Consola Python

Pentru scripting, se poate utiliza consola Python integrată. Aceasta poate fi deschisă din meniul: Plugins ‣ Consola Python. Consola se deschide ca o fereastră de utilități non-modală:

../../_images/console.png

Consola Python din QGIS

Captura de ecran de mai sus ilustrează cum să obțineți accesul la stratul curent selectat în lista straturilor, să-i afișați ID-ul și, opțional, în cazul în care acesta este un strat vectorial, să calculați numărul total de entități spațiale. Pentru interacțiunea cu mediul QGIS, există o variabilă de :date: iface, care este o instanță a :clasei: QgsInterface. Această interfață permite accesul la suprafața hărții, meniuri, barele de instrumente și la alte părți ale aplicației QGIS.

Pentru confortul utilizatorului, următoarele afirmații sunt executate atunci când consola este pornită (în viitor, va fi posibil să stabiliți comenzi inițiale suplimentare)

from qgis.core import *
import qgis.utils

Pentru cei care folosesc des consola, ar putea fi util să stabilească o comandă rapidă pentru declanșarea consolei (în meniul :menuselection: Settings -> Configurare comenzi rapide ...)

Plugin-uri Python

QGIS permite îmbunătățirea funcționalității sale, folosind plugin-uri. Acest lucru a fost inițial posibil numai cu ajutorul limbajului C. Odată cu adăugarea în QGIS a suportului pentru Python, este posibilă și folosirea de plugin-uri scrise în Python. Principalul avantaj față de plugin-urile în C este simplitatea distribuției (nu este necesară compilarea pentru fiecare platformă) iar dezvoltarea este mai ușoară.

Multe plugin-uri care acoperă diverse funcționalități au fost scrise de la introducerea suportului pentru Python. Instalatorul de plugin-uri permite utilizatorilor aducerea cu ușurință, actualizarea și eliminarea plugin-uri Python. A se vedea pagina Depozitele de Plugin-uri Python pentru diferitele surse de plugin-uri.

Crearea de plugin-uri în Python este simplă, a se vedea :ref: developing_plugins pentru instrucțiuni detaliate.

Aplicații

Adesea, atunci când are loc procesarea unor date GIS, este recomandabilă crearea unor script-uri pentru automatizarea procesului în loc de a face iarăși și iarăși aceeași sarcină. Cu PyQGIS, acest lucru este perfect posibil — importați :modul: qgis.core, îl inițializați și sunteți gata pentru prelucrare.

Sau poate doriți să creați o aplicație interactivă care utilizează unele funcționalități GIS — măsurarea anumitor date, exportarea unei hărți în format PDF sau orice alte funcționalități. Modulul qgis.gui aduce în plus diverse componente GUI, mai ales widget-ul ariei hărții, care poate fi foarte ușor încorporat în aplicațiile cu suport pentru zoom, panning și/sau orice alte instrumente personalizabile.

Utilizarea PyQGIS în aplicații personalizate

Notă: nu utilizați qgis.py ca nume pentru script-ul de test — datorită acestui nume, Python nu va fi capabil să importe legăturile.

Mai întâi de toate, trebuie să importați modul qgis, să setați calea către resurse — baza de date a proiecțiilor, furnizorii etc. Când setați prefixul căii având ca al doilea argument :const: True, QGIS va inițializa toate căile cu standardul dir în directorul prefixului. La apelarea funcției initQgis() este important să permiteți aplicației QGIS să căute furnizorii disponibili.

from qgis.core import *

# supply path to where is your qgis installed
QgsApplication.setPrefixPath("/path/to/qgis/installation", True)

# load providers
QgsApplication.initQgis()

Acum puteți lucra cu API QGIS — încărcați straturile și faceți unele prelucrări sau startați un GUI cu o zonă pentru o hartă. Posibilitățile sunt nelimitate :-)

Când ați terminat cu utilizarea bibliotecii QGIS, apelați funcția exitQgis() pentru a vă asigura că totul este curat (de exemplu, curățați registrul stratului hărții și ștergeți straturile):

QgsApplication.exitQgis()

Rularea aplicațiilor personalizate

Trebuie să indicați sistemului dvs. unde să căute bibliotecile QGIS și modulele Python corespunzătoare, dacă acestea nu sunt într-o locație standard — altfel Python va semnaliza:

>>> import qgis.core
ImportError: No module named qgis.core

Aceasta se poate repara prin setarea variabilei de mediu PYTHONPATH. În următoarele comenzi, qgispath ar trebui să fie înlocuit de către calea de instalare actuală a QGIS:

  • în Linux: export PYTHONPATH=/qgispath/share/qgis/python

  • în Windows: set PYTHONPATH=c:\qgispath\python

Calea către modulele PyQGIS este acum cunoscută, totuși, acestea depind de bibliotecile qgis_core și qgis_gui (modulele Python servesc numai pentru ambalare). Calea către aceste biblioteci este de obicei necunoscută sistemului de operare, astfel încât veți obține iarăși o eroare de import (mesajul poate varia în funcție de sistem):

>>> import qgis.core
ImportError: libqgis_core.so.1.5.0: cannot open shared object file: No such file or directory

Remediați acest lucru prin adăugarea directoarelor în care rezidă bibliotecile QGIS la calea de căutare a linker-ului dinamic:

  • în Linux: export LD_LIBRARY_PATH=/qgispath/lib

  • în Windows: set PATH=C:\qgispath;%PATH%

Aceste comenzi pot fi puse într-un script bootstrap, care va avea grijă de pornire. Când livrați aplicații personalizate folosind PyQGIS, există, de obicei, două posibilități:

  • să cereți utilizatorului să instaleze QGIS pe platforma sa înainte de a instala aplicația. Instalatorul aplicației ar trebui să caute locațiile implicite ale bibliotecilor QGIS și să permită utilizatorului setarea căii, în cazul în care nu poate fi găsită. Această abordare are avantajul de a fi mai simplă, cu toate acestea este nevoie ca utilizatorul să parcurgă mai multe etape.

  • să împacheteze QGIS împreună cu aplicația dumneavoastră. Livrarea aplicației poate fi mai dificilă, iar pachetul va fi mai mare, dar utilizatorul va fi salvat de povara de a descărca și instala software suplimentar.

Cele două modele pot fi combinate - puțeți distribuiți aplicații independente pe Windows și Mac OS X, lăsând la îndemâna utilizatorului și a managerul de pachete instalarea QGIS pe Linux.