8 votos

Forma sencilla de detectar/seleccionar polígonos de frontera de un shapefile

Estoy buscando una manera simple de detectar/seleccionar polígonos de frontera de un shapefile. Polígonos de frontera aquí son polígonos que no son completamente rodeados por otros polígonos, es decir polígonos situados en la periferia de lo shapefile (la extensión de lo shapefile es enteramente cubierta por polígonos). En el ejemplo siguiente, se sombrean los polígonos deseados:

border polygons

Solución usando Arcgis, Python, QGIS, R es bienvenido.

7voto

Thiem Nguyen Puntos 123

crear una nueva capa de polígonos, dibujar un único polígono que abarca todos los polígonos, a continuación, cortar el recién dibujado el polígono basado en todos los polígonos, a continuación, seleccione todos los polígonos de la corriente que establece que comparten un segmento de línea con la recién dibujado el polígono el uso de seleccionar por ubicación y listo


---Editado versión mucho más eficiente, basado en el comentario\begin{pmatrix}p_{1}^{\left(1\right)} & p_{1}^{\left(2\right)} & \cdots & p_{1}^{\left(d\right)} & 1\\ p_{2}^{\left(1\right)} & p_{2}^{\left(2\right)} & \cdots & p_{2}^{\left(d\right)} & 1\\ \vdots & \vdots & \ddots & \vdots & \vdots\\ p_{d}^{\left(1\right)} & p_{d}^{\left(2\right)} & \cdots & p_{d}^{\left(d\right)} & 1\\ p^{\left(1\right)} & p^{\left(2\right)} & \cdots & p^{\left(d\right)} & 1 \end

Disolver todos los polígonos en uno, a continuación, seleccione todos los polígonos de la corriente que establece que comparten un segmento de línea con la recién disuelta polígono el uso de seleccionar por ubicación y listo

2voto

Tim D'hoe Puntos 66

Con R:

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

Puedo obtener 3 DE-9IM casos:

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

El resultado DE-9IM cadena de código que puede interpretarse como sigue:

1) 2FF1FF212: representar polígonos desde el primer archivo de forma que no cruzan la frontera del polígono de la segunda shapefile

2) 2FF11F212: representar polígonos desde el primer archivo de forma que cruzan la frontera del polígono de la segunda shapefile con una línea

3) 2FF10F212: representar polígonos desde el primer archivo de forma que cruzan la frontera del polígono de la segunda shapefile con un punto de

Los dos últimos casos son mis frontera polígonos que yo estaba buscando. I ve got a 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 características de "original " shapefile", la capa de Origen: "shapefile disuelto", de ordenación del método de selección para la capa de destino funciones: tocar el límite de la capa de origen de la característica.

3) Empezar a editar y eliminar características seleccionadas

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X