Haben Sie eine Idee, wie Sie die Mittellinie des folgenden Polygons (Abb. 1) mithilfe von PostGIS-Funktionen oder Python-Modulen extrahieren können? Ich habe Voronoi Function ausprobiert, aber das ist für diese Art von Form nicht hilfreich. Ich möchte so etwas wie Fig2 Blackline.
libSFCGAL.so
Datei im/usr/local/lib
Verzeichnis installiert , weiß aber nicht, wie ichST_StriaghtSkeleton()
die Datenbank einspielen soll? Irgendeine Idee?Antworten:
Dies mag ein falsches Tool für Sie sein, aber Sie können es einfach mit dem OpenJUMP- und Skeletonizer-Plugin tun. Das Plugin kann von http://sourceforge.net/projects/jump-pilot/files/OpenJUMP_plugins/More%20Plugins/JUMP%20Skeletonizer%20Plugin/ heruntergeladen werden.
Die Zip-Datei enthält ein gutes Handbuch. Das Plugin ist für Streams und Gewässer gedacht, aber Ihr Polygon ahmt für mich einen Stream nach.
Dies ist Ihr Polygon, wie ich es digitalisiert habe. Beachten Sie die Eckpunkte in den Mittellinien der Ein- / Ausgänge.
Einstiegspunkte auf einer separaten Ebene digitalisiert. Punkte müssen an Scheitelpunkten an der Polygongrenze einrasten.
Verwenden Sie die Skeletonizer-Werkzeuge und füllen Sie die Felder aus
Holen Sie sich das Ergebnis
quelle
java.lang.Exception: Could not determine shapefile type - data is either all GeometryCollections or empty (Illegal State Exception)
beim Ausführen dieses Skeletonizer-PluginsWenn Ihr Polygon ein Raster ist, digitalisieren Sie es.
Sobald Ihr Polygon wirklich ein Polygon ist :), liegt eine erste Lösung, wie @WhiteboxDev sagte, es ist das gerade Skelett, aber es hat das Problem, dass es neben der gewünschten Mittellinie auch viele Segmente zurückgibt, die von dieser Linie zu strahlen der Rand Ihres Polygons. Wenn Sie jedoch PostGIS 2.2+ haben, können Sie
ST_ApproximateMedialAxis()
stattdessen das verwenden, was Sie möchten.quelle