Berechnen des dominanten Bereichs im Polygon mit ArcGIS Desktop?


8

Erstens habe ich ein Shapefile, das aus quadratischen Gittern besteht, und jedes Gitter hat eine ID. Zweitens habe ich ein Shapefile, das aus verschiedenen Zonen besteht (mit IDs).

Eine Raster-ID im ersten Shapefile kann viele Zonen-IDs aus dem zweiten Shapefile enthalten.

Ich möchte wissen, was die dominante Zonen-ID in einem Raster ist, und diese in einer Tabelle aufzeichnen. Ich möchte nur die dominante Zone (in Bezug auf die Fläche) kennen und nicht den Rest der Zonen, die dieses Gitter schneiden. Am Ende möchte ich eine zweispaltige Tabelle mit allen Raster-IDs in der ersten Spalte und der entsprechenden dominanten Zonen-ID (oder der flächenmäßig größten Zone) in der zweiten Spalte.

Hier ist eine Beispielfigur. Wenn ich mir nur die Abbildung anschaue, kann ich feststellen, dass in Raster-ID 1 die dominante Zone / der dominante Bereich die Zonen-ID 1 ist. In Raster-ID 2 ist die dominante Zone / der dominante Bereich die Zonen-ID 2. Und in Raster-ID 3 die dominante Zone / area ist Zone ID 3. Ich hätte gerne eine Tabelle mit zwei Spalten, wobei jedes Raster nur die ID des dominanten Bereichs anzeigt.

Geben Sie hier die Bildbeschreibung ein

Antworten:


8

EINGANG:

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie nach dem Auflösen der Zonen den folgenden WORKFLOW:

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

OUTPUT ZEIGT "SORTIERT" UND GITTER:

Geben Sie hier die Bildbeschreibung ein

Übertragen Sie die ID der dominanten Zone von "sortiert" auf die Rasterebene, und verwenden Sie gegebenenfalls Verknüpfungsattribute.

Wichtiges Update ein Jahr später: Jede Zone muss ein einzelnes, möglicherweise mehrteiliges Polygon sein. Ist dies nicht der Fall, muss die ursprüngliche Zonenebene nach Zonennamen aufgelöst werden.


6

Ok, ich glaube ich folge der Frage. Ich habe dies mit einem Testdatensatz versucht. Ich verwende eine Geodatabase, damit die Fläche berechnet wird (empfohlen). Wenn Sie ein Shapefile verwenden müssen, berechnen Sie ein Feld mit Geometrie für den Shape_Bereich, bevor Sie Schritt 2 ausführen. Ich habe eine Polygonebene mit dem Namen Poly und ein Fischnetzgitter mit dem Namen FNET. Poly hat ein Feld (MTYPE) und Werte von 1 (Kastanienbraun), 2 (Grün) oder 3 (Lila) (Farben aus dem 1. Screenshot).

Geben Sie hier die Bildbeschreibung ein

Schritt 1. Schneiden Sie die 2 Schichten. Schnittbetrieb

Die Ausgabe dieses ersten Schritts enthält nun FID-Felder für jede Ebene (in meinem Fall FID_FNET und FID_Poly).

Screenshot, der zeigt, wie die FID für jede erhalten bleibt (325 ist die Gitterzelle und enthält jeweils eine von 1, 2 und 3). Screenshot zeigt, wie die FID für jede erhalten bleibt

Schritt 2. ZUSAMMENFASSUNG (Entschuldigung, der Screenshot sieht aus wie "Statistik", aber verwenden Sie "Zusammenfassen".

Zusammenfassen (Tabelle anzeigen)

Schritt 2 (Fortsetzung). Führen Sie eine Zusammenfassung in FID_FNET durch und richten Sie sie wie in diesem nächsten Screenshot ein, damit Sie im Feld Shape_Area ein Maximum erhalten ...

Parameter für Summarize

Schritt 3. Führen Sie einen Join mit der Ausgabe der Schnittoperation und der Tabelle durch (verbinden Sie die Tabelle mit dem Schnittpunkt) und stützen Sie den Join auf den Shape_Bereich aus der Schnittpunktausgabe und den "Max_Form_Bereich" aus der Tabelle.

Die Nullwerte können ignoriert werden (sie sind diejenigen, die NICHT maximal waren) oder gelöscht werden (noch besser). und das Ergebnis unter Verwendung der verknüpften Tabelle ist eine Liste von FID_FNET-Datensätzen, die auch ein FID_POLY haben, das dem größten (MAX) Wert für jede Gitterzelle entspricht!

Dieser letzte Screenshot zeigt, wie ich den Join eingerichtet habe. BEITRETEN


Vielen Dank @jbchurchill. Ich werde es in meinem Datensatz versuchen und Sie später informieren, ob es funktioniert.
GISnew

Ich folgte jedem Schritt. Ich habe die Schnittdatei mit ungefähr 34.000 Datensätzen. Nach dem Schritt zum Zusammenfassen bekam ich eine Tabelle mit 30.000 Datensätzen. Als ich versuchte, mich ihnen anzuschließen, waren es nur weniger als 100. Ich bin verwirrt darüber, was mit den anderen passiert ist. Kann ArcMap so viele Datensätze verbinden?
GISnew

Tatsächlich sind die Bereiche, die nicht übereinstimmen, die verbleibenden "nicht dominanten Bereiche", sodass Sie sich keine Sorgen machen müssen. Wenn nicht, befinden sie sich außerhalb des Überlappungsbereichs.
jbchurchill

Das ist großartig. Ich habe nicht nach dem Maximum gesucht, aber das hat mir trotzdem sehr geholfen. Ich frage mich nur, der Formbereich in der zusammengefassten Tabelle, was ist die Einheit davon?
AndrewLebron

@AndrewLebron Es ist (beabsichtigt) immer dasselbe wie die horizontalen Einheiten für die Feature-Class. Sehen Sie sich also die Eigenschaften der Eingabe an.
Jbchurchill
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.