Bagaimana cara melacak lapisan garis (jaringan jalan) melalui titik?

8

Saya memiliki jaringan jalan (ungu), File titik (hijau) dan titik awal (kuning).

Saya ingin melacak file titik berdasarkan jaringan jalan. Pikirkan titik-titik itu sebagai tiang telepon, tetapi yang saya inginkan adalah peta yang menunjukkan saluran telepon (line shapefile). Ada skema penomoran untuk "tiang telepon" tetapi tidak bagus dan untuk contoh ini saya hanya akan menganggap mereka tidak bernomor.

Adakah yang punya solusi? Salah satu yang terlihat cukup bagus adalah hanya buffer poin dan kemudian memotong jaringan jalan dari buffer. Tapi saya ingin sesuatu yang lebih lengkap. Itu perlu diotomatisasi karena ada 12.000 "tiang telepon"

masukkan deskripsi gambar di sini

Ini
sumber
1
Bagaimana solusi yang Anda cari berbeda dengan, katakanlah, cukup memilih fitur jalan yang cukup dekat ke titik mana pun? Apa tepatnya yang Anda maksud dengan "lebih lengkap"?
whuber
Nah ruas jalan bisa memperpanjang melewati titik 1000 kaki. Saya menggunakan lengkap karena ketika saya dipotong dari buffer jaringan itu berombak. Apa yang seharusnya saya katakan lebih akurat.
Thad
1
Anda benar, Anda tidak ingin klip dari buffer! Sepertinya Anda ingin menarik kembali ruas-ruas jalan tempat tiang-tiang itu berada sehingga ruas-ruas itu tidak meluas terlalu jauh melampaui garis-garis kutub. Tapi bagaimana Anda membedakan jarak sepanjang jangka panjang dari dua jalur berbeda? Bisakah Anda memberikan kriteria untuk ini?
whuber
Yah kesenjangannya saya tidak berpikir akan menjadi masalah. Garis hitam mewakili area layanan mini yang internal ke area tersebut. Yah alasannya, selain hanya memiliki itu untuk visualisasi, adalah untuk perencanaan, dan mungkin akhirnya menambahkan lebih banyak informasi dalam file baris daripada yang dapat (dapat digunakan) disimpan dalam file titik (mis. Diameter).
Thad

Jawaban:

9

Ada banyak cara untuk mengatasi hal ini, tetapi beberapa menonjol karena bersifat umum dan efektif. Untuk memahami ini, mari kita sebutkan beberapa masalah yang mungkin harus ditangani:

  • Mungkin ada celah di antara kutub yang begitu besar, algoritme mungkin melihat celah tersebut sebagai kerusakan aktual dalam sistem transmisi.

  • Mungkin ada beberapa ruas jalan pendek, penting untuk menghubungkan jalan ke jaringan, yang tidak memiliki tiang di dekat mereka. Segmen ini tidak akan dipilih berdasarkan kedekatan dengan kutub tetapi merupakan bagian penting dari solusi.

  • Mungkin ada kutub yang tidak dapat diakses melalui jalan darat dari titik pusat. Kutub-kutub ini mungkin merupakan bagian dari jaringan transmisi lain yang berasal dari titik pusat lainnya.

Saya juga mengadopsi pendirian bahwa karena Anda sudah memiliki jaringan polyline (jalan), akan lebih menguntungkan untuk mengeksploitasinya daripada menghubungkan titik-titik tiang dengan polyline yang sama sekali baru, yang kemungkinan tidak sejajar dengan jalan dengan sangat baik.

Pertimbangan ini menunjukkan bahwa bahan-bahan dari solusi yang baik akan mencakup beberapa langkah kunci:

  1. Hitung jarak jalan dari titik pusat ke semua kutub.

  2. Identifikasi kutub yang memiliki jarak maksimum lokal di sepanjang ruas jalan khusus mereka : yaitu, tidak ada tetangga mereka di ruas yang sama memiliki jarak lebih besar.

  3. Bentuk jalur terpendek dari maxima lokal ke titik pusat.

