Wie kann der Mittelpunkt einer Polylinie mithilfe des Geoverarbeitungs-Frameworks berechnet werden , z. B. in einem Python-Skript?
Die Eigenschaft polyline.centroid gibt den wahren Schwerpunkt zurück, wenn er sich innerhalb oder auf dem Feature befindet. Andernfalls wird der Beschriftungspunkt zurückgegeben . Der Schwerpunkt befindet sich selten auf nicht geraden Linien, was für meine Zwecke nutzlos ist.
Das Werkzeug Feature-Eckpunkte zu Punkten verfügt über eine Mittelpunktoption, erfordert jedoch ArcInfo, das ich derzeit nicht habe.
Eine Option könnte darin bestehen, den Polylinien Kennzahlen hinzuzufügen und ein Routenereignis zu 50% entlang der Linie zu erstellen.
Eine andere Problemumgehung besteht darin, die Option "Geometrie berechnen" in ArcMap zu verwenden. Idealerweise muss dieser Prozess jedoch in einem Skript automatisiert werden.
Irgendwelche besseren / schnelleren Vorschläge?
Ich bin momentan auf ArcGIS 10.0 (ohne Zugriff auf eine ArcInfo-Lizenz) beschränkt.
quelle
Antworten:
Die Polyline- Klasse verfügt in ArcGIS 10.1 über eine neue Methode namens "positionAlongLine". Dadurch wird ein PointGeometry- Objekt mit genau einem Punkt in einem bestimmten Abstand vom Anfangsende der Linie oder einem Bruchteil des Abstands zwischen Start und Ende zurückgegeben . Um den Mittelpunkt zu finden, müssten Sie nur tun
positionAlongLine(0.5,True)
. Um die Mittelpunkte für Linien zu finden und ihre Koordinaten zur Attributtabelle hinzuzufügen, können Sie den Feldrechner für die folgende Anweisung ausführen:!Shape!.positionAlongLine(0.5,True).firstPoint.X
!Shape!.positionAlongLine(0.5,True).firstPoint.Y
Beachten Sie, dass Sie den Python-Parser im Feldrechner verwenden müssen, damit dies funktioniert.
Wenn Sie in Python auf dieses Punktobjekt zugreifen möchten, gehen Sie wie folgt vor:
quelle
Mit der ET Geo Wizards-Lizenz können Sie die Funktion "Polylinie zum Punkt" mit den Optionen "Mittelpunkte" und "Doppelte Punkte entfernen" (optional) ausprobieren: http://www.ian-ko.com/ET_GeoWizards/UserGuide/convertPl2Pnt. htm
Sie können ET Geo Wizards wie folgt implementieren:
Eingabevariablen der ET-Funktion finden Sie unter: http://www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htm
quelle