Usprawnianie pracy z Konsolą Pythona w Quantum GIS

Dzięki Konsoli Pythona, wbudowanej w Quantum GIS, użytkownik może korzystać z udostępnionego przez tą aplikację API do przeglądania i manipulowania danymi przestrzennymi. Podczas uruchamiania programu automatycznie wczytywane są moduły qgis.core i qgis.utils, dzięki czemu od razu po otworzeniu Konsoli można korzystać z dostępnych w nich klas i funkcji.

Jeśli często korzystamy z konsoli, możemy usprawnić swoją pracę poprzez dostosowanie modułów wczytywanych podczas startu Quantum GIS. Aby tego dokonać należy zmodyfikować plik console.py znajdujący się w katalogu qgis_path\python\qgis, gdzie qgis_path to katalog, w którym został zainstalowany QGIS (np. C:\OSGeo4W\apps\qgis).

[notice]Jeśli używamy wersji rozwojowej master należy zmodyfikować plik console_sci.py znajdujący się w katalogu qgis_path\python\console. Należy pamiętać, że w przypadku aktualizacji oprogramowania, np. instalatorem OSGeo4W, plik ten zostanie nadpisany, a wprowadzone zmiany utracone![/notice]

W powyższym pliku należy znaleźć linię:

_init_commands = ["from qgis.core import *", "import qgis.utils"]

Zmienna _init_commands to lista zawierająca polecenia, które zostaną wykonane podczas pierwszego uruchamiania Konsoli Pythona podczas danej sesji. Jak widać najpierw wczytywane są wszystkie klasy z moduły qgis.core, a następnie moduł qgis.utils. Dodając nowe pozycje do listy można w prosty sposób dostosować zestaw modułów ładowanych przy starcie QGIS, np. zmieniając linię kodu na:

_init_commands = ["from qgis.core import *", "import qgis.utils",
                  "from qgis.utils import iface"]

dostęp do aktualnej instancji klasy QgisInterface będzie znacznie prostszy – wystarczy wpisać iface.activeLayer() aby uzyskać dostęp do aktualnie zaznaczonej warstwy na liście (normalnie należy wpisać qgis.utils.iface.activeLayer()). W ten sposób można załadować dowolne dostępne moduły Pythona jak np. PyQt4 czy math.

_PConsole

Dostęp do instancji klasy QgisInterface przed…

mod_PConsole

…i po wprowadzeniu modyfikacji.