Curso de PyQGIS

Seguimos impartiendo, en colaboración con GEOSPATIAL TRAINING, el curso de PyQGIS. El mismo está diseñado y pensado desde una perspectiva muy práctica y desde la experiencia. Aunque en el primer módulo se repasan los aspectos básicos del lenguaje Python es muy deseable que tengan experiencia por lo menos en algún lenguaje de programación para que puedan avanzar al ritmo de un módulo por semana. Es importante recalcar que aunque nos hemos basado para su creación en bibliografía existente, el proceso de adaptación a la nueva plataforma de QGIS 2.x (y próximamente de QGIS 3.0.0.) ha sido producto de un laborioso estudio a través de la red ya que en multitud de ocasiones está obsoleta, es errónea o las listas de discusión especializada sobre un tópico en particular permanecen sin respuestas útiles o pueden ser de difícil interpretación.


El curso ha sido diseñado para implementarse en el Sistema Operativo Windows en cuatro semanas y sus procedimientos y ejercicios se han probado íntegramente en Windows Seven y Windows 8 funcionando de manera aceptable. Se ha verificado que los algoritmos nativos de QGIS, SAGA y GRASS corren, en su mayoría, adecuadamente a través de Processing. El objetivo de las tres primeras semanas es que consoliden una base suficiente para que al finalizar la semana cuatro puedan desarrollar de manera independiente un plugin sencillo para QGIS.

En el vídeo siguiente se observa la ejecución del plugin correspondiente a la auto asignación de uno de los participantes de la última edición del Curso. Lo normal es que las tareas finales se propongan por parte del instructor para que no desborden la capacidad de un participante que apenas tiene una semana de experiencia en la producción de plugins. El plugin cuya ejecución se visualiza a continuación despliega en forma de lista, a través de una QTableWidget, todas las capas vectoriales presentes en la Map Legend de QGIS (ignorando las ráster) y las actualiza de manera dinámica a medida que se añaden o remueven capas. Después de seleccionar las de interés, las copia en el directorio escogido para tal efecto. El plugin ha sido creado de tal manera que exhibe las advertencias correspondientes que indican cualquier excepción al respecto.



Para finalizar, abajo les dejo el temario del curso y para cualquier duda sobre la inscripción agradezco pregunten a Alberto Santos (asantosestevez@gmail.com) representante de GEOSPATIAL TRAINING.ES.


