Baru mengenal ArcGIS dan ingin menghitung jarak antara dua titik “saat ikan berenang”


9

Kami memiliki lapisan bernama Hidrografi yang merupakan area air untuk tugas yang diberikan. Saya memiliki titik stasiun dan titik target. Saya perlu menghitung jarak antara dua titik tetapi di dalam hidrografi. (kapal tidak bisa pergi ke darat)

Perhitungan jarak DefenseService terlihat lumayan tetapi tampaknya berada dalam garis lurus karena tidak mengambil Raster sebagai input. Euclidean tampaknya hampir ada di sana tetapi saya tidak dapat menemukan apa pun yang lurus ke depan.

Saya menggunakan ArcGIS Explorer 2500, ArcGIS untuk Server 10.1 SP1 Enterprise, dan kami menulis layanan dan alat kami di C #.

Saya memiliki pemuatan hidrografi, penciptaan IPoints, tetapi bingung apa yang harus dilakukan selanjutnya!

Tolong bantu apa pun yang dihargai.


1
Tidak ada 'jawaban yang diterima' di sini, tetapi saya pikir ini adalah pertanyaan yang sangat mirip: gis.stackexchange.com/questions/33799/…
Mapperz

Tingkat kegembiraan saya mulai naik segera sampai dia bilang dia bukan programmer. Ini tidak dapat dilakukan dengan menggunakan alat. Saya memiliki jendela alat khusus dengan lokasi yang dipilih dan daftar target. Saya perlu memanggil metode di server dan mengisi daftar dengan jarak ke setiap target.
SASS_Shooter

Apakah garis atau poligon lapisan hidrografi Anda?
Conor

Ini adalah poligon yang kita konversi menjadi raster.
SASS_Shooter

Kasing Anda sedikit membingungkan. Apakah Anda mencoba mencari jarak terdekat dari dua titik di sepanjang tepi danau? Atau apakah stasiun Anda sesuai dengan stasiun sungai (yang berada di dasar danau)?
DPierce

Jawaban:


4

Gunakan Jarak Biaya dan Alat Jalur Biaya dari Spatial Analyst Extension.

Anda dapat membuat Raster dari Poligon Hidrografi Anda. Kemudian pastikan bahwa sel-sel raster yang mewakili air mendapatkan nilai yang rendah (misalnya 1) dan sel-sel raster lainnya mendapatkan nilai yang tinggi (misalnya 1000). Anda kemudian dapat menggunakan raster ini sebagai raster jarak biaya di Alat Jalur Biaya .


Ya - Saya menemukan bahwa Biaya Jarak membutuhkan raster sebagai input dan poin saya pada raster hidrografi untuk memulai dan menyelesaikan. Nilai yang dikembalikan adalah Polyline dari mana saya bisa mendapatkan panjang.
SASS_Shooter

1

Saya telah melakukan sesuatu yang serupa untuk garis tengah di atas kanal dan aliran air alami. Pendekatan yang saya gunakan adalah untuk TIN poin, membagi dua TIN kemudian membuat TIN kedua dari simpul asli dan garis-garis kemudian melintasi menggunakan algoritma Dijkstra yang dimodifikasi, membuang opsi segera setelah terbukti bahwa mereka tidak akan membentuk solusi yang paling sederhana . Modifikasi adalah bahwa garis dapat berakhir pada titik 'solusi' atau jalur sebelumnya harus ada. Tidak ada solusi out-of-the-box untuk ini dan jika Anda bukan seorang programmer atau setidaknya dalam posisi untuk mendapatkan di sisi baik dari satu-satunya pilihan Anda adalah untuk melacak dengan offset ke dalam geodatabase dan melihat bidang shape_length.


TIN = Triangular Irregular Network, kisi titik dan garis penghubung sehingga setiap titik terhubung ke tetangga terdekat dan tidak ada garis yang berpotongan. Untuk ini lihat http://en.wikipedia.org/wiki/Delaunay_triangulation . Saya tidak menggunakan objek TIN ESRI, sebaliknya saya menemukan beberapa kode untuk triangulasi dan menyimpannya dalam memori, seperti http://www.codeproject.com/Articles/492435/Delaunay-Triangulation-For-Fast-Mesh-Generation .

Untuk algoritma jalur terpendek, lihat http://en.wikipedia.org/wiki/Dijkstra 's_algorithm, ia memiliki gambar yang bagus; meskipun nama yang rumit itu sebenarnya sangat sederhana.

Dari titik-titik yang membentuk garis saya melakukan triangulasi Delaunay kemudian menemukan titik tengah dari setiap tepi segitiga (geometri dasar ... rata-rata X, rata-rata Y) dan kemudian memasukkan titik-titik yang jatuh di dalam poligon ke dalam jala yang memberikan jalur tengah dan tautan ke semua simpul pada batas. Kemudian tidak termasuk aspek yang mengikuti tepi jalur air menelusuri jaringan menggunakan algoritma Dijkstra dan Anda akhirnya akan menemukan jalur dari titik A ke titik B yang berjalan kira-kira di tengah-tengah aliran sungai. Akan ada banyak jalur yang mungkin jadi saya menjaga bobot pada setiap puncak dan menghentikan jalur ketika panjang kumulatif melebihi panjang yang sudah dicatat, dan jika kurang maka perbarui apeks dengan panjang kumulatif yang lebih pendek - ini mengurangi jumlah jalan yang dilacak, dan mungkin ada cukup banyak;

