QGIS-2.8-PyQGISDeveloperCookbook-en(5)
时间:2025-03-11
时间:2025-03-11
为开发人员准备的文档,涵盖QGIS的多种功能实现和代码。
CHAPTER1Introduction
Thisdocumentisintendedtoworkbothasatutorialandareferenceguide.Whileitdoesnotlistallpossibleuse
cases,itshouldgiveagoodoverviewoftheprincipalfunctionality.
Startingfrom0.9release,QGIShasoptionalscriptingsupportusingPythonlanguage.We’vedecidedforPython
asit’soneofthemostfavouritelanguagesforscripting.PyQGISbindingsdependonSIPandPyQt4.Thereason
forusingSIPinsteadofmorewidelyusedSWIGisthatthewholeQGIScodedependsonQtlibraries.Python
bindingsforQt(PyQt)aredonealsousingSIPandthisallowsseamlessintegrationofPyQGISwithPyQt.
TODO:GettingPyQGIStowork(Manualcompilation,Troubleshooting)
ThereareseveralwayshowtouseQGISpythonbindings,theyarecoveredindetailinthefollowingsections:
automaticallyrunPythoncodewhenQGISstarts
issuecommandsinPythonconsolewithinQGIS
createandusepluginsinPython
createcustomapplicationsbasedonQGISAPI
ThereisacompleteQGISAPIreferencethatdocumentstheclassesfromtheQGISlibraries.PythonicQGISAPI
isnearlyidenticaltotheAPIinC++.
TherearesomeresourcesaboutprogrammingwithPyQGISonQGISblog.SeeQGIStutorialportedtoPythonfor
someexamplesofsimple3rdpartyapps.Agoodresourcewhendealingwithpluginsistodownloadsomeplugins
frompluginrepositoryandexaminetheircode.Also,thepython/plugins/folderinyourQGISinstallation
containssomepluginthatyoucanusetolearnhowtodevelopsuchpluginandhowtoperformsomeofthemost
commontasks
1.1RunPythoncodewhenQGISstarts
TherearetwodistinctmethodstorunPythoncodeeverytimeQGISstarts.
1.1.1PYQGIS_STARTUPenvironmentvariable
YoucanrunPythoncodejustbeforeQGISinitializationcompletesbysettingthePYQGIS_STARTUPenviron-
mentvariabletothepathofanexistingPython le.
Thismethodissomethingyouwillprobablyrarelyneed,butworthmentioningherebecauseitisoneoftheseveral
waystorunPythoncodewithinQGISandbecausethiscodewillrunbeforeQGISinitializationiscomplete.This
methodisveryusefulforcleaningsys.path,whichmayhaveundesireablepaths,orforisolating/loadingtheinitial
environwithoutrequiringavirtenv,e.g.homebreworMacPortsinstallsonMac.