Yo uso la siguiente intro para aplicaciones independientes:
# the_app.py
import os
import sys
from qgis.core import *
from PyQt4.QtGui import *
def main():
QgsApplication.setPrefixPath(os.environ['QGIS_PREFIX'], True)
QgsApplication.initQgis()
# app specific code
...
QgsApplication.exitQgis()
sys.exit(result)
if __name__ == '__main__':
main()
Cuando la aplicación no necesita una interfaz gráfica de usuario (por ejemplo, hacer algo de geoprocesamiento), sustituir los puntos suspensivos con algo como esto:
# app specific code (console)
print 'starting test'
layer1 = QgsVectorLayer('LineString', 'anewlayer', 'memory')
print layer.isValid()
QgsMapLayerRegistry.instance().addMapLayer(layer1, False)
print 'layer added to map layer registry'
aLayer = QgsMapLayerRegistry.instance().mapLayersByName('anewlayer')[0]
print aLayer.name()
Para trabajar con una o más capas de las que usted no tiene que añadir a la capa del mapa de registro, sólo se hace referencia a ellos por su nombre de variable (aquí layer1
).
Cuando se utiliza una interfaz gráfica de usuario, por ejemplo un asignador de ventana, esto sería una clase de python derivados de QMainWindow, se debe generalmente se diseñan con QtDesigner. Los puntos suspensivos tienen que ser reemplazados con código como en el siguiente ejemplo:
# app specific code (GUI)
app = QApplication(sys.argv)
# create gui window
window = Main()
window.show()
result = app.exec_()
app.deleteLater()
Para probar este método sin necesidad de tener una interfaz gráfica de usuario probar esta modificación de la versión de la consola:
# app specific code (GUI ready)
app = QApplication(sys.argv)
layer1 = QgsVectorLayer('LineString', 'anewlayer', 'memory')
QgsMapLayerRegistry.instance().addMapLayer(layer1, False)
aLayer = QgsMapLayerRegistry.instance().mapLayersByName('anewlayer')[0]
print aLayer.name()
app.qApp.quit()
result = app.exec_()
app.deleteLater()
Es casi la misma que la versión de la consola (como hay realmente ninguna gráfica de los objetos), pero respecto de la quit()
que detiene la aplicación.
Para iniciar la aplicación en Linux:
#!/bin/sh
export PYTHONPATH="/usr/share/qgis/python"
export LD_LIBRARY_PATH="/usr/lib64/qgis"
export QGIS_PREFIX="/usr"
python the_app.py
Y en un equipo Windows:
SET OSGEO4W_ROOT=D:\OSGeo4W64
SET QGISNAME=qgis
SET QGIS=%OSGEO4W_ROOT%\apps\%QGISNAME%
SET QGIS_PREFIX=%QGIS%
CALL %OSGEO4W_ROOT%\bin\o4w_env.bat
SET PATH=%PATH%;%QGIS%\bin
SET PYTHONPATH=%QGIS%\python;%PYTHONPATH%
python the_app.py