Sebagai alternatif, setelah melakukan triangulasi, Anda dapat mengubah tepi segitiga menjadi dua garis titik sebagai kelas fitur, membangun jaringan, lalu melakukan penelusuran. Saya yakin bahwa rutinitas penelusuran ESRI jauh lebih cepat daripada milik saya, tetapi saya memiliki kebutuhan khusus dan tidak dapat menyelesaikannya menggunakan jaringan geometris.


Michael - Saya adalah pengembang C #. Hanya sangat baru untuk ArcGIS dan alat pemrograman mereka. Saya telah menemukan satu dari solusi kotak menggunakan Analis Militer tetapi ESRI dalam semua kebijaksanaan mereka menjatuhkannya. Apa yang Anda maksudkan dengan TIN poin dan algoritma Dyjkstra mana yang Anda gunakan?
SASS_Shooter

1

Saya menambahkan ini untuk siapa pun di masa depan yang membaca utas ini.

Inilah semua yang saya pelajari dalam menggali masalah ini dan mendapatkan jarak penuh antara panggilan poin.

Masalah pertama kami berasal dari sifat statis RasterCatalog. Mengubah raster yang menjadi dasar TIDAK mengubah raster di dalam RasterCatalog. Ternyata versi kami memiliki versi kuno yang jauh dari peta garis pantai. Pelajaran yang Dipetik: Membangun kembali RasterCatalog SETIAP SAAT Anda mengubah Raster yang menjadi dasarnya.

Distance Raster dengan bobot yang ditambahkan menjadi hal yang agak rumit untuk dikerjakan. Lihatlah skenario berikut: Nilai asli raster adalah 1 total jarak yang ingin saya lihat adalah 117 km. Ukuran sel adalah 1 meter. Jika raster sekarang menjadi nilai tertimbang 48, maka total jarak yang saya inginkan menjadi 117 km * 48 !!! Jadi jarak dalam metode CostDistance bukan jarak sel tetapi jarak tertimbang, tampaknya menambahkan nilai di setiap sel sampai jumlah setiap sel = nilai yang dilewati untuk total jarak. Bahkan jika ukuran selnya sendiri adalah 1 meter !!!

Raster jarak semua difokuskan pada titik asal. Jadi, ketika Anda memanggil rutin CostDistance Anda tidak ingin memasukkan titik asal dalam daftar itu. jika Anda melakukannya, Anda akan mendapatkan satu titik dengan jarak 0. (ini bahkan dukungan ESRI bingung)

Sementara banyak metode menggunakan Amplop untuk membatasi proses mereka, dua yang paling mahal, menetapkan nilai ke raster dan mengekstraksi raster tanpa area dalam poligon, abaikan semua pengaturan amplop dan secara otomatis selalu menerapkan ini ke seluruh raster. Sayangnya bagi kami, kami hanya dapat mempersingkat ini dengan membuat segmen besar yang tumpang tindih dan menetapkan segmen ke area kotak tertentu. Tetapi dalam melakukan itu kita harus berhati-hati (yang sulit) bahwa area operasi utama tidak ada di area yang tumpang tindih yang salah. (dengan kata lain semua tumpang tindih kami harus dipilih dengan hati-hati untuk tidak mengandung poin utama yang menarik!) Alasan untuk ini adalah kami menavigasi RasterCatalog memilih raster yang benar berdasarkan di mana stasiun Coast Guard yang dipilih ada. Untuk semakin mempersulit proses kami, tumpang tindih harus memungkinkan kami untuk menavigasi hingga 120 km dari titik asal kami tanpa lari dari tepi peta dan tidak tumpang tindih dengan tempat menarik lainnya. Sheesh.

Satu-satunya hal lain yang saya pelajari adalah bahwa mudah untuk menghitung matematika ke raster tetapi ketika Anda ingin 'menyodok lubang' di raster (penyumbatan) atau menetapkan donat dengan nilai dan bagian dalam donat memiliki nilai 1 (penundaan seperti kunci) Anda berakhir dengan kombinasi alat yang kompleks dan panggilan ArcObject. Yang mengarah pada pelajaran terakhir yang dipelajari: ArcObjects tidak dapat melakukan segalanya. Jadi saya kadang-kadang dipaksa untuk melakukan hal-hal di alat lambat, rumit yang semuanya ditulis dengan python. Saya juga belajar bahwa pengembang alat ESRI tidak tahu apa-apa tentang menjaga konsistensi. Kadang-kadang mereka mengambil database raster di waktu lain mereka membutuhkan raster dan kadang-kadang mereka membutuhkan set fitur. Dan mereka tidak mengembalikan data dalam format yang sama yang mereka butuhkan sebagai input!

Bingung? Jangan khawatir, ini ESRI.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.