Estoy enfrentando un problema en ArcGIS. Yo trabajo en una base de datos de navegación. En nuestra base de datos, las calles de un solo carril están representadas por una sola Línea, mientras que una calle de varios carriles (calle con divisor en el centro) está representada por dos líneas paralelas (líneas de color rojo en la imagen).
Tengo un archivo de forma de puntos con algunos puntos que caen dentro de una calle de varios carriles y otros afuera.
Quiero crear un script de ArcPy que encuentre los puntos que se encuentran dentro de las calles de varios carriles. es decir, entre estas líneas paralelas (marcadas en la imagen).
No sé cómo lograr esto, ¿alguien puede ayudarme?
Hice algo de ejercicio y descubrí que crear un búfer en un lado de la línea puede crear dentro del polígono Multi-Lane (se muestra en la imagen).
pero ahora el problema es que el polígono realmente cruza la línea (es decir, se superpone al límite de varios carriles). entonces atrapará puntos innecesarios. ¿Hay alguna forma de alinear este polígono con la línea de la calle?
Nota: integrar no funcionará aquí, porque también mueve la línea de la calle. Solo necesito alinear el polígono a lo largo de la línea de la calle.
fuente
Respuestas:
Intentaría debajo del algoritmo arcpy (¡incluso manual!)
fuente
Yo diría que este es un ejercicio geométrico.
CÓDIGO PSEUDO:
Como se puede ver, hay casos especiales: puntos negros dentro de un círculo:
Todos los casos anteriores son muy poco probables, sin embargo, parece que la opción más segura es trabajar solo con carreteras de 2 líneas, es decir, exportarlas a una clase de entidad separada. El caso 3 es divertido, lo dejaremos al azar, porque la distancia más corta a la línea nunca es cero verdadero, por lo tanto, se puede encontrar la dirección 'opuesta' del rayo que conecta 2 puntos.
Implementación de Python:
Hay otra posible solución quizás más elegante. Implica triangulación. Avíseme si le interesa y actualizaré mi respuesta
fuente
Como las calles son paralelas, supuse que se crearon con la
Copy Parallel
herramienta en la barra de herramientas Editar, haciendo que el par de líneas tenga la misma dirección. Luego podemos iterar sobre las coordenadas de la primera línea y agregarlas a un polígono y luego iterar sobre el reverso de la segunda línea. Definitivamente hay una mejor manera de acercarse a los pares de líneas de agarre; El enfoque OID funciona, pero no es muy bonito.A partir de ahí, es una llamada a Intersecar / Seleccionar capa por ubicación / lo que tienes. Tenga en cuenta que el
S
polígono con forma no es perfecto ya que lo dibujé a mano alzada y hay algunos arcos queexplode_to_points
no se manejan correctamente. Solo correDensify
o equivalente.fuente
m
resolución, multiparte, etc.). No sé cómo características como esta están realmente representadas en una red.