Saya memiliki beberapa objek fitur polyline di python. Sekarang saya ingin mendapatkan semua poin dari polyline.
Misalnya, jika polyline memiliki titik [0,0]
akhir titik awal [5,5]
. Hasil: [1,1];[2,2];[3,3];[4,4];[5,5]
.
Saya ingin menemukan semua titik integer pada garis itu termasuk titik akhir. Untuk garis lurus ini sangat sederhana, tetapi jika polyline memiliki Beizer Curve, Circular Arc, jenis geometri Elliptic Arc, lalu bagaimana saya bisa melakukannya?
EDIT:
Saya hanya dapat menggunakan alat-alat yang tersedia di semua tingkat lisensi ArcGIS. Misalnya, ArcGIS Basic.
arcpy
point
features
geometry-conversion
pengguna
sumber
sumber
Jawaban:
Saya tahu ini sudah lama tetapi saya mencari yang sama karena saya tidak memiliki ArcInfo untuk alat FeatureVerticesToPoints . Setelah menggunakan solusi kursor Pencarian di atas, saya maju untuk menyederhanakan kode dan menemukan bahwa menggunakan NumPy Array dalam Modul Akses Data, skrip sederhana dan sangat cepat dapat dihasilkan. Saya menggunakan ini sebagai alat skrip.
Catatan: Kuncinya adalah
explode_to_points
parameter dalamarcpy.da.FeatureClassToNumPyArray
Berikut ini tautan ke Lokasi Repositori ArcGIS: Kelas Fitur ke Poin
sumber
ctrl-k
terapkan pemformatan kode (sama untuk yangb
lama dani
talik). Dengan konvensi kita cenderung menghindari bit cerewet seperti "hai", "terima kasih", "ceria". Itu tersirat sebagai selalu hadir, dan membantu memperkuat ide tempat ini berbeda dari forum dan email biasa. Selamat bergabung.Seperti yang saya pahami, Anda perlu meningkatkan jumlah simpul untuk fitur polyline Anda. Dan juga untuk mengubah semua segmen "Beizer Curve, Circular Arc, Elliptic Arc" menjadi beberapa segmen garis.
Untuk tugas ini di ArcGIS Anda dapat menggunakan alat Densify (Editing) di ArcToolbox.
Kemudian Anda dapat mengonversi simpul poline Anda ke fitur titik seperti yang disarankan Darren Cope dan artwork21.
Jika Anda lebih suka melakukannya di ArcMap, lihat Membuat poin baru di sepanjang topik bantuan baris .
sumber
Yang berikut ini harus bekerja pada polylines dan polygon:
Untuk beberapa data jalan UK, saya mendapatkan ini; daftar X, Y berpasangan untuk setiap titik yang membentuk polyline:
sumber
print pnt.X, pnt.Y
denganpart_list.append([pnt.X, pnt.Y])
. Dan Anda mencetak ini di akhir perulangan. Bagaimana kode Anda mendapatkan semua poin dari satu baris tetapi kode ESRI tidak?Seperti yang disarankan Darren Cope, mengonversi lapisan Anda ke titik titik dapat dilakukan menggunakan alat Fitur Titik ke Poin .
Berikut ini adalah kode python snippedt:
sumber