Persatuan jalur terpendek ini akan melacak jaringan transmisi. (Memang, langkah 2 tidak benar-benar diperlukan, tetapi itu akan sangat mengurangi perhitungan yang terlibat dalam langkah 3.)

Langkah 1 dan 3 dapat dilakukan dengan menggunakan representasi jaringan (dalam Analis Jaringan) atau representasi raster (dalam Analis Tata Ruang, menggunakan perhitungan CostDistance atau FlowAccumulation). Langkah 2 adalah ringkasan basis data langsung: setelah langkah 1, setiap kutub akan memiliki segmen jalan dan jarak sebagai atribut. Temukan jarak maksimum berdasarkan segmen jalan dan pilih kutub yang mencapai jarak maksimum tersebut.

Ada beberapa situasi masalah potensial:

  1. Beberapa kutub mungkin tidak dekat dengan jalan. Tidak ada dalam pernyataan masalah yang memberi tahu kita apa yang harus dilakukan tentang ini. Mereka dapat ditangani secara otomatis dengan perhitungan raster (kisi biaya yang sesuai akan menetapkan impedansi tinggi untuk sel non-jalan, tetapi bukan impedansi tak terbatas, yang memungkinkan kutub yang terisolasi terhubung ke jalan terdekat, tetapi sayangnya tidak satu sama lain,). Paling tidak, setelah mendapatkan solusi pada langkah 3 Anda dapat memilih semua kutub tidak pada jaringan itu dan mempertimbangkan bagaimana mereka harus ditangani (mungkin dengan secara manual membuat koneksi untuk mereka atau mungkin dengan solusi pohon spanning minimum Euclidean).

  2. Jika beberapa ruas jalan membentuk loop, Anda harus melewati langkah 2, karena jika tidak bagian dari loop tersebut dapat hilang.

  3. Polyline jalan mungkin tidak benar-benar membentuk jaringan yang terhubung. Mungkin ada celah kecil di antara ruas-ruas jalan (kadang-kadang hanya dalam ukuran milimeter) yang memisahkan jaringan yang tampak terhubung secara visual. Ini adalah masalah kualitas data yang akan mengganggu solusi apa pun, kecuali untuk beberapa yang berbasis raster.


Pada satu titik saya menyebutkan FlowAccumulasi secara sepintas. Ini mungkin mengejutkan orang: apa hubungan masalah ini dengan aliran air dan daerah aliran sungai? Menatap gambar untuk sementara waktu. Bayangkan titik asal sebagai titik rendah pada lansekap dan jalan dengan tiang telepon sebagai jejak aliran air yang mengalir ke titik rendah itu. Jika kita dapat menciptakan permukaan yang jalan-jalan benar-benar adalahsungai, maka kita bisa membiarkan sedikit "hujan" jatuh di lokasi masing-masing kutub dan mengalir menuruni bukit. Poin yang menjadi basah adalah solusi yang kami cari: mereka menghubungkan kutub secara efisien ke jaringan yang mengikuti jalan. Perhitungan CostDistance yang tepat - dengan impedansi bukan nol yang rendah di sepanjang jalan dan impedansi yang sangat tinggi tetapi tidak terbatas di jalan - akan menciptakan permukaan yang persis seperti itu. Cara lain untuk membuat permukaan itu adalah dari grid jarak Euclidean untuk jalan. Itu sempurna, kecuali jalanannya datar. Mereka harus dimiringkan; untuk ini, tambahkan kelipatan sangat kecil dari jarak di sepanjang jalan ke grid jarak Euclidean. (Jarak jalan masih membutuhkan perhitungan CostDistance, yang mahal, tapi kali ini hanya perlu dilakukan untuk sel jalan, daripada semua sel kisi, yang akan mempercepatnya dengan urutan besarnya. Itu memungkinkan kita untuk menggunakan kisi resolusi sangat tinggi jika kita mau, sehingga menghindari kemungkinan kesalahan diskritisasi yang dibuat dengan kisi kasar.)

