2012-03-17 26 views
5

Tengo un mapa que he digitalizado y convertido a una capa vectorial (solo los ríos). El problema es que la vectorización ha producido una gran cantidad de segmentos para cada río, que se muestran como características diferentes (cada uno puede tener múltiples segmentos de línea recta, pero no cubren ríos enteros). Lo que estoy buscando es una herramienta para fusionar en una característica (una polilínea, supongo) todos los segmentos cuyos extremos están dentro de una distancia determinada. Estoy usando QGis y el complemento GRASS. He intentado v.clean.snap, v.build.polylines, pero todavía no logré fusionar realmente las líneas. ¡Cualquier ayuda será muy apreciada!Unir múltiples segmentos de línea en una línea - GIS

+2

¿Cada uno de sus ríos tiene una identificación única que es común? – Simbamangu

+0

Re retrocedió las ediciones a Q: "merge" y "groub-by" parecen ediciones menores y tangenciales al título de la pregunta cuando el original era adecuado y suficiente. –

Respuesta

3

Sugeriría seleccionar manualmente las partes de línea y luego usar la herramienta "fusionar" (ubicada en la barra de herramientas de edición avanzada).

También puede ser que desee hacer tales preguntas sobre al http://gis.stackexchange.com

+1

Gracias, pero tengo unos cientos de situaciones así, y debo repetir para 133 mapas ...... Supongo que realmente necesito obtener un complemento para esto. ¿Alguna sugerencia donde podría empezar a buscar? – LittleFish

-3

Puede utilizar el "Disolver" herramienta (ARC Toolbox). Esto los fusionará a todos en un segmento.

Luego puede exportar los nodos (solo regular), siendo estos los puntos de intersección.

Luego puede dividir la función de línea disuelta con los nodos. Esto al menos le proporcionará una división de características vectoriales solo en los puntos de intersección.

Al menos está un paso más allá.

+2

¿por qué TODOS LOS MAYÚSCULAS? es difícil leer – dove

+1

OP preguntó por la solución QGIS y parece que se está refiriendo a ArcGIS? – radek

4

Puede hacerlo utilizando la biblioteca GEOS en su lenguaje de programación y quizás también en la línea de comandos. En mi caso, lo estaba haciendo en I, utilizando rgeos biblioteca:

require(rgdal) 
require(rgeos) 
lines <- readOGR("f:/dir", "itineraris") 
# grouping line features by lines$ITINERARI 
lines2 <- gLineMerge(lines, byid = lines$ITINERARI, id = lines$ITINERARI) 
writeOGR(lines2, "f:/dir", "itineraris_merged", driver="ESRI Shapefile") 

Tenga cuidado: a partir de la nota en el documentation"específicamente se une segmentos de línea con la intersección de puntos finales" parece que las características de línea debe ser consecutiva; sin embargo, no está claro si esto también se aplica al caso cuando se combina por ID.

1

Para cualquier otra persona tropezar con esta pregunta:

Usted puede utilizar el plugin Roadgraph (ruta más corta) o el guión PointsToRoute. Elija puntos en cada extremo (o en el caso de Points2Route agregue puntos extra para especificar desde múltiples rutas) y luego exporte a su propia capa.

En lo que respecta a los 133 mapas. He modificado el script PointsToRoute para una situación similar de trabajo pesado para pasar automáticamente por una capa de líneas y encontrar rutas entre sus puntos finales. Lo limpiaré y veré si puedo publicarlo en github pronto.

PointsToRoute: https://github.com/anitagraser/QGIS-Processing-tools/blob/master/1.1/scripts/points_to_route.py

ShortestPath (Roadgraph): Esto es posible por el gestor de plugins de QGIS. Tenga en cuenta que en las versiones más recientes de QGIS está configurado por el menú Vector->RoadGraph -> Configuración a pesar de que el complemento se refiere a sí mismo como "Ruta más corta".

1

Una respuesta muy tarde de que podría ser útil para otras personas:

que enfrentan el mismo problema y he desarrollado un plugin de QGIS para resolverlo. Combina automáticamente múltiples líneas conectadas (es decirlíneas que comparten un punto final) en un conjunto más pequeño de líneas más largas. El tipo de capa de salida es Line, no PolyLine. La fusión puede basarse en uno de estos dos criterios:

  • Longitud: un segmento se fusiona con su vecino más largo.
  • Alineación: un segmento se fusiona con su vecino mejor alineado. Creo que este criterio es el más adecuado para una red fluvial.

Este plugin se llama MergeLines (full documentation here), se puede encontrar en el repositorio público de QGIS. El trabajo todavía está en progreso, no dude en sugerir nuevas funcionalidades.

Cuestiones relacionadas