Computando a área dominante em polígono usando o ArcGIS Desktop?

8

Primeiro, eu tenho um shapefile que consiste em grades quadradas e cada grade tem um ID. Segundo, eu tenho um shapefile que consiste em diferentes zonas (com IDs).

Um ID de grade no primeiro shapefile pode conter muitos IDs de zona do segundo shapefile.

Quero saber qual é o ID da zona dominante dentro de uma grade e registrá-lo em uma tabela. Eu só quero conhecer a zona dominante (em termos de área) e não o resto das zonas que cruzam essa grade. No final, eu gostaria de uma tabela de 2 colunas com todos os IDs da grade na primeira coluna e o ID da zona dominante correspondente (ou a maior zona em termos de área) na segunda coluna.

Aqui está uma figura de exemplo. Apenas olhando a figura, eu poderia dizer que na Grade ID 1, a zona / área dominante é a Zona ID 1. Na Grade ID 2, a zona / área dominante é a Zona ID 2. E na Grade ID 3, a zona dominante / area é zona ID 3. Gostaria de ter uma tabela com duas colunas, com cada grade mostrando apenas o ID da área dominante.

insira a descrição da imagem aqui

GISnew
fonte

Respostas:

8

ENTRADA:

insira a descrição da imagem aqui

Após a dissolução das zonas, use o seguinte FLUXO DE TRABALHO:

arcpy.Intersect_analysis("GRID #;ZONE #","D:/Scratch.gdb/intersect")
arcpy.Sort_management("intersect", "D:/Scratch.gdb/sorted","Shape_Area DESCENDING")
# DELETE MINORITIES USING GRID ID 
arcpy.DeleteIdentical_management("sorted", "ID")

A PRODUÇÃO MOSTRA "SORTED" E GRADE:

insira a descrição da imagem aqui

Transfira o ID da zona dominante para a camada de grade de "classificado", usando a junção por atributos, se necessário.

Atualização importante um ano depois: cada zona deve ser um único polígono potencialmente multipartes. Se não for esse o caso, a camada de zonas original deve ser dissolvida pelo nome da zona.

FelixIP
fonte
6

Ok, acho que sigo a pergunta. Eu tentei isso com um conjunto de dados de teste. Estou usando um geodatabase para que a área seja calculada (recomendado). Se você precisar usar um shapefile, calcule um campo com geometria para a shape_area antes de executar a etapa 2. Eu tenho uma camada de polígono chamada Poly e uma grade de rede de pesca chamada FNET. Poly possui um campo (MTYPE) e valores de 1 (marrom), 2 (verde) ou 3 (roxo) (cores da 1ª captura de tela).

insira a descrição da imagem aqui

Etapa 1. Interseccione as 2 camadas. Operação de interseção

Agora, a saída desse primeiro passo fornece campos FID para cada camada (no mycase são FID_FNET e FID_Poly).

Captura de tela mostrando como o FID de cada um é preservado (325 é a célula da grade e possui um de 1, 2 e 3). Captura de tela mostrando como o FID de cada um é preservado

Etapa 2. RESUMO (desculpe, a captura de tela se parece com "Estatísticas", mas use Resumir.

Resumir (mostrando a tabela)

Etapa 2 (continuação). Faça um resumo no FID_FNET e configure-o como nesta próxima captura de tela para obter o máximo no campo Shape_Area ...

Parâmetros para resumir

Etapa 3. Faça uma junção usando a saída da operação de interseção e a tabela (junte a tabela à interseção) e baseie a junção na shape_area a partir da saída de interseção e no "Max_shape_area" da tabela.

Os valores nulos podem ser ignorados (são os que NÃO foram máximos) ou excluídos (melhor ainda). e o resultado usando a tabela unida é uma lista de registros FID_FNET que também possuem um FID_POLY que corresponde ao maior valor (MAX) de cada célula da grade!

Esta última captura de tela mostra como eu configuro a associação. JUNTE-SE

jbchurchill
fonte
Muito obrigado @jbchurchill. Vou testá-lo no meu conjunto de dados e informaremos mais tarde se funcionar.
GISnew
Eu segui cada passo. Eu tenho o arquivo de interseção com cerca de 34.000 registros. Após o passo resumir, recebi uma tabela com 30.000 registros. Quando tentei me juntar a eles, ele só se juntou a menos de 100. Estou confuso com o que aconteceu com o resto. O ArcMap pode se juntar a tantos registros?
GISnew
Na verdade, as áreas que não correspondem são as "áreas não dominantes" restantes, portanto você não precisa se preocupar com elas. Caso contrário, eles estão fora da área de sobreposição.
jbchurchill
Isso é incrível. Eu não estava procurando o máximo, mas isso ainda me ajudou muito. Estou apenas pensando, a Área da Forma na tabela resumida, qual é a unidade dela?
AndrewLebron
@AndrewLebron é (por design) sempre o mesmo que as unidades horizontais da classe de recurso, portanto, veja as propriedades da entrada.
Jbchurchill