Wie erstelle ich zufällige Punkte außerhalb von Polygonen?

11

Das Werkzeug Zufälliger Punkt erstellen kann eine bestimmte Anzahl von Punkten innerhalb von Polygonen generieren. Ich frage mich, ob es angesichts eines Begrenzungsrahmens eine Möglichkeit gibt, zufällige Punkte außerhalb dieses Polygons zu generieren.

Gesehen
quelle

Antworten:

13

Persönlich mag ich den Zufallspunktalgorithmus in ArcGIS nicht. Alternativ können Sie die GME- genrandompntsFunktion ( Geospatial Modeling Environment ) verwenden. Sie können bestimmte Polygone identifizieren, bei denen zufällige Punkte ausgeschlossen werden (siehe hervorgehobenen Bereich im angehängten JPG). Das Beste von allem ist, dass diese Software kostenlos ist.

GME bietet Ihnen eine Reihe von Analyse- und Modellierungswerkzeugen, die von kleinen „Bausteinen“ reichen, mit denen Sie einen anspruchsvollen Workflow erstellen können, bis hin zu vollständig eigenständigen Analyseprogrammen. Es verwendet auch die außerordentlich leistungsstarke Open-Source-Software R als statistische Engine, um einige der Analysetools zu steuern. Eine der vielen Stärken von R ist, dass es Open Source ist, vollständig transparent und gut dokumentiert: wichtige Merkmale für jede wissenschaftliche Analysesoftware.

Geben Sie hier die Bildbeschreibung ein

Aaron
quelle
1
Können Sie weitere Informationen darüber geben, warum Ihnen der Standardalgorithmus für zufällige Punkte nicht gefällt und warum GMEs optimaler sind?
Stephen Lead
@ Aaron Schön! Ich habe es nicht versucht, da es Hawths Modellierungswerkzeuge waren - ich muss es herunterladen und es knacken!
om_henners
3
@Stephen Innerhalb des letzten Monats habe ich zufällige Punkte in vier Klassen generiert. Ich bin auf mehrere Probleme gestoßen: 1) ArcGIS hat mehrere Punkte außerhalb meiner Eingabepolygone erzeugt. 2) Arc hatte Schwierigkeiten, mit Bereichen umzugehen, die für meine Eingabeparameter zu klein waren (z. B. minimal zulässiger Abstand = 50 m & Punkte = 50), während GME diese handhabte Probleme, indem zufällige Punkte erzeugt werden, bis Regeln verletzt wurden, und dann eine Warnmeldung angezeigt wird. 3) Das RPG von Arc ist langsamer als das von GME, wahrscheinlich aufgrund der Verwendung des lokalen Speichers durch R.
Aaron
Schön! Hat es eine Python-Begrenzung, damit ich @Aaron stapelweise verarbeiten kann?
Gesehen
2
@Seen Check-out Automatisierung und Stapelverarbeitung (S. 10) im Support-Dokument: Spatialecology.com/gme/images/SpatialEcologyGME.pdf
Aaron
4

Sie müssen ein Donut-Polygon erstellen, wobei das Donut-Loch den inneren Nichtpunktraum und eine räumliche Ausdehnung den Begrenzungsbereich des polygonalen Bereichs darstellt.


quelle
Nur ein Nachtrag: mit einer ArcInfo - Lizenz das Sie tun können , mit dem Erase - Tool
om_henners
3

Entschuldigung, ich kann einfach nicht widerstehen. Da es immer gut ist zu wissen, was mit so etwas wie GME unter der Haube vor sich geht, finden Sie hier eine Lösung im tatsächlichen R-Code.

require(sp)
require(rgeos)

# Create example polygon data
x <- readWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))")
y <- readWKT("POLYGON ((3 3, 7 3, 7 7, 3 7, 3 3))")

# Calculate difference in polygon geometries to create null polygon
d <- gDifference(x,y)

# Create random sample in non-null polygon
rs <- spsample(d, 20, type="random")  

# Plot results  
plot(d, col="red")
  plot(rs,pch=19,col="black",add=TRUE)

Dieser Ansatz unterscheidet sich wahrscheinlich stark von dem, wie GME dies tut, verwendet jedoch native R sp-Raumklassen und eine ziemlich neue Topologiebibliothek, wodurch der Code sehr effizient wird. Dies gibt auch ein Beispiel, das leicht in eine for-Schleife eingeschlossen werden kann.

Jeffrey Evans
quelle