Removendo apenas orifícios de rosca de polígonos usando o ArcGIS Desktop?

15

Estou usando o ArcGIS Desktop 10.0.

Eu tenho um truque para remover os furos de rosca, que é converter o polígono em linha e, em seguida, criar polígono a partir das linhas e, no final, mesclar todos eles. A desvantagem dessa estratégia é que remove outros buracos e áreas vazias que, na realidade, estão vazias e devem ser mantidas vazias. Veja abaixo a imagem:

insira a descrição da imagem aqui

Arash
fonte
3
Votei em manter esta questão em aberto porque acredito que o OP está tentando remover alguns, mas nem todos os donuts. Ele está procurando uma maneira de manter alguns deles.
Fezter
Obrigado! Eu adicionei a imagem, espero que esclareça tudo. Não posso ir em frente e remover áreas maiores antes de mesclar tudo, porque, aliás, posso remover os polígonos principais (o próprio verde).
Arash
1
Muito parecido com Como remover pequenos polígonos de “sal e pimenta” de uma camada? , mas usando um processo QGIS. Você provavelmente poderia trabalhar com processos muito semelhantes no ArcGIS.
precisa saber é o seguinte
É apenas o tamanho do limite acima do qual os furos não devem ser preenchidos que evita que seja uma duplicata do Preenchimento de polígonos de rosca usando o ArcGIS for Desktop?
PolyGeo

Respostas:

23

Eu tentaria a ferramenta Union com NO_GAPS:

NO_GAPS - Um recurso será criado para as áreas na saída que são completamente delimitadas por polígonos. Esse recurso terá atributos em branco.

Você pode selecionar os recursos com atributos em branco abaixo de um tamanho limite e calcular seus atributos para serem os mesmos do polígono original - ou copiá-los / colá-los na janela Atributo do editor.

Recursos com atributos em branco acima do tamanho do limite devem ser excluídos.

A partir daí, a ferramenta Dissolver deve concluir o trabalho.

PolyGeo
fonte
1
como você "calcula [o novo poli de rosca] para ser igual ao polígono [contendo] original"? Eles não têm valores de atributos em comum, portanto, não podem ser unidos. Como a Island poly C sabe que deve adquirir seus novos valores de atributos do (contendo) Lake poly A e ignorar (em outro lugar) Lake poly B?
mate Wilkie
Eu não fiz um teste recente, mas "o novo poli de rosca" é o "polígono original [contendo]". Se houver vários polígonos de rosca para processar a granel, será necessário marcar os pequenos orifícios com o polígono de rosca que eles caem.
PolyGeo
7

A solução da PolyGeo é uma que me empreguei e funciona bem (+1). Outra alternativa é amortecer seus polígonos em uma pequena quantidade e, em seguida, amortecer o resultado na mesma quantidade (digamos + 1m e depois -1m). Isso também funciona bem, mas apresenta um pequeno risco de unir acidentalmente polígonos vizinhos na mesma quantidade que o seu buffer. Também pode aumentar sua contagem de vértices (o que pode ou não ser um problema).

Você também pode escrever um script para uma solução robusta iterando sobre cada polígono, criando polígonos temporários com base nos anéis internos e testando-os em suas áreas. Se eles estiverem abaixo do seu limite, remova esse anel interno da geometria e atualize sua linha. Esta solução é mais trabalhosa que a da PolyGeo ou meu buffer hack acima, mas é possivelmente uma abordagem "mais pura".

MappaGnosis
fonte
5

Você pode usar a ferramenta "Eliminar peça de polígono" (Data Management Tools -> Generalization) no ArcToolbox. Você pode especificar a área / porcentagem mínima do furo a ser removida.

Kadir Şahbaz
fonte
1
Esta função requer o nível de licença Advanced / ArcInfo.
Martin Martin
Eu tentei a ferramenta Eliminar peça de polígono, no ArcGIS Pro 2.0. Mas isso não fez nada com o recurso de polígono que eu estava testando. O recurso tinha vários anéis internos, e eu quero que todos eles se foram. Essa ferramenta funciona apenas se o recurso consistir em geometria multiparte?
Mike Finch
Não somente". Também funciona polígonos únicos com furo (s).
Kadir Şahbaz 17/0318
4

Aqui está outra maneira de remover lagos de polígonos (como a camada de mapa de código postal da Navteq). Isso também é útil para limpar as camadas de mapa de território que foram geradas dissolvendo a camada de mapa de CEP pelo código de território.

  1. Use uma "União" de geoprocessamento na camada de mapa de polígono e remova a caixa de seleção "Lacunas permitidas" (que é marcada por padrão.) Isso cria polígonos para todos os orifícios "rosqueados" nos polígonos.
  2. Na camada de mapa da União resultante, adicione campos para ID, X e Y. O ID deve ser separado do nome / ID dos polígonos que possuem os orifícios de rosca que você deseja remover.
  3. Na tabela de atributos, use a Calculadora de Campos para calcular o ID do campo ObjectID e use "Calcular Geometria" para preencher os valores X e Y.
  4. Separe os polígonos de rosca dos outros polígonos selecionando (Selecionar por atributos) aqueles em que o campo de nome é nulo.
  5. Exporte os registros selecionados para uma nova tabela. (menu suspenso de opções de tabela -> Exportar ...)
  6. Use a opção "Adicionar XY" para criar uma camada de eventos. (clique com o botão direito na camada -> Exibir dados XY ....
  7. Exporte a camada de eventos para uma nova classe de recurso. (clique com o botão direito na camada -> Dados -> Exportar dados)
  8. Faça uma junção espacial entre a nova camada de pontos e a camada de mapa de polígonos ORIGINAL que não possui os polígonos de rosca. Use a opção "mais próximo" para que o nome do polígono ao redor seja anexado à tabela de atributos dos polígonos de rosca.
  9. Use uma união de tabela padrão entre a camada de ponto unida e a camada de mapa resultante da União (com base no campo ID). (clique com o botão direito do mouse na camada -> Junta e se relaciona -> Junta -> Junta dados de outra camada com base na localização espacial)
  10. Use a Calculadora de campo na tabela de atributos para calcular os nomes de polígonos nulos da camada de pontos unidos.
  11. Execute um "Dissolver" de geoprocessamento com base no nome do polígono para mesclar os polígonos de rosca com o polígono nomeado maior.

Observe que isso não corrigirá o problema dos rios que são cortados no contorno do polígono, mas melhora a camada do mapa original removendo os orifícios internos da rosca.

Susan
fonte
3

Se os polígonos na classe de recurso contiverem outros polígonos na mesma classe de recurso (por exemplo, Lesoto na África do Sul) e se você precisar eliminar a edição manual em favor do ModelBuilder, etc., usar "Eliminar peça de polígono" é a solução mais rápida. Configurações da ferramenta:

- "Condição (opcional)" = ÁREA - "Área (opcional)" = um número muito grande (digamos, 1e + 100) - "Eliminar apenas peças contidas (opcional)" = [marcado]

Isso resultará em uma África do Sul com a área do Lesoto preenchida, essencial para fluxos de trabalho, como a saída de vértices para uso em recursos visuais de polígono no Tableau.

Mandril
fonte
0

Como não foi mencionado até agora e parece ser a ferramenta certa para exatamente o que você está tentando alcançar: polígonos agregados

Defina o minimum_hole_size para o tamanho mínimo de um furo de polígono que você deseja manter. Os menores serão eliminados.

O valor opcional mínimo_area na mesma ferramenta faz o mesmo para as partes do polígono que não são orifícios.

ZZZ
fonte