Maneira simples de detectar / selecionar polígonos de borda de um shapefile

8

Estou procurando uma maneira simples de detectar / selecionar polígonos de borda de um shapefile. Os polígonos de borda são aqui polígonos que não são completamente cercados por outros polígonos, isto é, polígonos localizados na periferia do arquivo de forma (a extensão do arquivo de forma é totalmente coberta por polígonos). No exemplo abaixo, os polígonos desejados estão sombreados:

polígonos de borda

Soluções usando Arcgis, QGIS, R, Python são bem-vindas.

DJack
fonte
1
A borda é sempre uma boa forma regular como esse retângulo? BTW: Essa última frase parece um pouco exigente.
BradHards
Não. A borda é irregular. Um extrato por máscara ou algo assim não seria o ideal, eu acho. NB: última frase modificada, você tinha razão.
DJack

Respostas:

7

crie uma nova camada de polígono, desenhe um único polígono que cubra todos os polígonos atuais, recorte o polígono recém-desenhado com base em todos os polígonos existentes e selecione todos os polígonos do conjunto atual que compartilham um segmento de linha com o polígono recém-desenhado usando select por localização e pronto


--- Versão editada muito mais eficiente, com base no comentário ----

Dissolva todos os polígonos em um e selecione todos os polígonos do conjunto atual que compartilham um segmento de linha com o polígono recém-dissolvido usando selecionar por local e pronto

Hedinn
fonte
2
OK certo. Mas, em vez de desenhar o polígono, vou dissolver todos os meus polígonos para obter apenas um. Muito mais eficiente do que desenhar um. Valeu.
DJack
1
Sim, você está correto que é muito mais eficiente :)
Hedinn
2

Com R:

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

Recebo 3 casos DE-9IM :

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

O código da sequência DE-9IM resultante pode ser interpretado da seguinte maneira:

1) 2FF1FF212: representa polígonos do primeiro arquivo de forma que não cruzam a borda do polígono do segundo arquivo de formato

2) 2FF11F212: representa polígonos do primeiro arquivo de forma que cruzam a borda do polígono do segundo arquivo de forma com uma linha

3) 2FF10F212: representa polígonos do primeiro arquivo de forma que cruzam a borda do polígono do segundo arquivo de forma com um ponto

Os dois últimos casos são meus polígonos de borda que eu estava procurando. Eu tenho o ID deles com:

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

Com o Arcmap:

1) Dissolver (Gerenciamento de Dados) sem selecionar nenhum "Dissolve_Field"

2) Selecione por local. Selecione os recursos de "shapefile original", Camada de origem: "shapefile dissolved", Método de seleção espacial para os recursos da camada de destino: toque no limite do recurso da camada de origem.

3) Comece a editar e excluir os recursos selecionados

DJack
fonte