7 votos

Crear el punto medio de la capa de la línea

Disculpe si esto ya se ha preguntado antes y se me ha escapado con mis búsquedas. En QGIS estoy intentando crear una nueva capa de puntos basada en el punto medio de una capa de línea (y mantener todos los atributos de características en la tabla).

Por ejemplo, una característica de la línea se convierte en un punto, situado en el punto medio/central de la línea. Los puntos a las líneas sólo parecen funcionar en los nodos, y crear puntos a lo largo de las líneas sólo parece funcionar a distancias fijas?

7voto

Edward Thomson Puntos 131

Si python está bien para ti, puedes hacerlo fácilmente con ese fragmento de código. ¡Copia/pega este código en el editor de la consola de python, selecciona tu capa de líneas y ejecuta el script!

layer = iface.activeLayer()

temp = QgsVectorLayer("Point?crs=epsg:2154", "result", "memory")
temp.startEditing()

attrs = layer.dataProvider().fields().toList()
temp_prov = temp.dataProvider()
temp_prov.addAttributes(attrs)
temp.updateFields()

for elem in layer.getFeatures():
    feat = QgsFeature()
    geom = elem.geometry().interpolate(elem.geometry().length()/2)
    feat.setGeometry(geom)
    feat.setAttributes(elem.attributes())
    temp.addFeatures([feat])
    temp.updateExtents()

temp.commitChanges()
QgsMapLayerRegistry.instance().addMapLayer(temp)

Este código también se encarga de mantener los atributos de la línea Layer. Aquí está mi resultado en un conjunto de línea :

enter image description here

0 votos

Gracias por esto. Sólo para tener en cuenta que la última línea no funciona en QGIS 3, lo siguiente funciona en su lugar: QgsProject.instance().addMapLayer(temp) Crédito a Abhijit Gujar.

0 votos

@TeddyTedTed Tienes razón, ¡gracias por señalarlo!

0 votos

¿Guarda los datos de los nodos generados en la capa guardada? No puedo ver ningún dato

6voto

Mue Puntos 2469

Puedes utilizar la herramienta GDAL/OGR: Crear puntos a lo largo de las líneas .

Asegúrese de especificar 0.5 como la distancia. Así se calcula el fracción de la longitud total (no la distancia) ya que la herramienta incorpora el ST_Line_Interpolate_Point función.


Aquí está la configuración por defecto que se muestra para mí usando QGIS 2.18.2 para Win7 64-bit:

Default settings

Los atributos también se trasladan a la capa de puntos de salida.

1voto

Frank Lowney Puntos 11

Le sugiero que utilice el plugin MMQGIS que le permitirá encontrar el punto medio de la capa.

Esto proporciona un gran recurso para aprender más sobre el plugin y las características. Tendrás que añadir el plugin a través del repositorio en QGIS Describe el uso de MMQGIS, un conjunto de plugins de capas de mapas vectoriales en Python para Quantum GIS

0voto

jmayor Puntos 672

Utilizo una solución de dos pasos:

-Primero hago una densificación de conteo con un conteo igual a uno, esto añade un punto medio a cada segmento. -Luego extraigo nodos específicos, indicando el nodo número 1.

Utilizo esta solución porque mantengo no sólo el punto medio, también el ángulo del segmento viene como un atributo. Tengo un modelo con los dos pasos dentro, sólo tengo que insertar la capa de líneas

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X