Saya memiliki dua shapefile, Point dan Polyline. Saya mencoba untuk mengisi lapisan polyline saya dengan ID data titik (systemID) di mana garis mulai ke tempat mereka berakhir; misalnya. buat dua kolom (dari dan ke). Garis sudah memiliki arah aliran yang ditugaskan padanya. Saya menggunakan alat ArcHydro tetapi Arcpy juga baik-baik saja.
Di ArcHydro saya telah mencoba menggunakan Alat Atribut> Hasilkan Dari / Ke Node untuk baris tetapi ini menciptakan nilai untuk dan dari yang bukan dari data titik saya. Alternatif saya yang lain adalah menggunakan Feature to Vertices dan menggabungkan hasilnya ke tabel data poin saya untuk mendapatkan systemID. Tetapi kemudian saya harus memperbarui lapisan polyline juga. Saya yakin ada cara yang lebih mudah untuk melakukannya.
Catatan: tidak semua garis memiliki titik di simpul, nilai kosong baik untuk mereka.
sumber
Jawaban:
Terkadang lebih baik tidak menggunakan solusi out of the box. Inilah sebabnya saya sarankan
Goto 2, tetapi gunakan titik terakhir untuk menetapkan TO nodeID
sumber
Saya melakukan hal yang sama beberapa bulan yang lalu. Saya menggunakan arcpy tetapi skripnya terlalu panjang untuk dikirim di sini jadi saya akan memberi Anda garis besar tentang apa yang saya lakukan.
Saya menggunakan gabungan spasial untuk mendeteksi titik / node mana dalam fitur garis tertentu.
Karena sambungan spasial tidak memperhitungkan arah aliran, saya menggunakan arcpy untuk memastikan titik awal dan titik akhir mana. Saya bisa melakukan ini dengan menggunakan fungsi menjelaskan busur untuk mengekstrak informasi koordinat untuk simpul mulai / akhir dari fitur garis dan membandingkannya dengan nilai koordinat titik-titik yang terhubung.
Akhirnya, setelah saya menentukan titik to / from mana yang saya gunakan fungsi setValue untuk mengisi bidang ke / dari dalam dataset polyline asli.
Jelas, ada sedikit lebih dari ini tetapi saya telah menguraikan poin utama.
sumber
Saya terinspirasi oleh @FelixIP, tetapi saya ingin menulis solusi tanpa bergabung atau membuat file tambahan, karena jaringan saya cukup besar dengan 400K + pipa dan 500K + node.
Membangun jaringan geometrik memaksa X, Y dari node dan ujung pipa menjadi bertepatan. Anda dapat mengakses lokasi ini dengan token bentuk dalam kursor busur dan mencocokkannya. Token bentuk untuk garis mengembalikan array simpul sesuai urutan penggambarannya. Di jaringan saya, urutan undian pipa sangat QA'd karena kami menggunakan ini untuk mengatur arah aliran. Jadi, simpul pertama adalah awal pipa, dan simpul terakhir adalah ujung pipa.
Referensi: ASSETID = id pipa, UNITID = simpul id di awal pipa, UNITID2 = simpul id di ujung pipa.
sumber