Ich verwende QGIS 1.8 Lisboa. Wenn nach der Berechnung der Schwerpunkte aus einem Polygon-Shapefile einige außerhalb der Polygonumrisse liegen, möchte ich sie auf das Polygon verschieben, aus dem sie stammen. Das Kriterium sollte eindeutig sein, da ich sie verwenden muss, um Koordinaten zu extrahieren, die als Identifikationscode für das Polygon selbst verwendet werden sollen. Daher sollte die Prozedur bei jeder Ausführung für dasselbe Polygon dieselbe Punktposition ausgeben (keine zufällige Position wie die durch die Funktion "Zufallspunkte" angegebene, die bei jeder Ausführung ein neues Ergebnis liefert).
9
Antworten:
Sie können die Shapely-Python-Bibliothek verwenden, die eine Funktion bietet
representative_point()
, die garantiert innerhalb des Polygons liegt.Hier ist ein Python-Skript, das in der QGIS Python-Konsole ausgeführt werden kann. Die Polygonebene, für die Sie das Attribut erstellen möchten, sollte ausgewählt werden. Die Funktion übernimmt den Namen des Attributs, das Sie aktualisieren möchten. Das Attribut muss bereits in Ihrer Ebene vorhanden sein, es muss ein Zeichenfolgentyp sein und es sollte lang genug sein (30 Zeichen).
Hier ist ein Beispiel für die Punkte, die der Algorithmus gefunden hat:
quelle
Das Schwerpunktwerkzeug ftools kann den Schwerpunkt außerhalb des Polygons platzieren, wenn er konkav ist.
ST_PointOnSurface
wird auf jeden Fall tun, was Sie wollen. Sie können den Befehl in QGIS verwenden, wenn Sie SPIT installiert haben, um Ihr Shapefile in PostGIS zu übertragen, und dann die Abfrage mit dem PgQuery-Plugin ausführen.Wenn die Installation von PostGIS für eine einmalige Verwendung etwas schwierig ist, können Sie alternativ Spatialite in QGIS verwenden. Sie können dann das QSpatiaLite-Plugin verwenden, um Ihre Daten in SpatiaLite zu importieren und die Abfrage auszuführen (SpatialLite-Ehrungen
ST_PointOnSurface
).quelle
Wenn ich Sie richtig verstehe, verwenden Sie: Vector-> Research Tools_> Random Points. Wählen Sie nun unter "Stratified Sampling Design (Einzelpolygone)" den Wert aus dem Eingabefeld aus und verwenden Sie das entsprechende Feld, das den numerischen Wert der Punkte angibt, die für jedes unterschiedliche Polygon generiert werden sollen
quelle
Das Realcentroids-Plugin, das über Plugins> Plugins verwalten und installieren installiert werden kann, hat in QGIS 2.2 für mich funktioniert, um Schwerpunkt-ähnliche Punkte zu generieren, die in jedem Polygon erzwungen werden, wenn sie konkav sind (der Punkt liegt sehr nahe am Rand). Ich habe das von Kurt vorgeschlagene Werkzeug für zufällige Punkte ausprobiert und obwohl ich 1 Punkt pro Polygon angegeben habe, werden stattdessen zwei generiert. Ein zusätzlicher Nachteil ist, dass die Punkte in den meisten Fällen nicht den Schwerpunkt darstellen, da sie zufällig sind.
http://www.agt.bme.hu/gis/qgis/realcentroid/
quelle