Mehr

Wie erstelle ich mit GRASS einen kostengünstigsten Pfad zwischen zwei Polygonen?


Ich bin ein absoluter Anfänger in GRASS, aber ich möchte es verwenden, um die kumulativen Kosten für das Bewegen zwischen zwei Polygonen zu haben. Genauer möchte ich um die geringsten Kosten von einem Punkt am Rand eines Polygons (Polygon A) zu einem beliebigen Punkt am Rand eines anderen Polygons (Polygon B) zu erhalten.

Bisher habe ich die Funktion genutztKostenDistanzundKostenPfadvon ArcGIS wie folgt:

CostDistance("start_polygon", "costs.tif", "", "outCostLink.tif") CostPath("end_polygon", "outCostDist.tif", "outCostLink.tif", "EACH_ZONE","FID")

Das gleiche würde ich gerne mit GRASS machen. Ich denke, dass die Funktionr.kostenerlaubt dies. Aber das Problem ist, dass ich nicht verstehe, wie man die beiden Polygone in GRASS in Parametern angibt?

Ich habe :

  • ein Kosten-Raster, in dem jede Zelle einen Kostenwert hat.
  • ein Shapefile für das erste Polygon
  • ein Shapefile für das zweite Polygon

Haben Sie ein Anwendungsbeispiel?r.kostenmit zwei Polygonen ?

Vielen Dank für Ihre Hilfe.


Ich weiß, das ist eine alte Frage, aber hier ist ein Riss in der Antwort. Mein Ansatz erscheint mir ein wenig verworren, aber es ist das Beste, was ich mir vorstellen konnte. Ich habe GRASS 6.4 verwendet.

g.region s=0 w=0 e=100 n=100 res=1 # einige Polygone einrichten echo "B 4 10 10 10 20 20 10 10 10" | v.in.ascii -n input=- output=polygonA format=standard echo "B 4 90 90 90 80 80 90 90 90" | v.in.ascii -n input=- output=polygonB format=standard r.mapcalc cost=1.0 # Punkte an den Kanten der Polygone generieren # dmax sollte wahrscheinlich kleiner als Ihre Rasterauflösung sein v.to.points -i input=polygonA output=polygonA_pts dmax=1 v.to.points -i input=polygonB output=polygonB_pts dmax=1 # den kostengünstigsten Weg berechnen # dies startet die Lcp von der Mitte von Polygon B, aber ich kann mir vorstellen, dass die Lcp # Durchqueren Sie die Polygongrenze an dem Punkt, der zu den Lcp führen würde r.cost input=cost output=cummulative_cost start_points=polygonA_pts stop_points=polygonB_pts v.centroids input=polygonB output=polygonB_cent v.to.points input=polygonB_cent output=polygonB_cent_only type =centroid r.drain input=cummulative_cost output=lcp voutput=lcp vector_points=polygonB_cent_only # da der lcp in der Mitte von PolygonB beginnt, # den Lcp an der Polygonkante aufteilen, um einen neuen Startpunkt an der Kante des PolygonsB zu erhalten # dann Führen Sie r.drain erneut aus, um das Endergebnis von der Kante des Polygons t . zu erhalten o Polygonkante v.patch input=lcp,polygonB output=temp v.clean input=temp output=lcp_from_edge tool=break error=new_starting_point r.drain input=cummulative_cost output=lcp voutput=lcp vector_points=new_starting_point --o

Überblick über die Analyse des kostengünstigsten Pfads

Die Analyse des kostengünstigsten Pfads ist ein Entfernungsanalysewerkzeug in GIS, das den kostengünstigsten Pfad oder den Pfad zwischen zwei Standorten verwendet, der für diejenigen, die ihn entlangfahren, die geringsten Kosten verursacht, um die kostengünstigste Route zwischen einer Quelle und einem Ziel zu ermitteln. Die Kosten können eine Funktion von Zeit, Entfernung oder anderen Kriterien sein, die vom Benutzer definiert werden. Bei der Verwendung der kostengünstigsten Pfadanalyse in GIS werden die acht Nachbarn einer Raster-Zelle ausgewertet und der generierte Pfad wird zu den Zellen mit dem kleinsten kumulierten oder Kostenwert verschoben („Entfernungsanalyse mit ArcGIS“). Dieser Vorgang wird mehrmals wiederholt, bis Quelle und Ziel verbunden sind. Der fertige Pfad ist die kleinste Summe der Rasterzellenwerte zwischen den beiden Punkten und hat die niedrigsten Kosten.

