15 votos

¿Cómo se conectan las líneas en una red?

Tengo un shapefile de líneas y otro de polígonos. Cuando dos o más líneas se cruzan con un polígono deberían estar conectadas (encajadas), pero a veces durante la digitalización manual esto no ocurre. Necesito encontrar y corregir todos estos errores. He utilizado v.clean de GRASS GIS y automáticamente se desconectaron muchos vértices, lo cual fue bueno, pero algunas de esas líneas desconectadas están más allá de la tolerancia que di y si aumento demasiado la tolerancia empieza a generar otro tipo de errores.

enter image description here

¿Alguna idea?

46voto

Hugo Puntos 2156

¡Interesante problema! No se me ocurre una forma de realizar el ajuste automáticamente, pero aquí hay un paso para identificar las áreas que al menos hay que mirar para corregirlas manualmente:

  • Añade una nueva columna a tu capa de líneas, y ponla igual a '1' para todas las características.
  • En Vector > Unir atributos por ubicación, establezca su capa de destino como su capa de polígono, y la capa de línea como la capa de unión. A continuación, seleccione "Tomar resumen de características de intersección" y haga clic en "Suma". Indique una ubicación para el archivo de salida, y "Aceptar".
  • El archivo poligonal resultante será su capa poligonal original, pero con algunos campos adicionales. El campo SUM es lo que quieres; cuando es 2, significa que el entonces puedes hacer zoom hasta él y ajustar manualmente las características.

Dependiendo de la situación (número de características, número de los que están en esta situación frente a los que no lo están, etc.) esto puede ahorrarte algo de tiempo.

EDIT: También puede utilizar los polígonos con una suma de 2 para crear un subconjunto de sus capas de línea, a continuación, ejecute la limpieza en los que con una mayor tolerancia a fin de no cambiar las otras características.

7voto

Vlado Klimovský Puntos 196

Mi comprensión del problema es la siguiente:

Si un punto final de una polilínea intersecta un polígono, entonces la polilínea necesita ser conectada (añadiendo o ajustando vértices) a todos los puntos finales de polilíneas adicionales que intersecten el mismo polígono.

Algunos puntos finales de las polilíneas no se cruzan con un polígono, ya que son subgiros, pero éstos deben conectarse como en el caso anterior.

Esta respuesta se basa en algunas ya dadas, pero no es completa, ya que no conozco todos los comandos de QGIS.

  1. Para cada polilínea, extraiga las coordenadas del punto final ( Vector > Herramientas de geometría > Extraer nodos y luego ordenar) y calcular si o no están dentro de un polígono ( Vector > Herramientas de investigación > Seleccionar por ubicación ).

  2. Para los puntos finales de la polilínea que están dentro de un polígono, extienda ese extremo de la polilínea hasta el centro del polígono (extraiga el centro del polígono centro del polígono utilizando Vectorial > Herramientas de geometría > Centroide del polígono No estoy seguro sobre la modificación de la línea, aunque podrías trabajar con los vértices de la polilínea como puntos y añadir otros con la numeración adecuada antes de reconstruir la polilínea modificada utilizando el plugin Points to Paths)

    Usted menciona que puede haber situaciones en las que algunas o todas las líneas han sido correctamente conectadas, en estas situaciones (identificables por los puntos finales coincidentes de las polilíneas) usted podría elegir usar la ubicación del punto final coincidente en lugar del centroide del polígono como el punto para extender cualquier polilínea adicional no conectada para ese polígono.

  3. Para los puntos finales de la polilínea que caen fuera de un polígono, extienda ese extremo de la polilínea hasta el centro del polígono más cercano. De nuevo, no estoy No estoy seguro de cómo calcular el polígono más cercano, aunque el módulo v.distance de GRASS parece hacer el truco.

2voto

Ricardo Reyes Puntos 3428

Creo que podría hacerlo con algún algoritmo personalizado... No estoy seguro de cómo te gustaría implementarlo, pero creo que funcionaría.

Para cada línea, para cada punto final, haz un punto en el polígono para el vértice en el punto final y enlázalo al polígono.

Entonces, para cada polígono, si hay más de un punto final de línea vinculado, los fusionaría (movería) todos a la coordenada media, o al centroide del polígono quizás.

Eso es bastante sencillo. Pero no está disponible en los operadores estándar. Creo que se podría hacer en ArcGIS con un día de tiempo de codificación.

Otra nota, en la imagen que has puesto, una de las líneas está fuera del polígono... Podrías manejar esto de una manera más simple, simplemente encontrando el vértice más cercano a cada vértice final, asegurándote de que la cercanía es mutua (creo que es necesario, para que tengas vértices que se ajusten de una sola manera), entonces puedes moverlos a la posición promedio de los vértices.

0voto

parilogic Puntos 106

Una vez que tengas los puntos finales, yo haría un diagrama de araña tomando los centroides de los polígonos como instalaciones y los puntos finales de las líneas cercanas como objetivos. Realizas el análisis del diagrama de araña y como resultado tendrías un segmento para cada polilínea.

Esto funcionaría incluso para los que terminan fuera de los polígonos. Cómo hacer eso en QGIS no lo sé, lo siento, pero lo haría en los productos de ESRI que conozco bien. Eso es lo que entendí cuando whuber, en la primera respuesta, sugirió construir una "estrella".

Estoy seguro de que hay gente aquí que sabe cómo realizar este tipo de análisis en QGIS

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