¿Cómo puedo fusionar / contraer líneas de carreteras cercanas y paralelas (por ejemplo, una calzada doble) en una sola línea?

22

Tengo un shapefile de OSM que contiene todas las carreteras dentro de una ciudad. Las carreteras más grandes (como las autovías) parecen tener 2 líneas paralelas. Me gustaría contraer / combinarlos en 1 línea para poder exportarlos y renderizarlos bien en una aplicación 3D externa (2 carreteras superpuestas serán complicadas y se verán raras en 3D).

¿Cómo puedo lograr esto con QGIS o PostGIS? No estoy preocupado por una pequeña pérdida de precisión (a unos pocos metros) y me gustaría que la única línea resultante estuviera entre (idealmente el centro de) las líneas actuales y paralelas.

Gracias.

(aquí hay un ejemplo de las dos líneas de carreteras que quiero combinar)

    
pregunta Robin Hawkes 12.02.2013 - 13:22

2 respuestas

3

ESRI tiene una herramienta de colapso de doble calzada a línea central. Puede obtener una versión barata para usar con OSM. De lo contrario, podría seleccionar características y guardarlas como una nueva capa. Eliminar seleccionado de la capa que utilizó para exportar. Función de búfer dentro del alcance de un lado de la calzada que incluye el segundo carril. Combine shapefile con original, conecte cualquier topología rota.

Si puede codificar y / o hacer una secuencia de comandos, puede promediar una línea central entre carriles en un nodo si se realiza una concordancia de nodos y generar una línea central de manera programática y luego eliminar programáticamente las funciones seleccionadas utilizadas para el proceso de producción, verificar y corregir la topología dañada y has terminado.

Encontré un ejemplo de código arcpy que estoy incluyendo, cómo encontrar el enlace a continuación en los comentarios.

atribuido a ESRI ARCGis Help

# Name: CollapseDualLinesToCenterline_Example.py
# Description: Creates street centerlines from a street casing coverage.
# Requirements: ArcInfo Workstation

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Set local variables
inCover = "streets"
outCover = "C:/output/centerlines"
maximumWidth = 50

# Execute CollapseDualLinesToCenterline
arcpy.CollapseDualLinesToCenterline_arc(inCover, outCover, maximumWidth, "")
    
respondido por el lewis 12.02.2013 - 17:22
2

Puedes intentar usar el Skeletron de Mike Migurski . Es una herramienta de código abierto que usa para cosas como su estilo de mapa de Terreno.

    
respondido por el Sarge 22.02.2013 - 02:03

Lea otras preguntas en las etiquetas