Gibt es eine Möglichkeit, eine bestimmte Anzahl von zufälligen Punkten über verschiedene Klassen in einem Raster in QGIS zu erzeugen? Ich habe Erweiterungen wie GRASS oder GDAL, ...
Ich habe keine Antwort, aber irgendwie. Vermutlich mit r oder Python, aber im Moment habe ich nicht den besten Weg gefunden, dies zu tun. Ich bin sehr interessant durch Antwort. Beste
Sie können auch zufällige Punkte als Raster direkt mithilfe r.randomdes Teils "Über verschiedene Klassen" generieren und selbst herausfinden. Daher können Sie die Hin- und Rückkonvertierung
Nikos Alexandris
Antworten:
6
Es ist möglich, wenn Sie Ihr Raster in eine Vektorebene konvertieren.
Ein kurzes Beispiel ausgehend von diesem Klassifizierungsraster:
Verwenden Raster > Conversion > PolygonizeSie diese Option , um sie in eine Vektorebene zu konvertieren:
Wenn Sie Punkte über eine ganze Klasse (und nicht über jeden einzelnen "Patch") erstellen möchten, verwenden Sie das Vector > Geometry Tools > Singleparts to MultipartsTool.
Gehen Sie dann zu Vector > Research Tools > Random Points, wählen Sie die vorherige Vektorebene aus Input Boundary Layerund aktivieren Sie die Use this number of pointsOption, wenn Sie in jeder Klasse die gleiche Anzahl von Punkten erstellen möchten:
Wenn Sie die Anzahl der Punkte abhängig von der Klasse ändern möchten, fügen Sie der Attributtabelle der Polygonebene eine Spalte hinzu, in der Sie die Anzahl der Punkte für jede Klasse angeben, und aktivieren Sie dann die Use value from input fieldOption (anstelle von Use this number of points) in den Zufallspunkten Werkzeug.
Es gibt keinen Weg, eine Vektorebene zu erstellen? Es scheint, als wäre viel Rechenleistung erforderlich, wenn das Raster sehr groß ist (es in einen Vektor umwandeln) ...
Stophface
Nur so kann ich mir vorstellen ... Vielleicht kommt jemand mit einer anderen Lösung, aber ich glaube nicht, dass dieser Schritt vermieden werden kann.
ArMoraer
Hm, es ist wie ich dachte. QGIS beendet die Berechnung nicht. Ich kann polygonisieren, aber das singleparts to multipartsBit funktioniert nicht ... Es stürzt ab
Stophface
Sie können alternativ das Auflösungswerkzeug ausprobieren. QGIS native Dissolve ist möglicherweise sehr langsam, sodass Sie Dissolve polygonsstattdessen das OGR- Tool ausprobieren können (Sie finden es in der Verarbeitungs-Toolbox).
ArMoraer
Ich habe es auch versucht. Gleiche Ergebnisse ... Wie gesagt: Das Polygon, das ich nach dem Polygonisieren meines Rasters erhalte, ist sehr, sehr groß. Ich war überrascht, dass das Polygonisieren funktionierte ...
Stophface
3
Wie ich schrieb: Mit einem großen Raster funktioniert es nicht, das Raster in einen Vektor umzuwandeln und dann ein einzelnes Teil in mehrere Teile aufzulösen. Es gibt eine einfachere Möglichkeit, das Sample mithilfe von direkt auf das Raster zu übertragen R.
library(raster)
library(rgdal)# read a raster, GeoTiff or something
forSampling <- raster(someRaster.tif)# make stratified random sampling# set sp = TRUE to get a spatialPointsDataframe# that one can easily be converted into a shapefile
sampleSp <- sampleStratified(x = forSampling, size =50, xy = TRUE, sp = TRUE)# write it out to a shapefile for further processing
writeOGR(obj = sampleSp, dsn ="aa", layer ="sampleSp", driver="ESRI Shapefile")# this is in geographical projection
r.random
des Teils "Über verschiedene Klassen" generieren und selbst herausfinden. Daher können Sie die Hin- und RückkonvertierungAntworten:
Es ist möglich, wenn Sie Ihr Raster in eine Vektorebene konvertieren.
Ein kurzes Beispiel ausgehend von diesem Klassifizierungsraster:
Verwenden
Raster > Conversion > Polygonize
Sie diese Option , um sie in eine Vektorebene zu konvertieren:Wenn Sie Punkte über eine ganze Klasse (und nicht über jeden einzelnen "Patch") erstellen möchten, verwenden Sie das
Vector > Geometry Tools > Singleparts to Multiparts
Tool.Gehen Sie dann zu
Vector > Research Tools > Random Points
, wählen Sie die vorherige Vektorebene ausInput Boundary Layer
und aktivieren Sie dieUse this number of points
Option, wenn Sie in jeder Klasse die gleiche Anzahl von Punkten erstellen möchten:Wenn Sie die Anzahl der Punkte abhängig von der Klasse ändern möchten, fügen Sie der Attributtabelle der Polygonebene eine Spalte hinzu, in der Sie die Anzahl der Punkte für jede Klasse angeben, und aktivieren Sie dann die
Use value from input field
Option (anstelle vonUse this number of points
) in den Zufallspunkten Werkzeug.quelle
singleparts to multiparts
Bit funktioniert nicht ... Es stürzt abDissolve polygons
stattdessen das OGR- Tool ausprobieren können (Sie finden es in der Verarbeitungs-Toolbox).Wie ich schrieb: Mit einem großen Raster funktioniert es nicht, das Raster in einen Vektor umzuwandeln und dann ein einzelnes Teil in mehrere Teile aufzulösen. Es gibt eine einfachere Möglichkeit, das Sample mithilfe von direkt auf das Raster zu übertragen
R
.quelle