Die Least-Cost-Path-Analyse ist ein wichtiges GIS-Tool, das es zu verstehen gilt, da es viele verschiedene Anwendungen hat, die Unternehmen, Stadtplanern und anderen Benutzern helfen können, Zeit und Geld zu sparen.


1 Antwort 1

Zu 1):

nw:weighted-distance-to meldet false, wenn kein Pfad existiert.

Wie kann es keinen Pfad geben, da Ihr Netzwerk vollständig verbunden zu sein scheint? Nun, das Problem ist, dass Sie es nicht nur mit den Schildkröten in Ihrem Netzwerk zu tun haben: Sie bitten einen Wolf, Schildkröten zu bitten, hier einen Weg zu finden. Aber der Wolf selbst ist in Turtles-hier enthalten, und der Wolf ist nicht mit dem Netzwerk verbunden!

Du könntest vielleicht damit durchkommen, andere Schildkröten hier zu fragen, aber du musst sicher sein, dass kein anderer Wolf auf demselben Fleck ist.

Am vernünftigsten ist es wahrscheinlich, eine separate Rasse für die Knoten in Ihrem Netzwerk zu erstellen. Wenn Sie eine Rasse namens Nodes hätten, könnten Sie Nodes fragen-hier sagen, und das würde Ihr Problem gut lösen.

Zu 2):

Ihr Code, wie Sie ihn gepostet haben, lässt sich nicht kompilieren, weil Sie versuchen, my-cost-of-path -1 an die Spitze Ihres Least-Cost-Path-Reporters zu setzen, aber my-cost-of-path ist bereits eine Wolfsvariable. Ihr Code ist für mich verwirrend, daher kann ich Ihnen keine vollständige Lösung geben.

Soll Ihr Least-Cost-Path-Reporter auf einer lokalen Variablen oder auf einer Wolf-Variablen arbeiten? Wenn Sie eine lokale Variable benötigen, sollte diese einen anderen Namen haben. Auf der anderen Seite, wenn Sie direkt mit Ihrer Wolf-Variablen arbeiten möchten, macht es wahrscheinlich nicht viel Sinn, dass Least-Cost-Path ein Reporter ist (und Sie können My-Cost-of-Path sicherlich nicht unter melden das Ende). Sie müssen wahrscheinlich etwas umstrukturieren.


So weisen Sie Polygonen in einem Puffer Pfadkosten zu

Ich möchte möglichst kostengünstige Wege zwischen dem Polygon (zB Polygon A), auf dem sich ein Wolf befindet und allen Polygonen, die sich in einem Radius von 3 km um den Wolf befinden, bauen und das Polygon mit den niedrigsten Kosten finden (siehe auch Wie kann ich die Simulation meines kostengünstigsten Pfadmodells beschleunigen, dann bewegt sich der Wolf auf dieses Polygon (zB Polygon B) zu.Der Vorgang wird ab Polygon B wiederholt usw.

1) Ab dem Polygon A funktioniert der Code, da nur die Polygone im Puffer Pfadkosten haben. Aber vom Polygon B gibt es ein Problem. Der Code findet das Polygon mit den niedrigsten Kosten unter den Polygonen, die sich im Puffer von Polygon A und im Puffer von Polygon B befinden. Der Code muss nur das Polygon finden, das unter den Polygonen im Puffer von Polygon B die niedrigsten Kosten hat Wie kann ich dieses Problem lösen? Muss ich die Zustandsvariable „Pfadkosten“ für jedes Polygonpatch zurücksetzen, bevor ich die Pfadkosten von Polygon B berechnen möchte?

2) Wenn ein gleiches Polygon im Puffer beider drei Wölfe enthalten ist, wie werden die Pfadkosten der Zustandsvariablen "Pfadkosten" für jedes Patch-Polygon zugewiesen, d. h. ist es möglich, den 3-fachen Kostenwert für ein gleiches Polygon zu haben?

3) Warum folgt in der Abbildung unten der Weg mit den geringsten Kosten nicht einer geraden Linie? Der kostengünstigste Pfad nimmt die Patch-Diagonale anstelle der kürzeren Patch-Seite.


BEISPIELE

Konvertieren r.Wasserscheide streamt die Kartenausgabe in eine Vektorkarte

Legen Sie eine andere Farbtabelle für die Akkumulationskarte fest:

Erstellen Sie mit der Akkumulationskarte eine detailliertere Stromkarte und konvertieren Sie sie in eine Vektorausgabekarte. Der Cut-off der Akkumulation und damit die fraktale Dimension ist willkürlich. In diesem Beispiel verwenden wir die mittlere Anzahl der stromaufwärts gelegenen Einzugsgebiete der Karte (im obigen Beispiel berechnet durch r.univar) als Cut-Off-Wert. Dies funktioniert nur mit SFD, nicht mit MFD.

