Manera simple de detectar / seleccionar polígonos de borde de un archivo de forma

8

Estoy buscando una manera simple de detectar / seleccionar polígonos de borde de un archivo de forma. Los polígonos de borde son aquí polígonos que no están completamente rodeados por otros polígonos, es decir, polígonos ubicados en la periferia del archivo de forma (la extensión del archivo de forma está completamente cubierta por polígonos). En el siguiente ejemplo, los polígonos deseados están sombreados:

polígonos fronterizos

Las soluciones que utilizan Arcgis, QGIS, R, Python son bienvenidas.

DJack
fuente
1
¿El borde es siempre una bonita forma regular como ese rectángulo? Por cierto: esa última oración parece un poco exigente.
BradHards el
No El borde es irregular. Un extracto por máscara o algo así no sería ideal, creo. NB: última oración modificada, tenías razón.
DJack

Respuestas:

7

cree una nueva capa de polígono, dibuje un solo polígono que cubra todos sus polígonos actuales, luego corte el polígono recién dibujado en función de todos sus polígonos existentes, luego seleccione todos los polígonos de su conjunto actual que compartan un segmento de línea con el polígono recién dibujado usando select por ubicación y listo


--- Versión editada mucho más eficiente, basada en comentarios ----

Disuelva todos los polígonos en uno, luego seleccione todos los polígonos de su conjunto actual que compartan un segmento de línea con el polígono recién disuelto usando seleccionar por ubicación y listo

Hedinn
fuente
2
Ok, está bien. Pero en lugar de dibujar el polígono, disolveré todos mis polígonos para obtener solo uno. Mucho más eficiente que dibujar uno. Gracias.
DJack
1
Sí, tienes razón, eso es mucho más eficiente :)
Hedinn
2

Con R:

ShapeFile.Dissolved<-rgeos::gUnionCascaded(ShapeFile)
x<-rgeos::gRelate(ShapeFile, ShapeFile.Dissolved, byid= TRUE)

Me dan 3 casos DE-9IM :

table(x)
2FF10F212 2FF11F212 2FF1FF212 
       63      2470    174495  

El código de cadena DE-9IM resultante se puede interpretar de la siguiente manera:

1) 2FF1FF212: representan polígonos del primer archivo de forma que no se cruzan con el borde del polígono del segundo archivo de forma

2) 2FF11F212: representan polígonos del primer archivo de forma que intersectan el borde del polígono del segundo archivo de forma con una línea

3) 2FF10F212: representan polígonos del primer archivo de forma que intersecan el borde del polígono del segundo archivo de forma con un punto

Los dos últimos casos son mis polígonos de borde que estaba buscando. Tengo su identificación con:

poly.border<-which(x %in% c("2FF10F212","2FF11F212"))

Con Arcmap:

1) Disolver (Gestión de datos) sin seleccionar ningún "Dissolve_Field"

2) Seleccionar por ubicación. Seleccione entidades del "archivo de forma original", Capa de origen: "archivo de forma disuelto", Método de selección espacial para las funciones de capa de destino: toque el límite de la función de capa de origen.

3) Comience a editar y elimine las funciones seleccionadas

DJack
fuente