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ăților 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 de Qt (PyQt) se face, de asemenea, cu ajutorul SIP, acest lucru permițând integrarea perfectă a PyQGIS cu PyQt.
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:
rularea automată a codului Python atunci când porneşte QGIS
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 similar cu cel pentru C++.
Există unele resurse despre programarea în PyQGIS pe blog-ul QGIS. Parcurgeți 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 cu ajutorul cărora puteți învăța modul de dezvoltare al unor plugin-uri similare, care să efectueze unele dintre cele mai comune sarcini
Există două metode distincte de a rula cod Python de fiecare dată când porneşte QGIS.
Puteţi rula cod Python mai înainte de finalizarea inițializării QGIS, indicând în variabila de mediu PYQGIS_STARTUP calea spre un fişier Python existent.
Această metodă este rar utilizată, dar merită menţionată, deoarece reprezintă una din metodele de a rula cod Python în QGIS, şi pentru că acest cod se va executa înainte de finalizarea iniţializării QGIS. Această metodă este foarte utilă pentru curăţarea sys.path, care poate conţine căi nedorite, sau pentru izolarea/încărcarea căilor mediului iniţial fără a fi necesară instalarea unui mediu virtual, cum ar fi homebrew sau MacPorts pe Mac.
De fiecare dată când porneşte QGIS, directorul home al utilizatorului Python( de obicei .qgis2/python) este căutat un fişier numit startup.py, dacă acesta există, este executat de către interpretorul Python integrat.
Pentru scripting, se poate utiliza consola Python integrată. Aceasta poate fi deschisă din meniul: Plugins ‣ Consola Python. Consola se deschide ca o fereastră utilitară, non-modală:
Captura de ecran de mai sus ilustrează cum să puteți obțineți accesul la stratul curent selectat în lista straturilor, pentru a-i afișa ID-ul și, opțional, în cazul în care stratul este de tip vectorial, pentru a calcula numărul total de entități spațiale. Pentru interacțiunea cu mediul QGIS, există o variabilă :date:`iface`, care reprezintă o instanță a clasei QgsInterface. Această interfață permite accesul la canevasul hărții, la meniuri, la barele de instrumente și la alte părți ale aplicației QGIS.
Pentru confortul utilizatorului, următoarele instrucțiuni 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ă stabilirea unei comenzi rapide pentru deschiderea consolei (prin intermediul meniului Setări ‣ Configurare Comenzi Rapide...)
QGIS permite îmbunătățirea funcționalităților sale, prin intermediul plugin-urilor. Acest lucru a fost inițial posibil numai cu ajutorul limbajului C. O dată cu adăugarea în QGIS a suportului pentru Python, a devenit posibilă folosirea de plugin-uri scrise în Python. Principalul avantaj față de plugin-urile în C constă în simplitatea distribuției (nu este necesară compilarea pentru fiecare platformă), iar dezvoltarea este mai ușoară.
De la momentul introducerii suportului pentru Python, au fost scrise multe plugin-uri, care acoperă diverse funcționalități. Instalatorul de plugin-uri facilitează utilizatorilor instalarea, actualizarea și eliminarea plugin-urilor Python. Parcurgeți pagina Depozitele de Plugin-uri Python pentru a descoperi diverse surse de plugin-uri.
Crearea de plugin-uri în Python este simplă, instrucțiuni detaliate găsindu-se în :ref: developing_plugins.
Adesea, atunci când are loc procesarea unor date GIS, este recomandabilă crearea unor script-uri pentru automatizarea procesului, în locul repetării anevoioase a acelorași pași. Folosind PyQGIS, acest lucru este perfect posibil — importați modulul qgis.core, îl inițializați, apoi sunteți gata de procesare.
Sau poate că doriți să creați o aplicație interactivă care utilizează unele funcționalități GIS — cum ar fi măsurarea anumitor date, exportarea unei hărți în format PDF sau orice altceva. Modulul qgis.gui aduce diverse componente GUI suplimentare, în special controlul grafic pentru canevas, care poate fi foarte ușor încorporat în aplicații, oferind suport pentru instrumentele de transfocare, deplasare și/sau pentru oricare alt instrument de hartă, personalizabil.
Notă: nu utilizați qgis.py ca nume pentru script-ul de test — în acest caz Python nu va fi capabil să importe legăturile.
Mai întâi de toate, trebuie să importați modul qgis, să setați calea în care QGIS va căuta resursele — baza de date a proiecțiilor, furnizorii etc. Când setați prefixul căii având ca al doilea argument True, QGIS va inițializa toate căile cu directorul specificat ca prefix. 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-ul QGIS — să încărcați straturile, să faceți unele prelucrări sau să startați un GUI cu un canevas pentru 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, s-a curățat registrul cu straturi de hartă și s-au șters straturile):
QgsApplication.exitQgis()
Trebuie să indicați sistemului dvs. unde să caute bibliotecile QGIS și modulele Python corespunzătoare, atunci când acestea nu se află într-o locație standard — altfel, Python vă va notifica:
>>> import qgis.core
ImportError: No module named qgis.core
Acest lucru se poate remedia prin setarea variabilei de mediu PYTHONPATH. În următoarele comenzi, qgispath ar trebui să fie înlocuit de calea instalării actuale de QGIS:
în Linux: export PYTHONPATH=/qgispath/share/qgis/python
în Windows: set PYTHONPATH=c:\qgispath\python
Deși calea către modulele PyQGIS este de acum cunoscută, ele depind totuși de bibliotecile qgis_core și qgis_gui (modulele Python servesc numai pentru intermedierea apelării). Calea către aceste biblioteci este de obicei necunoscută sistemului de operare, astfel că veți obține iarăși o eroare de import (mesajul putând 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 editorului de legături:
î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 se va ocupa de pornire. Atunci când livrați aplicații personalizate folosind PyQGIS, există, de obicei, două variante:
să cereți utilizatorului să instaleze QGIS pe platforma sa înainte de a instala aplicația dumneavoastră. Programul de instalare al aplicației ar trebui să caute locațiile implicite ale bibliotecilor QGIS și să permită utilizatorului setarea căii, în cazul în care ea nu poate fi găsită. Deși această abordare are avantajul de a fi mai simplă, este nevoie ca utilizatorul să parcurgă mai multe etape.
să împachetați QGIS împreună cu aplicația dumneavoastră. Livrarea aplicației poate fi mai dificilă deoarece pachetul va fi foarte mare, dar utilizatorul va fi salvat de povara de a descărca și instala software suplimentar.
Cele două modele pot fi combinate - puteți distribuiți aplicații independente pe Windows și Mac OS X, lăsând la îndemâna utilizatorului și a managerului de pachete instalarea QGIS pe Linux.