Erstellen Sie eine Karte für Einzugsgebiete und konvertieren Sie sie in eine Vektor-Polygonkarte

Ausgabe auf schöne Weise anzeigen


Genetik

In dieser Untersuchung haben wir das paarweise Fst Matrix geschätzt in Fresia et al. 2011. (Volltext auf Anfrage erhältlich) als genetischer Abstand zwischen Proben aller Standortpaare. Insgesamt 227 mitochondriale Haplotypen wurden bei 282 Individuen identifiziert, die an 29 Standorten in ganz Südamerika gesammelt und in zwei "geographische Gruppen" gruppiert wurden. Aus der Matrix sind die Paare mit Fst=0 (genetisch identische Proben) wurden für die weitere Arbeit zurückbehalten. Dies fst=0 Wert wurde aufgrund der Ausbreitungsfähigkeit des NWS gewählt und kann im Einzelfall angepasst werden.


Schlussfolgerungen

In diesem Beitrag wird ein Algorithmus für die Suche nach dem kürzesten Weg auf reduzierten Graphen entwickelt. Experimentelle Ergebnisse zeigen, dass der vorgeschlagene Algorithmus bei großen Graphen effizienter ist als der Dijkstra-Algorithmus. Darüber hinaus können wir folgendes feststellen:

Der vorgeschlagene Ansatz ist aufgrund der Art und Weise, wie Benutzer in solchen Systemen eine Suche auf dem kürzesten Weg durchführen, besonders auf GIS anwendbar. Dies ermöglicht es uns, Scheitelpunkte zu erweitern und den Einfluss der bei dieser Operation verwendeten Zeit auf die Suche nach dem kürzesten Weg zu vermeiden.

Die Verwendung von reduzierten Graphen reduziert die Reaktionszeit bei der Suche nach dem kürzesten Weg erheblich. Dies ist einer der beiden Hauptansätze, die in der Literatur verwendet werden, um den Rechenaufwand dieser Operation zu reduzieren.

Die Suche nach dem kürzesten Pfad auf einem reduzierten Graphen gewährleistet die Skalierbarkeit bezüglich der Größe des Graphen, an dem die Analyse durchgeführt wird.

Wir beweisen, dass der vorgeschlagene Algorithmus es uns ermöglicht, einen optimalen Pfad in einem reduzierten Graphen zu erhalten. Die Kosten des erhaltenen Pfads sind gleich den Kosten des Pfads, der mit dem Dijkstra-Algorithmus auf dem ursprünglichen Graphen gefunden wurde.

Wir haben eine Methode entwickelt, die in der Lage ist, die Suche nach dem kürzesten Weg in einer Laufzeit ähnlich dem A*-Algorithmus (mit h=0 und h=euklidischer Distanz) durchzuführen.


Ist es möglich, Thiessen-Polygone innerhalb einer GIS-Software zu erstellen, aber nach einem DEM gewichtet?

Im Grunde suche ich nach einem Algorithmus oder einer Erweiterung ähnlich der Least-Cost-Analyse, aber anstatt Punkte auf einem DEM zu verwenden, um einen Pfad (Linienvektor) zwischen den Punkten zu erstellen, möchte ich ein Thiessen (Voronoi) erstellen. Polygone (auf Punkte zentriert), deren räumliche Grenzen durch das DEM definiert würden.

So würde beispielsweise eine Grenze zwischen 2 Polygonen durch die Least-Cost-Analyse zwischen den Mittelpunkten der 2 Polygone bestimmt. Das Ziel wäre dann, anstatt einen Satz von Thiessen-Polygonen mit pfeilgeraden Rändern (wie im Bild) zu erhalten, einen Satz von Polygonen zu erstellen, deren Grenzen durch das DEM (Relief) bestimmt würden. Eine Art Wasserscheide, die sich auf einen einzigen Punkt konzentriert.

Übrigens, es wäre toll, wenn es eine in QGIS anwendbare Lösung gäbe.


Barriere des geringsten Kostenpfads (R) (gdistanz)

Ich versuche, eine Barriere (Flüsse) zu schaffen, die nicht auf dem kostengünstigsten Weg überquert werden kann.

Ich habe eine Übergangsebene mit "Bereichen" erstellt, die die Übergangswerte an Land und an Flüssen enthält. Allerdings ist die Barriere von einem „Puffer“ mit steigenden Werten umgeben, anstatt eine diskrete Barriere zu sein.

Kostenraster und Übergangsschicht Wie zu sehen ist, befindet sich in der Übergangsschicht ein „Puffer“ um die Barriere.

