La sinuosidad de una línea se define como el cociente de su distancia total y la distancia euclidiana entre su punto de comienzo y su punto final; tal como se ejemplifica aquí. En el link anterior también se señala como soslayar el inconveniente de acceder al resultado de un commando de GRASS (v.to.db; option=sinuous), imposible directamente a través de Processing, pero si a través del 'fieldcalculator' de QGIS (y por ende de PyQGIS Processing).
El código que se presenta a continuación fue ligeramente modificado para permitir la carga directa de la capa resultante en un sólo paso mediante el método 'runandload'.1 2 3 4 5 6 7 8 9 10 11 | import processing lines = iface.activeLayer() processing.runandload('qgis:fieldcalculator', {"INPUT_LAYER": lines, "FIELD_NAME": "sinuosity", "FIELD_TYPE": 0, "FORMULA": '$length / sqrt((xat(-1) - xat(0))^2 + (yat(-1) - yat(0))^2)', "NEW_FIELD": True, "OUTPUT_LAYER": None}) |
Después de ejecutado en la Python Console de QGIS, con la line layer de la imagen siguiente, se obtiene el resultado a continuación:
Los rasgos seleccionados en la tabla de atributos permiten apreciar como varia la sinuosidad en función de cuan recta es la línea y cuan juntos están sus extremos.
No hay comentarios:
Publicar un comentario