Tengo una capa MultiLineStringZM en una base de datos sqlite, y estoy tratando de visualizar las medidas o los valores m en los vértices. He intentado buscar información sobre cómo hacer esto en QGIS, y todo lo que he podido recopilar es que esto no es posible directamente desde la capa de cadena lineal y que los puntos deben extraerse en una capa separada.
He usado Vector
-> Geometry Tools
-> Extract nodes
para crear una capa multipunto que representa los vértices de mi capa multilínea, pero el proceso pierde los valores m de los vértices. ¿Necesito preservar los valores m guardando el valor m como un atributo del punto o algo más?
Internamente tenemos una herramienta de línea de comando que convierte las cadenas de líneas en un archivo de forma de punto con los valores m almacenados como un atributo en cada punto, y lo he usado para verificar que hay valores m asignados a los vértices, y podría usar eso si tengo que hacerlo, pero si es posible, sería bueno si esto se pudiera hacer directamente dentro de QGIS.
EDITAR : repitiendo lo que he dicho anteriormente, pero volviendo a enfatizar el hecho de que tenemos una herramienta de línea de comandos que puede lograr los resultados que estoy buscando que usa las bibliotecas GDAL, por lo que una solución que muestra solo una respuesta parcial en PyQGIS no es la respuesta que estoy buscando. Estoy buscando una herramienta integrada, un complemento listo para QGIS o un script completo que pueda extraer (no crear / generar) y visualizar valores m de una geometría MultiLineStringZM o LineStringZM.
fuente
Respuestas:
Por lo que puedo encontrar, no parece haber una solución existente para esta situación exacta, pero todavía quería poder hacer esto en QGIS, así que me lancé a las secuencias de comandos de Python.
Puede encontrar una guía para escribir algoritmos de procesamiento aquí https://docs.qgis.org/2.18/en/docs/user_manual/processing/scripts.html
Para usar este código, abra la caja de herramientas Procesamiento, luego expanda Scripts, luego expanda Herramientas. Seleccione "Crear nuevo script" y copie y pegue el código a continuación en la ventana del script (tenga cuidado al copiar y pegar el código de Python ya que el espacio en blanco es sintácticamente significativo. Si tiene problemas, coloque el código en un editor de texto que muestre espacios en blanco y asegúrese de que copió correctamente). Guárdelo donde quiera y hay un botón de ejecutar script en la parte superior de la ventana. Después de guardarlo, puede "Agregar secuencia de comandos del archivo" y tener la secuencia de comandos permanentemente en "Secuencias de comandos de usuario".
Cuando aparezca la ventana de procesamiento, seleccione la capa que contiene la geometría del vector y seleccione ejecutar. La secuencia de comandos se comporta de la misma manera que "Extraer nodos", excepto que agrega una columna llamada
MValues
yZValues
dependiendo de lo que esté disponible en la geometría de entrada.fuente
Con QGIS 3.0 o más reciente, esta tarea es trivial. En el "Cuadro de herramientas de procesamiento" (Abrir con ctrl + alt + to Procesamiento -> Cuadro de herramientas) busque "Extraer vértices" y ejecute ese algoritmo.
Seleccione su geometría de línea o polígono M o ZM como la capa de entrada y ejecútelo.
Los vértices se extraerán con los valores M y Z intactos dependiendo de lo que esté en la geometría original.
Si el valor M es necesario como un campo en la tabla de atributos, entonces la calculadora de campo se puede usar con una expresión como
m($geometry)
fuente