Mehr

Zonaler Durchschnitt, gewichtet nach Entfernung vom Punkt

Zonaler Durchschnitt, gewichtet nach Entfernung vom Punkt


Ich verwende ArcGIS 10.2. Ich habe eine Vektorebene mit Punkten, die Häuser darstellen, und eine Rasterebene mit Werten von 0 oder 1 gemäß einem bestimmten Schwellenwert. In einem Puffer von 5 km um jedes dieser Häuser möchte ich die durchschnittliche Anzahl von Rasterpunkten über einem bestimmten Schwellenwert (Wert=1), gewichtet nach der quadrierten Entfernung vom Haus.

Ohne die Gewichtung wäre das ganz einfach: Ich würde iterativ Puffer um das Haus herum erstellen (um Puffer zu haben, die sich nicht auflösen) und dann den Befehl 'Zonenstatistik als Tabelle' verwenden. Jetzt wird es durch die Gewichtung kompliziert.

Ich habe folgendes Verfahren ausprobiert (Haus für Haus in einem Modell iterieren, siehe unten): zuerst die Häuser rastern (Punkt zu Raster) dann die euklidische Distanz berechnen, dann mit dem Rasterrechner das Quadrat der Distanz nehmen und mein Raster teilen mit Schwellenwerte durch das Raster mit quadrierten Abständen. In der Zwischenzeit mache ich Puffer um die Häuser, rastere diese Puffer und führe dann endlich eine Zonenstatistik als Tabellenbefehl aus, um die Statistik der Ausgabe meiner zweiten Rasterung innerhalb der 5000 km zu erhalten. Schließlich verwende ich den append-Befehl, um eine einzige Tabelle für alle Häuser zu erstellen.

Nun habe ich zwei Fragen:

1) Ist das ein guter Ansatz oder liege ich irgendwo grundsätzlich falsch?

2) Die Analyse scheint gut zu funktionieren, aber bei einigen Häusern bekomme ich seltsame Ergebnisse (zB ein Maximalwert von 5 für ein Haus). Darüber hinaus erhalte ich unterschiedliche Ergebnisse, wenn ich bei einigen Häusern jeden der vorherigen Schritte ohne Modell (manuell) befolge. Ich verstehe nicht warum.

Könnte mir jemand helfen?


Danke whuber, das hat geholfen.

Ich habe eine ASCII-Datei erstellt, um die Gewichte zu definieren, und dann einen gewichteten Fokusmittelwert erstellt. Da es in ArcGIS nicht geklappt hat (mit meiner txt-Datei schien etwas nicht zu stimmen), habe ich den gesamten Prozess in QGIS ausgeführt (wo dieselbe txt-Datei einwandfrei funktionierte).

Daher habe ich den Befehl r.neighbours verwendet, der das QGIS-Äquivalent des Befehls fokaler Mittelwert in ArcGIS ist. Dann habe ich den Befehl "Rasterwerte zu Punkt hinzufügen" verwendet und es hat gut funktioniert. Es werden keine Iterationen oder Modelle mehr benötigt.


Also lass es mich verstehen…

  1. In jedem Szenario durchlaufen Sie die gesamte Kette für jedes Dorf einzeln?
  2. Sie sagen, es funktioniert meistens, hat aber manchmal seltsame Werte?
  3. Dass Sie bei manueller Ausführung „andere“ Ergebnisse erhalten…

Schwer zu sagen… Ich würde 2-3 Iterationen durchlaufen und alle Zwischenausgaben speichern und überprüfen, ob jede Stufe genau das tut, was Sie denken. Versuchen Sie, sich bei den Zeilen mit seltsamen Werten auf diese zu konzentrieren. Ein Bereich, der mich oft aus der Fassung bringt… stellen Sie sicher, dass jede Raster-Rechner-Operation in dem Datentyp ausgeführt wird, von dem Sie denken, dass er es sollte… Float oder Integer.


Dies ist ein einzelner, einfacher Vorgang, erfordert keine Iteration oder kompliziertes Modell. Sie fragen nach den Werten eines gewichteten Fokusmittels der Rasterebene. Dazu definieren Sie zunächst eine gewichtete Nachbarschaft, in der Sie die entfernungsbasierten Gewichtungen (welche auch immer sie sein mögen) platzieren. Mit dieser Nachbarschaft fordern Sie einen Focal Mean an. Wenn dieser Vorgang abgeschlossen ist – er ist in der Regel schnell –, müssen Sie nur noch seine Werte an den Hauspunkten extrahieren, was auf viele einfache Arten erfolgen kann.