Saya memiliki titik awal dan titik akhir polyline. Bagaimana saya bisa mendapatkan titik pada polyline itu dari titik akhir yang ditentukan oleh jarak yang diberikan.
Bagaimana saya bisa mendapatkan ini dengan menggunakan arcpy asalkan skrip ini harus bekerja pada ArcView tanpa mengimpor modul apa pun ( Seperti jawaban ini ). Saya mencoba untuk tidak memasukkan nilai kode.
Pertanyaan terkait:
arcpy
line
linear-referencing
pengguna
sumber
sumber
object.interpolate(distance[, normalized=False])
. Apakah ini metode arcpy? Jika ya, tolong kirimkan tautannya. Saya mencari di Google, tetapi tidak menemukannya.Jawaban:
Ini terdengar mirip dengan "Linear Referencing" dan toolset itu akan tersedia di ArcView. Selain itu, Anda dapat membuat skrip alat ini dengan sangat mudah.
Tautan ke Bantuan ESRI untuk Referensi Linear
sumber
Berdasarkan kebutuhan Anda, seperti yang dimaksud @LouisH, menggunakan Linear Referencing jelas merupakan cara yang harus dilakukan. Saya mengumpulkan beberapa kode yang harus memenuhi kebutuhan Anda bukan elemen hard-coding, tetapi meminta mereka sebagai parameter.
Sebagai penjelasan, alat referensi Linear yang digunakan di bawah ini mengambil "Rute", dalam kasus Anda fitur garis, dan tempat "Acara", dalam kasus Anda titik, di sepanjang mereka berdasarkan bidang jarak. Ini menghasilkan FeatureLayer, yang disimpan dalam memori, yang merupakan alasan untuk fungsi terakhir yang menyalin fitur-fitur tersebut ke dalam suatu kelas fitur keluaran.
Sunting - Satu hal yang perlu dipikirkan dengan alat ini, dan kemungkinan operasi apa pun untuk menemukan titik berdasarkan jarak dari ujung garis, adalah dari ujung mana Anda akan memulai. Alat referensi linear, misalnya, bekerja berdasarkan arah digital dari sebuah garis. Penting untuk memastikan bahwa Anda memiliki beberapa cara untuk mengidentifikasi titik akhir yang menjadi dasar pengukuran Anda.
sumber
Memecahkan masalah referensi linear seperti ini
without importing any modules
berada di luar jangkauan saya ..Saya telah menggunakan
Shapely
(paket python untuk manipulasi dan analisis geometri geospasial 2D. Dan ini berlisensi BSD :-))unduh dari sini . Versi 2.6 yang merupakan satu-satunya yang mendukung arcgis 10 arcpy..Ini adalah instalasi sederhana (ukuran 1,5 MB)
dan sekarang di sini adalah skrip arcpy untuk mencapai tujuan .. maafkan python saya .. hanya hari ini saya belajar tentang loop, tuple dll :)
Catatan : ini tidak akan berfungsi jika fitur memiliki segmen kurva
sumber
Saya menemukan pertanyaan ini mencoba melakukan apa yang saya pikir adalah hal yang sama. Saya ingin semuanya dilakukan melalui arcpy. Menggunakan Linear Referencing tidak masuk akal bagi saya karena saya belum memiliki poin acara (dan saya tidak tahu cara menggunakan LR untuk mendapatkannya). Inti dari apa yang akhirnya saya gunakan adalah
Ini membutuhkan Arc 10.1 atau lebih tinggi; Saya tidak dapat mengetahui apakah ini tersedia di bawah tingkat lisensi ArcInfo yang saya miliki (OP ArcView tertentu).
Dalam contoh saya di atas, saya ingin sebuah titik tidak pada jarak tetap, tetapi dengan persentase dari keseluruhan panjang garis. Untuk melakukan ini, saya memberikan argumen opsional kedua ke
positionAlongLine
. Anda melewatkan argumen kedua jika Anda hanya ingin menentukan jarak absolut. Ini dok .Sampel kode yang lebih lengkap adalah
'flFL'
adalah featureLayer saya di mana saya ingin mencari titik. Berjalan cukup cepat.NumPyArrayToFeatureClass
adalah cara yang sangat bagus untuk membuang semua poin saya kembali ke featureClass (terima kasih kepada rekan saya Curtis untuk bagian itu!). Telah bereksperimen denganAppend_management
tetapi itu agak lebih lambat.sumber
Mungkin merupakan pembunuhan yang berlebihan, tetapi jika Anda memiliki akses ke ekstensi Analisis Jaringan Anda bisa membuat jaringan dari polyline Anda dan kemudian membuat area layanan di sekitar titik input Anda, menentukan ukuran SA sebagai jarak yang diinginkan. Berikut ini adalah contoh sepintas dengan 111 meter SA dari titik:
Maka Anda harus menemukan poin di mana SA melintasi garis.
sumber
saya pikir Anda bisa mendapatkannya dengan metode Feature Vertices To Points (Manajemen Data). Anda bisa mendapatkan info lebih lanjut di sini .
atau Anda dapat memeriksa Split Line At Point (Manajemen Data) di sini .
mereka tidak cukup sepenuhnya tetapi Anda dapat menulis kode Anda sendiri ...
Saya harap ini membantu Anda ...
sumber