Irgendwelche Ideen zum Erstellen einer diskreten Grenze? vorzugsweise mit der Barriere als Wert 1000, sonst überall als Wert 1.

code: library(gdistance) ## Kostenoberfläche erstellen, wo "land" in der Mitte existiert Kosten <- raster(nrow=100, ncol=100, xmn=0, xmx=100, ymn=0, ymx=100, crs= "+proj=utm") cost[] <- 10 cost[cellFromRowColCombine(cost, 50:55,20:80)] <- 1000 costf <- asFactor(cost < 100) ## Erzeuge Übergangsmatrizen und korrigiere weil 8 Directions trCost <- Transition(costf, "areas", direction=16) trCost1 <- geoCorrection(trCost[[2]], type="c") plot(cost) plot(raster(trCost[[1]]))


Erweitertes Modell topologischer Beziehungen zwischen räumlichen Objekten in geographischen Informationssystemen

In diesem Beitrag wird ein erweitertes Modell zur Beschreibung topologischer Beziehungen zwischen zwei Mengen (Objekten) in geografischen Informationssystemen (GIS) vorgestellt. Ausgehend von der Definition der topologischen Beziehungen zwischen zwei Objekten decken wir zunächst eine Folge topologischer Beziehungen zwischen zwei konvexen Mengen auf.

Zweitens wird basierend auf der neuen Definition ein erweitertes Modell für topologische Beziehungen zwischen zwei Mengen vorgeschlagen. Die topologischen Beziehungen zwischen zwei konvexen Mengen werden als Folge von 4 × 4 Matrizen ausgedrückt, die die topologischen Eigenschaften von A o ∩ B o , A o B, B o A, ∂A ∩ ∂B sind. Das Modell wird auch für die Behandlung der Eigenschaften der topologischen Beziehungen zwischen zwei nichtkonvexen Mengen erweitert, wobei der Faktor der ersten Fundamentalgruppe zu A ∪ B hinzugefügt wird, um diese komplexen Beziehungen zu behandeln.

Die Ergebnisse zeigen, dass die Anzahl der topologischen Beziehungen zwischen den beiden Mengen nicht so einfach wie endlich, sondern unendlich ist und durch eine Folge von Matrizen angenähert werden kann.


Ein Vektoransatz zur Modellierung von Landschaftskorridoren und Habitat-Konnektivität

Die Vernetzung von Landschaften ist ein wichtiger Aspekt beim Verständnis und bei der Argumentation von Ökosystemen. Zwei Features innerhalb einer Landschaft können als verbunden angesehen werden, wenn zwischen ihnen ein Pfad existiert. In vielen Anwendungen wird die Relevanz eines potenziellen Pfads im Verhältnis zu den Kosten oder dem Widerstand bewertet, den er beim Durchqueren darstellt. In der Regel werden die kostengünstigsten Pfade zwischen Landschaftsmerkmalen verwendet, um das Konnektivitätspotenzial anzunähern. Das Durchqueren einer Landschaft zwischen zwei Standorten muss jedoch nicht unbedingt einem kostengünstigsten Pfad entsprechen. Darüber hinaus hat die neuere Forschung begonnen, Zweifel darüber zu wecken, wie verschiedene Arten von Landschaftsmerkmalen die Bewegung beeinflussen können. Daher ist es wichtig, die geografischen Grenzen der Bewegung umfassender zu berücksichtigen. Kontinuierliche (d. h. Raster) und diskrete (d. h. Vektor) Darstellungen der Konnektivität werden häufig verwendet, um die räumlichen Beziehungen zwischen Landschaftsmerkmalen zu modellieren. Während bestehende Ansätze aussagekräftige Einblicke in die Systemtopologie und Konnektivität liefern können, sind sie immer noch in ihrer Fähigkeit, bestimmte Bewegungsarten darzustellen, eingeschränkt und werden stark von der Größe der Flächeneinheiten und der Ableitung der Kosten für die Landschaftsdurchquerung beeinflusst. Um diese Probleme besser anzugehen, schlägt dieses Papier einen neuen vektorbasierten Ansatz zur Abgrenzung der geografischen Ausdehnung von Korridoren und zur Bewertung der Konnektivität zwischen Landschaftsmerkmalen vor. Der entwickelte Ansatz wird angewendet, um die Habitatkonnektivität für Salamander zu bewerten, um die Vorteile dieses Modellierungsansatzes hervorzuheben.

Dies ist eine Vorschau von Abonnementinhalten, auf die Sie über Ihre Institution zugreifen können.


Schau das Video: polygonmangekant trekant, firkant, femkant osv. (Oktober 2021).