Curso PyQGIS

    Módulo 1: Introducción a Python. 1. Qué es Python? 2. Entorno de Programación en Python. 3. Estructuras de Datos en Python. Listas. Tuplas. Interconversión de listas en tuplas y viceversa. Diccionarios (keys y values). 4. Strings, ranges, funciones y argumentos. 5. Introducción a PyQGIS. Convenciones usadas para los nombres de datos, atributos, métodos y clases. 6. Objetos de la Clase QgisInterface (iface); ventana principal de las aplicaciones de QGIS (Qgis App). Conversión de objetos iface en objetos de otras clases. 7. Instalación de QGIS 2.x. Definición del entorno de programación en PyQGIS. PYTHONPATH a los scripts de usuario. 8. Uso de la Python Console. Línea de comandos, ventana de resultados de ejecución y Editor. 9. Obtención de información sobre métodos de clase (uso de dir y help). Importación de módulos. 10. Descripción de las diferentes barras de herramientas y menús contextuales de la Python Console y el Editor (Open file, Save, Copy, Run Script, Object Inspector, etc). 11. Ajustes (settings) de la Python Console y el Editor. Uso del Editor para la ejecución de scripts. 12. Método get_patt (script de usuario) para explorar métodos de clase. 13. Ejecución de código a través de la línea de comandos.

    Módulo 2: Trabajando con archivos vectoriales. 1. Cargando archivos vectoriales a través de la Python Console. 2. Referencia a objetos mediante la clase QgisInterface (iface). Objetos de la clase QgsVectorLayer. Clase QgsMapLayerRegistry. 3. Métodos para añadir, remover y contar layers en el registro (‘addMapLayer’, ‘removeMapLayer’, ‘count’). 4. Iterador de rasgos (features) a través de la Clase QgsFeatureIterator (método ‘getFeature’ de QgsVectorLayer’). 5. Atributos, geometría e Ids. 6. Métodos de la clase QgsVectorLayer para la caracterización de vector layers (‘featureCount’, ‘pendingAllAttributesList’, ‘attributeDisplayName’, ‘fieldNameIndex’, ‘minimumValue’, ‘maximumValue’). 7. Habilitación del modo de edición y guardar cambios (‘startEditing’, ‘commitChanges’). 8. Métodos de QgsVectorLayer para la selección y borrado de rasgos (‘select’, ‘deleteSelectedFeatures’). 9. Métodos de QgsVectorLayer para la selección y borrado de atributos (‘deleteAttribute’). 10. Escribiendo shapefiles, KML, GeoJSON con métodos de la clase QgsVectorFileWriter. Symbolizing Vector layers a través de las clases QgsSingleSymbolRendererV2 y QgsMarkerSymbolV2. 11. Usando operaciones de geometría (clases QgsFeature y QgsGeometry). 12. Creación de capas de punto, línea y polígono. Uso de Uniform Resource Identifier (URI) y ‘memory layers’. 13. Transformación de coordenadas con Vector Layers (clases QgsCoordinateReferenceSystem y QgsCoordinateTransform).

    Módulo 3: Trabajando con archivos raster. 1. Cargando archivos ráster a través de la Python Console. 2. Referencia a objetos mediante la clase QgisInterface (iface). 3. Objetos de la clase QgsRasterLayer. 4. Métodos de QgsRasterLayer para convertirlos en objetos de otras clases. Datos y atributos definidos en QgsRasterLayer. 5. Métodos de QgsRasterLayer para la caracterización de ráster layers (‘width’, ‘height’, ‘bandCount’, ‘rasterType’, rasterUnitsPerPixelX, rasterUnitsPerPixelY, ‘name’, ‘providerType’; entre otros). 6. Conversión de objetos QgsRasterLayers en objetos de QgsCoordinateReferenceSystem. 7. Método ‘crs’. Métodos para la caracterización y transferencia de CRS (Coordinate Reference System) a otros objetos de QgsRasterLayers. 8. Conversión de objetos QgsRasterLayer en objetos de la clase QgsRectangle con el método ‘extent’. 9. Caracterización indirecta de Raster Layers mediante métodos de QgsRectangle, QgsPoint y QgsDistanceArea (vértice mínimo, vértice máximo, centroide, distancias de lados y diagonales). 10. Conversión de objetos ‘singlebandgray’ y ‘multibandcolor’ en objetos de las clases QgsSingleBandGrayRenderer y QgsMultiBandColorRenderer con el método ‘renderer’. Caracterización de este tipo de objetos (‘type’, ‘dataType’, ‘usesBand’, ‘opacity’). 11. Modificación de contraste con la clase QgsContrastEnhancement: ‘No Enhancement’, ‘Stretch To Minimum Maximum’, ‘Clip To Minimum Maximum’ (ejecución de código Python a través de SEXTANTE Commander). 12. Rampas de Color. Creación de objetos ‘singlebandpseudocolor’ (QgsRasterLayer) a través de las Clases QgsColorRampShader, QgsRasterShader y QgsSingleBandPseudoColorRenderer. 13. Obtención de las estadísticas del ráster a través de objetos de la clase QgsRasterDataProvider y QgsRasterBandStats. 14. Consulta de valores de un ráster (muestreo ráster) mediante el método ‘identify’ (QgsDataProvider).

    Módulo 4: PyQt. 1. Definición de Qt. 2. PyQt: Qt + Python. 3. PyQt - Interacción con el usuario. QInputDialog y QMessageBox. 4. PyQt – Creación de ventana y botón 5. Presentación y uso de QtDesigner. 6. Desarrollando un plugin para QGIS mediante 'Plugin Builder'. 7. Uso de QgsVectorLayerComboBox y filtros de QgsMapLayerProxyModel. 8. QLineEdit para la introducción de datos (texto, numéricos) y casting de tipos. 9. Despliegue de resultados en objetos QTextBrowser. Uso de QCheckBox. 10. Manejo de excepciones con bloques try...except y con tipos enumerados de la clase QGis. 11. Sugerencias para la instanciación de objetos Qt y PyQGIS y creación de funciones. 12. Estudio de casos seleccionados (plugins): "Where Am I", "Save Attibutes as CSV", "Estadisticas y otros parámetros de un ráster", "Get Pattern", "Random Points", "Random Raster", "Points Raster Value", "vector select by point", "Get Raster Value".

No hay comentarios: