Las estimaciones de áreas 3D pasan por generar puntos triangulados 3D utilizando como base un modelo digital de elevación. Una vez generados los puntos 3D, se puede usar álgebra lineal para determinar de manera rápida el área del triángulo 3D muestrando la componente z de los puntos a partir del ráster. El área 2D sería entonces la proyección del tríangulo 3D en el plano xy.
lunes, 30 de agosto de 2021
miércoles, 6 de enero de 2021
Cómo desplegar un QProgressDialog object con PyQGIS 3
Los objetos del tipo QProgressDialog permiten mostrar en tiempo real el desarrollo de un proceso y observar si éste se está desarrollando con normalidad o se presenta algún tipo de "retraso" que amerita ser corregido. El código a continuación despliega una serie de tres QProgressDialog cuya visualización se hace siempre "On Top" y donde el método 'setWindowModality' está activado con Qt.WindowModal. Si ésto último no se realiza el despliegue de la QProgressDialog parece ejecutarse como si estuviese "congelada".
domingo, 27 de diciembre de 2020
Cómo producir un plugin plantilla tipo botón checkeable para PyQGIS 3
En esta respuesta de gis.stackexchange.com se propone un plugin tipo botón checkeable con la antigua versión de QGIS 2 y que permite desplegar valores de ráster como tooltips. El comportamiento de este tipo de plugins no está en la oferta de Plugin Builder 3 por lo cual sería útil tenerlo disponible como plantilla. La importancia de este tipo de plugins radica en que sólo nos interesa que al hacer click en él se prepare para iniciar una acción y no se despliegue ningún tipo adicional de QDialog.
viernes, 25 de diciembre de 2020
miércoles, 23 de diciembre de 2020
Producir círculos por dragado del Map Canvas con PyQGIS 3
En el post anterior se consideró la produción de rectángulos por dragado del Map Canvas con PyQGIS 3. La geometría de los rectángulos se colocaba de manera interactiva en las rubber bands durante el dragado de los mismos y, una vez liberado el cursor, la geometría del rectángulo final se pasaba como feature a la memory layer correspondiente.
martes, 22 de diciembre de 2020
Producir rectángulos por dragado del Map Canvas con PyQGIS 3
lunes, 21 de diciembre de 2020
Cómo obtener la proyección a partir de la Status Bar de QGIS 3 mediante PyQGIS?
La serie de comandos siguiente, ejecutados en la Python Console de QGIS, permitirá definir y acceder a los metodos de la clase correspondiente a la Status Bar.
lunes, 3 de agosto de 2020
domingo, 2 de agosto de 2020
Cortando una rejilla (grid) hexagonal creada con PyQGIS 3
En el post anterior se consideró la creación de una rejilla hexagonal. Esta contenía unos “salientes” laterales y en las partes superior e inferior de la rejilla. Además, el punto de referencia usado para su confección luce desplazado por la necesidad de encajar las filas de la manera adecuada.
sábado, 1 de agosto de 2020
Cómo producir rejillas (grid) hexagonales mediante PyQGIS 3
En un post anterior se introdujo un código para producir rejillas hexagonales mediante la versión previa de PyQGIS, es decir, con Python 2. Aunque las diferencias no son muchas, puede ser abrumador tratar de hacerlo funcionar si no nos familiarizamos previamente con las nuevas clases de PyQGIS 3.
domingo, 14 de junio de 2020
Conectando multipolígonos con líneas utilizando la distancia más corta como parámetro con PyQGIS 3
El ejemplo que se refiere a continuación permite conectar multipolígonos con líneas utilizando la distancia más corta como parámetro con PyQGIS 3. Es la adaptación de un código que se realizó con anterioridad con PyQGIS 2. El código con PyQGIS 3 se presenta a continuación:
sábado, 13 de junio de 2020
Dividiendo polígonos irregulares en dos partes con diferentes proporciones y con diferente orientación de la línea de corte con PyQGIS
Un requerimiento común en las opciones de geoproceso es la división de polígonos irregulares en diferentes proporciones y con diferente orientación de la línea de corte. Aunque parece difícil, la opción más sencilla para realizar ésto es mediante la bounding box del polígono rotado por el ángulo correspondiente a la línea de corte para la proporción deseada.
sábado, 25 de enero de 2020
Cómo producir buffers, alrededor de puntos, con diferente número de lados en PyQGIS 3
En un post anterior se consideró la producción de buffers, alrededor de puntos, con diferente número de lados en la antigua versión de QGIS. En éste toca modificar el script allí propuesto para que pueda funcionar con PyQGIS 3. Las modificaciones incluyen un sólo punto con proyección EPSG 32612 y una distancia buffer de 1000 metros. Los métodos de clase ahora empleados y que han cambiado con respecto a la versión anterior corresponden a QgsGeometry, QgsPointXY y QgsQgsProject. El script propuesto se encuentra a continuación:
martes, 21 de enero de 2020
Clase plantilla con QDialog para usar segundo tab de un QTabWidget como contenedor de un QTableWidget para desplegar nombres de campos de capas vectoriales en QGIS 3
En el post anterior se propuso una clase plantilla con QDialog para usar objetos del tipo QTabWidget como contenedores de QTableWidget en QGIS 3. Se usó el primer tab para desplegar una tabla con n filas y 2 columnas; donde n corresponde al número de capas (vectoriales o ráster) que se encuentran visualizadas en el Map Canvas.
domingo, 19 de enero de 2020
Clase plantilla con QDialog para usar objetos del tipo QTabWidget como contenedores de QTableWidget en QGIS 3
En el post anterior se propuso una clase plantilla con QDialog para crear objetos del tipo QTabWidget en QGIS 3. En éste se va a usar el primer tab como contenedor de un objeto QTableWidget. La tabla se va a desplegar con n filas y 2 columnas; donde n corresponde al número de capas (vectoriales o ráster) que se encuentran visualizadas en el Map Canvas. La primera columna ('Layer') desplegará el nombre de la capa y la segunda ('Layer type') el tipo de capa (vectorial o ráster). Si el número de capas varía una función conectará automáticamente para dar cuenta de estos cambios.
sábado, 18 de enero de 2020
Clase plantilla con QDialog para crear objetos del tipo QTabWidget en QGIS 3
En este post se va a continuar con la clase plantilla con QDialog pero, en este caso, para crear objetos del tipo QTabWidget los cuales, a su vez, contienen tabs (objetos del tipo QWidgets). Estos últimos también pueden ser contenedores de objetos QLabel, QTableWidget, imágenes, etcetera. En el código a continuación se presenta un ejemplo sencillo de como implementar los QTabWidget con tres tabs pero sin que actuen como contenedores.
jueves, 16 de enero de 2020
Clase plantilla con QDialog para crear círculos
En el post anterior se introdujo una Clase plantilla con QDialog para crear puntos (como memory layers) a partir de las coordenadas del Map Canvas de QGIS obtenidas con un click del ratón. En este post se van a aprovechar estas coordenadas para crear un buffer circular, dado el radio, que se pide a través de un QInputDialog que se genera en la misma función de creación del buffer circular.
domingo, 12 de enero de 2020
Clase plantilla con QDialog para crear puntos
En el post anterior se introdujo una Clase plantilla con QDialog para visualizar las coordenadas del Map Canvas de QGIS con un click del ratón. En este post se va a aprovechar la generación de estas coordenadas para producir memory layers de puntos con una función especial conectada a un QPushButton.
Clase plantilla con QDialog para visualizar las coordenadas del Map Canvas de QGIS con un click del ratón
En posts anteriores (1, 2, 3) se hizo referencia a la obtención de las coordenadas del Map Canvas de QGIS con un click del ratón mediante la clase QgsMapToolEmitPoint de PyQGIS. En esta nueva entrega vamos a emplear la simplificación producto de la utilización de una clase plantilla con QDialog para el mismo fin.
sábado, 11 de enero de 2020
Plantilla para visualizar elementos de un QDialog con PyQGIS
Aunque con la Python Console es posible visualizar de manera independiente muchos de los diferentes elementos Qt presentes en QGIS, con muy pocas líneas de código también se puede crear una clase "plantilla" para incluir varios de ellos y visualizarlos a todos de manera simultánea antes de crear un plugin. La clase Dlg que se va a proponer a continuación emplea un objeto QDialog al cual se le incorpora una QgsComboBox y una QListWidget.