Tengo un archivo shape de la línea central de la carretera que tiene carreteras divididas en cada intersección. Sin embargo, me gustaría unir LINESTRING que tienen un conjunto común de atributos en un solo LINESTRING. Mientras el nombre, el límite de velocidad, etc., no cambien, quiero fusionarlos. Esto es para una eventual fusión en OpenStreetMap.
El software ArcGIS for Desktop de Esri parece permitir esto con el comando Disolver y la opción UNSPLIT_LINES.
También encontré un comando Disolver en QGIS, pero parece que solo funciona en polígonos y campos únicos.
Suponiendo que no exista nada para QGIS, ¿alguien sabe cómo hacerlo en PostGIS o GRASS?
postgis
openstreetmap
grass
dissolve
joshdoe
fuente
fuente
Respuestas:
Interesante pregunta. No me considero un gurú de PostGIS, pero jugué con su problema y se me ocurrió la siguiente consulta que disuelve los
LINESTRING
registros de autopistas enMULTILINESTRING
registros cuando tienen valores comunes en múltiples campos (en mi conjunto de datos, hice coincidir los camposname
ystate
). Usé OGR para empujar un archivo de formas de autopistas (renombrado a ushwys) en PostGREsql; entonces mi campo de geometría se llamawkb_geometry
. Intente hackear esta consulta para acomodar sus datos y condiciones de campo:Si esto funciona, puede usar ogr2ogr para realizar esta consulta y exportar los resultados a cualquier formato vectorial que prefiera, como shapefile, GML, CSV u otros. Para obtener información sobre cómo llamar consultas SQL desde ogr2ogr, consulte la documentación de SQL de OGR .
Como referencia, revisé la instrucción PostGIS ST_Collect , así como este sitio que muestra la agrupación en múltiples campos.
Si encuentra que las redacciones de esta consulta no funcionan para usted, hágamelo saber y responderé para que no se demore y confunda a las personas.
PD: si no está familiarizado con el uso de ogr2ogr para insertar geodatos en PostGIS, utilicé el siguiente script ogr2ogr para realizar mi importación de datos ( tenga cuidado de copiar desde la web y pegar directamente en la ventana de comandos de ogr2ogr, ya que encontré el formato de página introduce saltos de línea y sustituciones de fuente / carácter para comillas dobles que rompen el guión ogr ):
[Actualizar]
Quería ver cómo se "veía" esto en QGIS después de ejecutar esa consulta, por lo que modifiqué la consulta para aplicar esta
WHERE
cláusula (que me da todas las variantes de US Highway 65 en el estado de Missouri):Luego utilicé QGIS y el complemento QuickWKT para visualizar los ocho (8) de mis
MULTILINESTRING
registros de carreteras resultantes . Como puede ver en la captura de pantalla, los resultados finales toman la autopista 65 desde la frontera norte de Missoui con Iowa hasta su frontera sur con Arkansas:Para mí, esta visualización demuestra que mi consulta no produjo ninguna duplicación o eliminación inesperada de características. Entonces, me pregunté "ok, la disolución devolvió ocho características, pero ¿cuántas características en la tabla original realmente representan la autopista 65 en Missouri?" Mi siguiente consulta respondió a esa pregunta. Parece que el conjunto de datos original usa treinta y ocho (38) características para representar la autopista 65 en Missouri:
En el análisis final, la consulta redujo treinta y ocho (38) características a ocho (8) características que compartían valores en los campos de nombre y estado. En este punto, estoy relativamente seguro de que esta consulta es útil y apropiada para disolver geometrías de una sola parte en geometrías multiparte cuando la tarea de disolución necesita considerar múltiples campos.
Salud. :)
fuente
En PostGIS, hay una función dedicada para fusionar líneas
http://www.postgis.org/docs/ST_LineMerge.html
fuente
En GRASS GIS, eche un vistazo a v.build.polylines
fuente