whuber
sumber
7

Pada dasarnya mengikuti pendekatan whuber, saya akan mencoba ini:

  1. Membagi jalan di titik awal (kuning).
  2. Tambahkan tiga bidang ke jalan: FROMDIST, TODIST, dan PARENTROAD_ID. FROMDIST akan menyimpan jarak dari titik awal untuk dari simpul dari polyline, juga untuk TODIST. PARENTROAD_ID akan menyimpan ROAD_ID jalan yang lebih dekat ke titik awal.
  3. Buat Pohon Spanning Minimum yang terdiri dari bagian jalan, lalu hitung nilai FROMDIST, TODIST, dan PARENTROAD_ID.
  4. Tambahkan tiga bidang ke dalam titik featureseclass: ROAD_ID, DISTANCE, dan PARENTPOINT_ID.
  5. Untuk setiap titik, cari fitur jalan terdekat, lalu sisipkan nilai DISTANCE berdasarkan pada FROMDIST dan TODIST dari polyline bersama dengan jarak sepanjang polyline yang dihitung melalui ICurve.QueryPointandDistance .
  6. Untuk setiap titik, hitung PARENTPOINT_ID, yang mewakili ID dari titik berikutnya lebih dekat ke titik awal.
  7. Untuk setiap titik buat garis garis antara dirinya dan titik yang dirujuk oleh PARENTPOINT_ID. Tulis polyline ini ke kelas fitur keluaran.
Kirk Kuykendall
sumber
3

Kedengarannya bagi saya seperti Anda benar-benar mencari Jaringan Geometrik dalam suatu geodatabase.

Bagaimana jika Anda membuat jaringan geometris di mana jalan Anda akan berfungsi sebagai "garis trunk" dan kemudian cukup tambahkan "garis pengumpan" yang berjalan tegak lurus dari jalan ke titik Anda. Maka Anda harus dapat " mengatur dan melihat arah aliran, mengubah pengaturan analisis, menambahkan tanda dan penghalang untuk analisis, dan melakukan berbagai tugas penelusuran. " (Lihat bagian yang disebut "Utility Network Analyst toolbar"). Lihat juga " Tentang melacak di jaringan geometrik " untuk detail lebih lanjut tentang jenis analisis lain yang dapat Anda lakukan dengan jaringan geometrik.

Ini akan memerlukan sedikit pengaturan, tetapi dengan menciptakan proses otomatisasi menghubungkan titik-titik ke jaringan, itu harus cukup cepat dan mudah untuk diperbarui ketika titik-titik baru ditambahkan ke jaringan.

CATATAN : " Meskipun jaringan geometrik dapat dibuat dan diedit di ArcInfo dan ArcEditor, mereka hanya baca di ArcView ". ( Dari "Membangun jaringan geometris dari kelas fitur sederhana yang ada" )

RyanKDalton
sumber
1

Sebagai starter (bukan solusi lengkap).
Kami mungkin perlu mengetahui format data, versi, dan tingkat lisensi arcgis Anda.

Apa yang saya lihat adalah memanfaatkan jaringan jalan sebagai sistem referensi linear , dan kemudian "menomori kembali" kutub dalam urutan yang benar .
Maka Anda harus dapat menggunakan salah satu dari beberapa alat (saya yakin jawaban orang lain akan mendefinisikan lebih jelas) untuk membuat polyline dari kutub.
Berikut ini adalah tutorial arcgis 10 untuk referensi linear

Brad Nesom
sumber
Format data - shapefile? memiliki arcinfo 10. Juga memiliki analis jaringan, tetapi hanya di arc9.3 (versi percobaan). Menarik saya akan membaca tentang referensi linear.
Thad