Ich habe ein Raster von Lebensraumtypen für ein bestimmtes Gebiet in Schottland. Ich muss zukünftige Lebensraumszenarien mit Änderungen im Lebensraum erstellen, um die Lebensfähigkeit der Population einer Vogelart zu beurteilen.
Zum Beispiel könnte es in Zukunft 10% mehr Forstwirtschaft in der Region geben. Ich möchte die aktuelle Karte ändern, indem ich die Forstwirtschaft in Blöcken einer bestimmten Größe zufällig hinzufüge. Bisher denke ich nach dem Prinzip, zufällige Punkte aus einem Raster auszuwählen, das Bereiche identifiziert, in denen die Forstwirtschaft stattfinden könnte, und die Blöcke mit der richtigen Größe mithilfe einer Art zellularer Automaten zu züchten.
Scheint dies der beste Weg zu sein, dies zu tun? Gibt es eine bessere Methode?
Wenn dies der beste verfügbare Weg ist, wie könnte ich dies vorzugsweise in R tun? (Ich sehe mir gerade die rpoints-Funktion in "spatstat" zusammen mit dem CellularAutomata-Paket an.)
Ich habe auch Zugriff auf GRASS, QGis und ArcMap 10, wenn es einfachere Möglichkeiten gibt.
raster
Paket schon angesehen? Es gibt viele Werkzeuge, um mit Raster-Daten (noo, rly?) Zu arbeiten.Antworten:
Haben Sie daran gedacht, eine Markov-Kette zu verwenden ? Dies ist effektiv ein "probabilistischer zellularer Automat", wodurch die gewünschte Zufälligkeit geliefert wird. Anstatt die neue Generation in Bezug auf die lokalen Nachbarn der bestehenden Generation vorzuschreiben, gibt sie eine Wahrscheinlichkeitsverteilung für die neue Generation vor. Diese Verteilung kann beispielsweise aus zeitlichen Abfolgen von Bildern gleicher oder ähnlicher Bereiche geschätzt werden.
Dieses Modell geht intuitiv davon aus, dass eine Zelle nicht unbedingt von einer bewaldeten in eine nicht bewaldete Zelle übergeht (oder umgekehrt ), sondern dass die Wahrscheinlichkeit, dass der Übergang erfolgt, von der unmittelbaren Landbedeckung um sie herum abhängt. Es kann mit mehreren Deckungsklassen, komplexen Konfigurationen von Stadtvierteln umgehen und sogar verallgemeinert werden, um sich an die jüngste Geschichte der Landbedeckungsentwicklung zu erinnern.
Die Übergänge können mithilfe von Map Algebra-Anweisungen implementiert werden, wodurch diese Methode in jedem rasterbasierten GIS praktikabel ist, auch ohne direkten oder schnellen Zugriff auf Daten auf Zellebene. Die Verwendung von R macht es noch einfacher.
Betrachten Sie beispielsweise diese Startkonfiguration mit nur zwei Klassen, Weiß und Schwarz:
Um zu veranschaulichen, was passieren kann, habe ich ein parametrisiertes Modell erstellt (das auf keinen Daten basiert), in dem der Übergang zu Schwarz mit der Wahrscheinlichkeit 1 - q ^ k erfolgt, wobei k die durchschnittliche Anzahl schwarzer Zellen in der 3 × 3-Nachbarschaft ist (k =) 0, 1/9, 2/9, ..., 1). Wenn entweder q klein ist oder der größte Teil der Nachbarschaft bereits schwarz ist, ist die neue Zelle schwarz. Hier sind vier unabhängige Simulationen der zehnten Generation für fünf Werte von q im Bereich von 0,25 bis 0,05:
Offensichtlich weist dieses Modell viele der Merkmale einer Zertifizierungsstelle auf, es enthält jedoch auch einen Zufallseffekt, der für die Untersuchung alternativer Ergebnisse nützlich ist.
Code
Im Folgenden wird die Simulation in implementiert
R
.quelle
kernel = ConstantArray[1/3^2, {3,3}]
für den Kernel;transitionRule [k_] := With[{q = 0.1}, Boole[RandomReal[{0, 1}] > q^k]]
für die Regel; undnext[a_, kernel_, f_] := Map[f, ListConvolve[kernel, a, {1, 1}, 0], {2}]
um sie auf ein Array anzuwenden a . Verwenden Sie beispielsweise, um vier Generationen von Anfang an zu zeichnenArrayPlot /@ NestList[next[#, kernel, transitionRule] &, start, 3]
.