Tengo un conjunto de polígonos como este:
El objetivo general es averiguar qué parte del perímetro de cada polígono limita con cada uno de los otros polígonos, incluidos los polígonos de enfrente . En otras palabras, quiero encontrar polígonos "limítrofes", no sólo los que comparten una arista, sino también los que "limitan" entre sí al otro lado de la calle. Parece un problema clásico de amortiguación, pero las calles tienen longitudes variables, así que no creo que una simple amortiguación sea suficiente. He encontrado un par de maneras de formular este problema, pero cada una tiene sus propios defectos:
- Crear un "diagrama de voronoi", pero con polígonos como entradas. Esto puede hacerse con la herramienta de asignación euclidiana de ArcGIS, pero a) requiere la conversión a formato ráster y luego la vuelta, lo que requiere demasiado tiempo de procesamiento para todo el conjunto de datos (un gran condado metropolitano); y b) no devuelve exactamente lo que quiero. Por ejemplo, véase más abajo, después de ejecutar la asignación euclidiana y convertir el resultado de nuevo a polígonos:
Esto me da lo que quiero en términos de encontrar los polígonos "al otro lado de la calle", pero observe cómo los polígonos en el mismo lado de la calle tienen ahora límites artificialmente más largos. Esto es importante porque necesito saber la fracción del perímetro que toca cada polígono.
-
Buffer cada polígono sólo en el espacio vacío. Sospecho que esto sería más factible computacionalmente si existiera tal herramienta, pero a) no parece que exista tal herramienta; y b) llevaría al mismo resultado defectuoso que antes.
-
Convierte los polígonos en líneas y luego en puntos, y luego ejecuta un diagrama de Voronoi. Este enfoque probablemente podría funcionar, pero todavía no he encontrado un flujo de trabajo que me da lo que quiero. También sería sólo una aproximación, pero estaría dispuesto a aceptarlo. También habría un gran número de puntos.
-
Para cada polígono, encuentre el polígono más cercano en todas las direcciones. Básicamente, para cada arista del polígono, desplázala hacia fuera en la dirección perpendicular exacta hasta que toque a otra. Para los bordes que ya están compartidos con otro polígono, no hacer nada. Pero no creo que exista tal herramienta.
He buscado por ahí y me sorprende bastante no haber encontrado una respuesta, teniendo en cuenta que "encontrar parcelas al otro lado de la calle" es probablemente una tarea SIG habitual. Debo mencionar que tengo acceso a la mayoría de las funciones de ArcMap.
Me gustaría conocer su opinión.