Erstellen eines Shapefiles auf Kreisebene aus einer Reihe von Punkten im Abstand von 30 x 30 km mit ArcGIS for Desktop?

9

Ich habe einen Datensatz in CSV-Form, wie:

latitude, longitude, value
-45, 45, 10
....

Ich möchte aus diesen Daten Mittelwerte auf Kreisebene berechnen, entweder mit ArcGIS oder R + Gras.

Ich habe die Ebene "ArcGIS USA Counties", konnte jedoch eine räumliche Verknüpfung nicht erfolgreich abschließen.

Wie kann ich das machen?

Abe
quelle

Antworten:

4

Ein Workflow zum Generieren einer Formdatei auf Kreisebene mit dem Mittelwert (z) in jedem Kreis aus einer xyz-Datentabelle in ArcGIS

Beachten Sie, dass dies auf dem Vorschlag von @ MLowry basiert und fast schrittweise Anweisungen hinzufügt.


Öffnen Sie ArcCatalog

  1. neue persönliche Geodatabase erstellen (zB foo.mdb)
  2. Datei -> neu -> persönliche Geodatabase
  3. Daten hinzufügen

    • Klicken Sie mit der rechten Maustaste auf map.csv -> Export in Geodatabase (einzeln) -> foo.mdb
    • Klicken Sie mit der rechten Maustaste auf county.lyr -> Export in Geodatabase (einzeln) -> foo.mdb
  4. Erstellen Sie eine Feature-Class (.shp-Dateien) aus der xy-Tabelle

    • öffne foo.mdb
    • Klicken Sie mit der rechten Maustaste auf die Tabelle map.csv -> erstellen Sie eine Feature-Class aus xytable
    • Eingabefelder x = lon, y = lat, z = Ausbeute
    • Koordinatensystem der Eingabekoordinaten importieren -> aus Grafschaften.lyr (oder gleichwertig -> geografisch .. -> Welt -> wgs_1984 -> öffnen -> ok)
  5. Importieren von Feature-Classes in die Geodatabase (mehrere)

    • Wählen Sie die in prev erstellten shp-Dateien aus. Schritt -> Hinzufügen -> Okay

Öffnen Sie ArcMap

  1. Daten hinzufügen

    • Wählen Sie foo.mdb -> CTL + Tabellen auswählen -> öffnen
  2. Spatial Join

    • ArcToolbox -> Analyse-Tools -> Überlagerung -> Räumliche Verknüpfung ->
    • Zielmerkmale: Grafschaften.lyr
    • Join-Funktionen: xyz-Tabellenkarte
    • Ausgabe-Feature-Class: Dateiname_spatialjoin
    • Join Operation: JOIN_ONE_TO_ONE
    • Match Option: Am nächsten
    • Feldzuordnung der Verknüpfungsfunktionen: Entfernen Sie unerwünschte Felder (nur STATE_FIPS, CNTY_FIPS, Z-Werte erforderlich
    • Suchradius: 30 km
    • klicken OK
    • Z-Wert = Ausbeute; Wählen Sie "Mittelwert" (oder alternative Statistik).
David
quelle
@ David Danke für die ausführliche Antwort ... muss es überprüfen.
Abe
@ Be können Sie jederzeit bearbeiten, wenn Sie dies tun. Ich habe es CW gemacht
David LeBauer
@David Unter diesen Umständen führt IDW zu falschen Ergebnissen für die Zonenstatistik: Siehe die Diskussion nach der Antwort von @ scw.
whuber
@whuber. Vielen Dank für den Hinweis. Als ich fertig war, hatte ich vergessen, dass der ursprüngliche Punkt darin bestand, die Punkte mit Landkreisen räumlich zu verbinden. Fest.
David LeBauer
@ David Danke. Aber jetzt bin ich verwirrt. Erstens, wo in diesem Workflow erstellen Sie tatsächlich eine "Rasterebene", wie Ihr Titel ankündigt? Zweitens, wie kommt es, dass drei Schichten hergestellt werden? Die CSV-Datei repräsentiert lediglich eine Reihe von Punkten (x, y) mit jeweils einem einzelnen numerischen Attribut (z).
whuber
6

Klingt so, als könnten Sie die CSV-Datei in ein Ereignisthema konvertieren, dann in .shp exportieren und dann eine räumliche Verknüpfung mit der neuen .shp-Datei in die County-Ebene durchführen. Mit BOOM können Sie die Berechnungen durchführen.

MLowry
quelle
6

Ein allgemeiner Ansatz besteht darin, Ihre Punktdaten mit regelmäßigem Abstand in ein Raster zu konvertieren (XYZ in Raster in Arc *; v.in.xyz in GRASS) und anschließend einen Operator für zonale Statistiken auszuführen, um die Werte der Zellen in jedem Landkreis zu aggregieren und Statistiken zu berechnen ( Mittelwert ist eine der berechneten Standardstatistiken). Um die Statistiken durchzuführen, verwenden Zonal Statistics in Arc * oder v.rast.stats in GRASS.

Wenn Sie benötigt erweiterte Statistiken zu tun, könnten Sie die Analyse in R tun mit rasterund spaber es ist ein wenig komplizierter.

scw
quelle
Gute Idee, aber wenn die Punktarrays nicht korrekt mit den Koordinaten ausgerichtet sind, erfolgt bei der Konvertierung in ein Raster ein Resampling, und Sie sind dem Resampling-Algorithmus ausgeliefert: Die Durchschnittswerte werden wahrscheinlich um ein kleines bisschen abweichen, egal was passiert .
whuber
Richtig, wenn die Zellengröße auf grobes Resampling eingestellt ist, kann dies auftreten. Als Annäherung sollten Sie in der Lage sein, die Zellengröße auf die Hälfte des Mindestabstands zwischen zwei beliebigen Punkten einzustellen und dieses Problem zu vermeiden. Dieser Ansatz hat den Nachteil, dass er mit Resampling umgehen muss, aber ich habe festgestellt, dass er viel besser ist als die Anzahl der Punkte (Zehntausende oder mehr).
Scw
@scw Resampling erfolgt unabhängig von der Zellengröße (es sei denn, die Daten sind bereits perfekt auf das Raster ausgerichtet). Wenn Sie eine feinere Zellengröße verwenden, erhalten Sie wahrscheinlich schlechtere Antworten, da die meisten Rasterwerte zwischen den Originalen interpoliert werden. Wenn Sie keine Interpolation zum nächsten Nachbarn verwenden, werden die Extremwerte dadurch unterrepräsentiert. Der Mittelwert wird nur geringfügig beeinflusst; Andere Statistiken wie die Standardabweichung können stärker betroffen sein.
whuber
@whuber Ich glaube, ich sehe, woher unser Missverständnis kommt - ich befürworte nicht, die Daten in eine kontinuierliche Oberfläche zu konvertieren, sondern nur die Punktwerte (sofern vorhanden) in ein reguläres Raster-Raster zu setzen. Die überwiegende Mehrheit des Gitters bleibt also NULL, wobei nur gelegentliche Werte an Zellenpositionen mit Punktpositionen übereinstimmen.
Scw
@scw Ah, sehr gut! Danke für die Abklärung. Sie führen tatsächlich das gitterbasierte Äquivalent der von @MLowry empfohlenen räumlichen Verknüpfung aus.
whuber