Calcul de la zone dominante dans un polygone à l'aide d'ArcGIS Desktop?

8

Tout d'abord, j'ai un fichier de formes composé de grilles carrées et chaque grille a un ID. Deuxièmement, j'ai un fichier de formes composé de différentes zones (avec ID).

Un ID de grille dans le premier fichier de formes peut contenir de nombreux ID de zone du deuxième fichier de formes.

Je veux savoir quel est l'ID de zone dominante à l'intérieur d'une grille et l'enregistrer dans une table. Je veux seulement connaître la zone dominante (en termes de superficie) et non les autres zones qui coupent cette grille. À la fin, je voudrais un tableau à 2 colonnes avec tous les ID de grille dans la première colonne et l'ID de zone dominante correspondante (ou la plus grande zone en termes de superficie) dans la deuxième colonne.

Voici un exemple de figure. En regardant simplement la figure, je pourrais dire que dans la grille ID 1, la zone / zone dominante est la zone ID 1. Dans la grille ID 2, la zone / zone dominante est la zone ID 2. Et dans la grille ID 3, la zone dominante / area est l'ID de zone 3. J'aimerais avoir un tableau avec deux colonnes, chaque grille ne montrant que l'ID de la zone dominante.

entrez la description de l'image ici

GISnew
la source

Réponses:

8

CONTRIBUTION:

entrez la description de l'image ici

Après la dissolution des zones, utilisez le flux de travail suivant:

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")

SORTIES MONTRÉES "TRIÉES" ET GRILLE:

entrez la description de l'image ici

Transférez l'ID de la zone dominante vers la couche de grille de "trié", en utilisant des attributs de jointure si nécessaire.

Mise à jour importante un an plus tard: chaque zone doit être un seul polygone potentiellement multi-parties. Si ce n'est pas le cas, la couche de zones d'origine doit être dissoute par nom de zone.

FelixIP
la source
6

Ok je pense que je suis la question. J'ai tenté cela avec un ensemble de données de test. J'utilise une géodatabase pour que la zone soit calculée (recommandée). Si vous devez utiliser un fichier de formes, calculez un champ avec une géométrie pour le shape_area avant de faire l'étape 2. J'ai une couche polygonale nommée Poly et une grille en résille nommée FNET. Poly a un champ (MTYPE) et des valeurs de 1 (marron), 2 (vert) ou 3 (violet) (couleurs de la 1ère capture d'écran).

entrez la description de l'image ici

Étape 1. Croisez les 2 couches. Opération d'intersection

Maintenant, la sortie de cette première étape vous donne des champs FID pour chaque couche (dans mon cas, c'est FID_FNET et FID_Poly).

Capture d'écran montrant comment le FID pour chacun est préservé (325 est la cellule de la grille et contient 1, 2 et 3 chacun). Capture d'écran montrant comment le FID pour chacun est préservé

Étape 2. RÉSUMER (désolé, la capture d'écran ressemble à "Statistiques" mais utilisez Résumer.

Résumer (montrant le tableau)

Étape 2 (suite). Faites un résumé sur FID_FNET et configurez-le comme dans cette capture d'écran suivante afin d'obtenir un maximum sur le champ Shape_Area ...

Paramètres pour résumer

Étape 3. Effectuez une jointure à l'aide de la sortie de l'opération d'intersection et de la table (joignez la table à l'intersection) et basez la jointure sur le shape_area de la sortie d'intersection et le "Max_shape_area" du tableau.

Les valeurs nulles peuvent être ignorées (ce sont celles qui n'étaient PAS maximales) ou supprimées (mieux encore). et le résultat en utilisant la table jointe est une liste d'enregistrements FID_FNET qui ont également un FID_POLY qui correspond à la plus grande valeur (MAX) pour chaque cellule de la grille!

Cette dernière capture d'écran montre comment j'ai configuré la jointure. JOINDRE

jbchurchill
la source
Merci beaucoup @jbchurchill. Je vais l'essayer sur mon jeu de données et je vous ferai savoir plus tard si cela fonctionne.
GISnew
J'ai suivi chaque étape. J'ai le fichier d'intersection avec environ 34 000 enregistrements. Après l'étape de résumé, j'ai obtenu un tableau avec 30 000 enregistrements. Quand j'ai essayé de les rejoindre, il n'a rejoint que moins de 100. Je suis confus de ce qui est arrivé aux autres. ArcMap peut-il rejoindre ces nombreux enregistrements?
GISnew
En fait, les zones qui ne correspondent pas sont les "zones non dominantes" restantes, vous ne devriez donc pas avoir à vous en préoccuper. Sinon, ils se trouvent en dehors de la zone de chevauchement.
jbchurchill
Ceci est incroyable. Je ne cherchais pas le maximum mais cela m'a quand même beaucoup aidé. Je me demande simplement, la zone de forme dans le tableau résumé, quelle en est l'unité?
AndrewLebron
@AndrewLebron, il est (par conception) toujours le même que les unités horizontales pour la classe d'entités. Jetez donc un œil aux propriétés de l'entrée.
jbchurchill