Bagaimana titik tengah polyline dapat dihitung menggunakan kerangka kerja geoproses , misalnya dalam skrip Python?
The polyline.centroid properti mengembalikan Centroid benar jika itu adalah dalam atau di fitur; jika tidak, titik label dikembalikan . Centroid jarang terletak pada garis tidak lurus, yang tidak berguna untuk tujuan saya.
Alat Feature Vertices to Points memiliki opsi titik tengah tetapi ini membutuhkan ArcInfo, yang saat ini tidak saya miliki.
Opsi bisa berupa menambahkan langkah-langkah ke polyline dan membuat event rute 50% di sepanjang garis.
Solusi lain adalah dengan menggunakan opsi Calculate Geometry di ArcMap, tetapi idealnya saya perlu mengotomatiskan proses ini dalam sebuah skrip.
Adakah saran yang lebih baik / lebih cepat?
Saya terbatas pada ArcGIS 10.0 (tanpa akses ke lisensi tingkat ArcInfo) untuk saat ini.
sumber
Jawaban:
Kelas Polyline memiliki metode baru yang disebut "positionAlongLine" di ArcGIS 10.1. Ini akan mengembalikan objek PointGeometry dengan tepat satu titik pada jarak yang ditentukan dari ujung awal garis, atau sebagian kecil dari jarak antara awal dan akhir . Untuk menemukan titik tengah, Anda hanya perlu melakukannya
positionAlongLine(0.5,True)
. Untuk menemukan titik tengah untuk garis dan menambahkan koordinatnya ke tabel atribut, Anda bisa melakukan Kalkulator Bidang pada pernyataan berikut:!Shape!.positionAlongLine(0.5,True).firstPoint.X
!Shape!.positionAlongLine(0.5,True).firstPoint.Y
Perhatikan bahwa Anda harus menggunakan parser Python di bidang kalkulator agar ini berfungsi.
Jika Anda ingin mengakses objek titik ini dengan Python, Anda cukup melakukan hal berikut:
sumber
Dengan lisensi ET Geo Wizards Anda dapat mencoba fungsi "Polyline to Point" dengan opsi "Middle points" dan "Remove Duplicate Points" (opsional): http://www.ian-ko.com/ET_GeoWizards/UserGuide/convertPl2Pnt. htm
Anda dapat menerapkan ET Geo Wizards seperti ini:
Untuk variabel input fungsi ET, silakan lihat: http://www.ian-ko.com/ET_GeoWizards/UserGuide/Scripting/scripting_PolylineToPoint.htm
sumber