Berikut ini adalah ilustrasi dari alur kerja yang saya sebutkan di komentar di atas, dan meskipun saya tidak tahu ada rutinitas pra-kaleng sederhana untuk melakukan ini, saya telah melampirkan spreadsheet excel bahwa orang dapat mengimpor satu set koordinat tujuan-asal dan lembar kemudian membuat satu set atau koordinat garis melingkar (spreadsheet di sini ). Ini memiliki formula yang diatur sehingga cukup mudah untuk mengimpor koordinat OD baru dan memperluas formula untuk mengisi hasil, tetapi saya akan pergi melalui logika proses secara lebih eksplisit, dan yang lain dapat memberikan saran bagaimana menulis skrip sepenuhnya dalam ArcMap (atau apa pun).
Secara singkat, saya pikir ini masuk akal untuk memvisualisasikan data OD terutama karena alasan yang sama garis lingkaran besar yang populer, mereka memberikan perbedaan visual yang lebih antara garis. Pendekatan yang saya sarankan juga memiliki satu keunggulan dibandingkan garis lingkaran besar, yaitu bahwa arah aliran dikodekan dalam setengah lingkaran. Dalam jawaban lain di situs ini saya memberikan pandangan yang lebih umum tentang teknik visualisasi untuk pemetaan aliran, dan banyak dari teknik yang sama dapat diterapkan selain membuat busur seperti ini.
Jadi, untuk merinci bagaimana seseorang menggambar garis seperti saya saran, pada dasarnya saya hanya memiliki 3 langkah untuk proses, 1) menemukan orientasi aliran, 2) menemukan titik tengah dan jarak aliran, 3) memperlakukan titik tengah sebagai pusat lingkaran, dan kemudian gambar busur (setengah lingkaran dari asal ke tujuan). Agar lebih jelas, saya mulai dengan sepasang koordinat asal yang diproyeksikan (x1,y1)
dan koordinat tujuan (x2,y2)
.
Jadi 1) temukan orientasi aliran. Yang pertama menggunakan rumus ATAN((y2 - y1)/(x2 - x1))
dan kemudian tergantung pada arah memberikan orientasi tergantung pada apakah arah itu ke timur atau ke barat. Contoh pseudocode di bawah ini (saya menetapkan poin OD yang keduanya pada koordinat yang sama dengan orientasi nol). Di sini varaible or_rad
dimaksudkan sebagai singkatan untuk "orientasi dalam radian" dan pi
mengacu pada nilai pi.
#tan_or = ATAN((y2 - y1)/(x2 - x1)).
Do If x2 = x1 and y1 <= y2.
compute or_rad = 0.
Else if x2 = x1 and y1 > y2.
compute or_rad = pi.
Else if x1 > x2.
compute or_rad = 270/180*pi - #tan_or.
Else if x1 < x2.
compute or_rad = 90/180*pi - #tan_or.
End If.
2) Temukan titik tengah dan jarak aliran. Ini sangat sederhana, untuk hanya satu set pasangan berpasangan, titik tengah dalam (x, y) akan berupa koordinat (x1+x2/2,y1+y2/2)
. Jadi mari kita tentukan mid_x = (x1 + x2)/2
dan mid_y = (y1 + y2)/2
untuk bagian selanjutnya. Jarak menggunakan teorema pythagoreum sederhana distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)
.
3) Kemudian diberi informasi itu, gambar lingkaran yang diberikan atas jumlah derajat dan jari-jari yang telah ditentukan sebelumnya (yang merupakan setengah jarak antara dua titik). Sebagai contoh, katakanlah kita mulai dengan satu set pasangan koordinat OD di (1,3):(3,2)
. Orientasi dalam derajat akan ~ 116 (dan dalam radian ~ 2), titik tengah x, y akan berada (2,2.5)
dan jarak antara dua titik adalah sekitar 2.2.
Jadi katakanlah kita ingin menggambar setengah lingkaran sekitar 180 derajat. Dalam pseduo-code (menggunakan variabel yang sudah saya tentukan) iterasi akan terlihat seperti;
for i in (0 to 180 degrees)
rad_i = i/180*pi. /*converts i from degrees to radians
step_or = pi - rad_i /*for clarity, this makes the circle go from origin to destination
radius = distance/2
Arc_X = mid_x + sin(or_rad - step_or)*radius.
Arc_Y = mid_y + cos(or_rad - step_or)*radius.
Dimasukkan di bawah ini adalah diagram dari koordinat asli yang saya tentukan di atas. Mulai dari nol dan berakhir di 180 memastikan keberadaan dan titik akhir berada di lokasi yang sama. Menyesuaikan loop untuk memiliki lebih banyak langkah (busur lebih rinci) atau lebih sedikit (busur kurang rinci) harus cukup jelas.
Untuk diketahui, utas lain di situs membahas pembuatan garis dari data titik (lihat tag kreasi polyline ). Saya punya contoh di spreadsheet xls terlampir, dan saya menggunakan alat arcmap ET Geo-wizards untuk mengkonversi koordinat spreadsheet ke garis shapefile. Busur dalam contoh data dalam spreadsheet terlampir kemudian terlihat seperti ini;
Satu pembaruan sederhana namun berpotensi bermanfaat untuk pengaturan saat ini adalah memperbarui rumus untuk memungkinkan jumlah eksentrisitas dalam busur yang ditentukan sebelumnya, meskipun saya belum yakin bagaimana melakukannya dalam beberapa upaya saya sejauh ini. Saya menantikan saran dan umpan balik dari komunitas di sini atas saran saya.