Membuat busur di antara dua titik di ArcPy?

10

Saya telah mengerjakan skrip python yang mengotomatiskan visualisasi data titik langsung. Saya punya meja dengan dua pasangan koordinat. Saya ingin menghubungkan kedua titik ini dengan busur lingkaran atau sejenisnya (parabola ??).

Saya sudah bisa menghubungkan dua titik dengan garis lurus, tetapi itu memberi saya visual yang membosankan.

Salah satu rintangan utama adalah tingkat lisensi saya: ArcView.

Adakah yang tahu bagaimana saya bisa menghasilkan satu set poin yang mewakili jalur garis antara dua poin ini?

Saya kemudian dapat menggunakan perintah points to polyline.

Pixel
sumber
5
Anda tidak benar-benar memberikan informasi yang cukup: "tingkatkan visual yang membosankan" tidak spesifik atau pernyataan masalah yang baik. Tapi mungkin Anda akan mendapatkan beberapa ide dari utas serupa di gis.stackexchange.com/questions/5204/… .
whuber
1
Apakah Anda secara bersamaan melihat banyak baris, atau hanya satu (atau beberapa) sekaligus?
Andy W
Jumlah poin bisa dari 2 hingga sekitar 50.
Pixel

Jawaban:

27

Tampaknya masalah yang paling umum dengan "peta aliran" jenis ini adalah ketika banyak garis dimasukkan, mereka bertabrakan sedemikian rupa sehingga menyulitkan untuk membedakan pola yang tidak jelas (ketika aliran timbal balik dianggap terjadi pada tingkat yang lebih besar). Juga garis-garis panjang cenderung mendominasi grafik, meskipun sangat mungkin distribusi aliran didominasi oleh ruang pendek (misalnya sejumlah distribusi yang berbeda antar tempat cenderung mirip dengan penerbangan Levy ). Saya kira ini tidak selalu merupakan hal yang buruk (garis panjang mungkin lebih menarik secara intrinsik daripada garis pendek untuk banyak fenomena), tetapi saya tidak berpikir kita ingin kehilangan hutan untuk pepohonan.

Meskipun saya tidak ragu saya telah melewatkan beberapa "solusi" potensial yang telah diusulkan, saya akan mencoba meringkas beberapa cara individu telah mencoba untuk memecahkan masalah dalam pekerjaan yang saya temui.

Mendistorsi Garis

Jika Anda membaca beberapa utas lainnya saat melihatnya, Anda akan melihat beberapa contoh tentang bagaimana orang-orang mengatasi masalah ini. Secara khusus, garis terdistorsi sehingga tidak saling tumpang tindih atau objek lain di peta. Whuber ini jawaban atas pertanyaan lain yang sejenis (sudah disebutkan dalam komentar) adalah contoh dari ini. Sebuah presentasi oleh beberapa peneliti di Stanford menunjukkan ide yang sama ini (Phan et al., 2005). Terima kasih untuk presentasi yang ditujukan ke dslamb untuk jawaban ini di utas lain (dan semua jawaban atas utas itu akan menarik bagi pertanyaan Anda juga). Saya khususnya tertarik bahwa salah satu contoh utama dari ini adalah peta imigrasi lama oleh Minard adalah contoh dari output yang diinginkan (sekitar tahun 1864!).

Mengingat kasus penggunaan khusus Anda (sejumlah kecil node dan garis), ini tampaknya cukup. "Solusi" lain yang saya sajikan lebih dimaksudkan untuk memvisualisasikan data dengan banyak garis dan banyak asal-tujuan (meskipun saya menganggap itu akan menjadi ringkasan yang berguna bagi masyarakat secara umum, jadi saya melanjutkan tanpa peduli).

Menggunakan Alpha Blending, Color, dan Line Width / Height

Peta yang saya cantumkan dalam utas yang sama yang disebutkan sebelumnya, Representasi aliran jaringan adalah contohnya. Teman-teman facebook adalah kasus yang baik untuk menyesuaikan tingkat garis alfa, sehingga dibutuhkan lebih banyak aliran untuk mewakili koneksi yang lebih gelap (atau lebih cerah dalam kasus itu) antara kedua tempat. Ini juga menekankan garis yang lebih panjang karena mereka cenderung terjadi lebih jarang. Logika serupa berasal dari peta Value-by-Alpha untuk area poligon (Roth et al., 2010) yang telah disebutkan di forum ini sebelumnya .

Peta lain yang saya sajikan dalam jawaban yang sama menggunakan warna, dan garis lengkung perspektif non-tradisional (Ratti et al., 2010). Para penulis menggunakan kriteria pengelompokan untuk mengelompokkan area-area homogen bersama-sama dan kode warna mereka (jadi menurut definisi area dalam warna memiliki pola aliran yang lebih mirip daripada antara warna). Kriteria pengelompokan dalam dan dari dirinya sendiri bisa menarik untuk mengidentifikasi pola dalam data, meskipun tampaknya masalah dengan ini, seperti Andrew Gelman telah disebutkan , adalah bahwa ia memberi tahu Anda apa yang sudah Anda ketahui, yang menempatkan lebih dekat satu sama lain cenderung memiliki lebih banyak koneksi.

Terakhir, dalam kategori ini saya menyertakan teknik yang menimbang garis (mirip dengan alpha blending) menggunakan lebar garis, atau dalam hal ketinggian garis perspektif 3d, untuk menyampaikan volume aliran. Lihat halaman pada halaman perangkat lunak pemetaan aliran Tobler untuk beberapa contoh dalam 2d (dan artikel lain yang saya sebutkan adalah contoh dalam 3d menggunakan ketinggian baris). Juga pada halaman itu Tobler memiliki artikel yang sangat berguna yang menggambarkan masalah dengan flowmap dan aplikasi historisnya (Tobler, 1987).

Contoh lain dalam 3d adalah jawaban ini oleh mankoff di situs ini. Posting ini di blog gambar Sosiologis menunjukkan cara yang berguna dalam diagram alir untuk membedakan antara arus masuk dan keluar (meskipun lagi itu berfungsi karena jumlah node dan relatif kecil, dan node pada jaringan dapat ditata dalam cara sewenang-wenang untuk mengurangi overplotting). Jenis panah yang sama (dan beberapa lainnya menggunakan hashing) juga ada di (Tobler, 1987).

Pada akhirnya, meskipun garis lebar dan warna tidak benar-benar menyelesaikan masalah over-plot. Busur di 3d agak membantu, meskipun dengan pola aliran yang lebih rumit saya pikir mereka akan memiliki utilitas terbatas. IMO alpha blending tampaknya menjadi yang paling berguna dalam berbagai situasi dari ketiganya, tetapi warna dan lebar garis dapat / harus digunakan bersamaan dengan distorsi garis yang disebutkan di atas.

Pengurangan Data

Saya mengelompokkan dua jenis teknik di sini, 1) menggunakan beberapa peta kecil (yaitu banyak peta dengan objek yang lebih sedikit untuk divisualisasikan sehingga overplotting dikurangi), atau 2) representasi grafis lainnya, yang bukan garis, tetapi mewakili beberapa aliran melalui kerapatan atau peta choropleth. Contoh-contoh ini dapat ditemukan di (Corcoran et al., 2009; Rae, 2009; Wood et al., 2010) (terima kasih kepada iant untuk referensi Rae). Ini cenderung mengurangi jumlah informasi visual yang disajikan dengan menghadirkan serangkaian peta berganda kecil (atau hanya area yang lebih kecil), atau menggunakan skema pemetaan choropleth untuk mewakili beberapa statistik (contohnya bisa berupa arus masuk, jumlah arus keluar , arah arus, jarak rata-rata arus). Jika Anda memiliki data level poin, Anda bisa mewakili statistik ini melalui peta raster kepadatan kernal, atau menggabungkannya menjadi kuadrat.

Ketika informasi dikurangi seperti ini, overplotting tidak terlalu menjadi masalah. Contoh online interaktif yang sangat keren adalah peta migrasi ini oleh majalah Forbes . Anda hanya dapat melihat satu county pada satu waktu, tetapi pengurangan informasi membuatnya lebih mudah untuk mengurai garis (dan perbedaan antara aliran masuk dan keluar). Sebuah posting baru-baru ini di blog pemetaan ESRI juga menggunakan teknik yang mirip dengan kelipatan kecil (mereka juga memilih proyeksi tertentu untuk peta dunia untuk memiliki garis "cantik", dan memanfaatkan warna dengan baik untuk lebih menyoroti asal-usul internasional yang berbeda). Dalam contoh itu, ia bekerja dengan cukup baik karena tujuan akhirnya sama untuk semua aliran, tetapi jika aliran bisa bersifat timbal balik, mungkin tidak akan berhasil juga.

Menggunakan Representasi Arus Non-Peta Lainnya

Orang lain di situs ini telah menyarankan menggunakan diagram alternatif untuk peta aktual untuk mewakili aliran (hanya memetakan asal dan tujuan dengan cara lain selain lokasi geografis mereka yang sebenarnya). Contohnya adalah visualisasi khusus (seperti yang diproduksi oleh Circos ), diagram busur (lihat contoh ini pada Protovis, ini juga disebut kriskograms (Xiao & Chun, 2009)), atau matriks peta panas (di sini adalah contoh lain dari Situs web Protovis). Pilihan lain adalah menggunakan beberapa jenis tata letak jaringan otomatis untuk mengidentifikasi pola dalam arus (seperti yang mampu oleh Graphviz ). Selain Graphviz tampaknya Gephi, pustaka NetworkX python, dan beberapa pustaka R juga merupakan alat yang populer (lihatjawaban ini di situs statistik).

Perpustakaan yang saya kutip sangat keren karena mereka telah mengembangkan visualisasi interaktif juga. Berikut adalah contoh dengan gaya yang mirip dengan grafis lingkaran (meskipun tidak melingkar!). Berikut ini visualisasi interaktif lain menggunakan beberapa teknik distorsi garis yang dibahas sebelumnya, penempatan jaringan (yang tampak mirip dengan kartogram Dorling sirkuler) serta ringkasan statistik berguna lainnya (saya melihat kedua contoh tersebut awalnya di blog informasi estetika ).


Beberapa sumber lain yang saya pikir berguna adalah perangkat lunak dan artikel yang berasal dari Spatial Data Mining dan Visual Analytics Lab . Juga pemodelan permintaan perjalanan kriminal dalam program CrimeStat adalah pengantar lembut untuk teknik regresi yang berlaku untuk aliran data tersebut. Salah satu dari alat ini memungkinkan Anda untuk mengidentifikasi korelasi menarik dalam pola aliran ke informasi geografis lainnya. Tempat lain untuk menerima inspirasi yang berguna untuk menampilkan data secara statistik atau analisis statistik akan menjadi isu terbaru dalam Journal of Computational and Graphical Statistics, Volume 20 Edisi 2, saat memeriksa statistik kedatangan / keberangkatan penerbangan untuk maskapai komersial di AS dari tahun 1987 hingga 2008 (jika Anda tertarik untuk menangani data besar, ini akan bermanfaat untuk diperiksa juga). Semua artikel gratis dan mereka memiliki poster terkait dengan setiap makalah.

Pada akhirnya, data dan media akan menentukan seberapa baik beberapa teknik ini bekerja dalam mengurangi kekacauan visual yang datang bersama dengan aliran data. Saya harap ini adalah tempat yang berguna untuk menemukan ide bagaimana menangani masalah visualisasi ini. Jika Anda lebih mempersempit pertanyaan Anda menjadi apa yang ingin Anda capai, maka orang lain dapat memberikan umpan balik yang bermanfaat ke dalam implementasi program aktual (jika ada sesuatu yang belum tersedia).


Kutipan

* catatan, tautan ke dokumen pdf ungated disertakan ketika saya bisa menemukannya

Andy W
sumber
2
Saat ini saya telah menghilangkan gambar apa pun, tetapi jika diminta, saya dapat menyertakan apa pun jika orang ingin melihat contoh tanpa harus mengikuti tautan.
Andy W
Wow !! ... Lengkap dengan kutipan! Jika saya bisa memilih dua kali, saya akan! Jawaban yang luar biasa, bung :)
R Thiede
Saat ini saya telah menemukan visualisasi interaktif lain yang cukup keren menggunakan pengurangan data (dan garis lingkaran besar), Cari tahu kota AS mana yang paling populer di kalangan pemburu rumah internasional melalui blog Trulia Insights.
Andy W
5

Ada prosedur yang bagus di sini , oleh underdark kita sendiri.

Pada dasarnya, prosedurnya seperti ini: - memproyeksikan ulang poin-poin yang Anda inginkan dari garis tersebut, - mendapatkan garis lurus yang ditarik di antara mereka, - membagi garis itu menjadi x jumlah keping, dan akhirnya - memproyeksikan garis yang terbagi kembali ke sumber asli Anda proyeksi.

Saya agak berhenti menggunakan Arc karena biayanya mahal, tetapi agar prosedur ini berhasil, saya rasa Anda tidak perlu membayar ESRI suap tambahan untuk memberi Anda fungsi dasar. Maksud saya, saya pikir Anda tidak perlu membeli "ekstensi." Saya berbicara di bawah koreksi, karena saya tidak yakin apakah membagi garis adalah bagian dari Analis Tata Ruang. Mungkin beberapa yang lebih cenderung ESRI dapat membantu saya di sini? :)

R Thiede
sumber
1
Anda dulu tidak dapat melakukan kurva nyata dengan ArcView, tetapi ArcView telah mampu melakukan kurva sejati sejak versi 9 sekarang.
blord-castillo
2

Anda dapat membuat polyline yang menarik secara visual dari dua titik di peta menggunakan metode lingkaran hebat. Lihat http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - Analis Militer. Harus memiliki apa yang Anda cari!

Michael Markieta
sumber
Saya tidak cukup untuk mempercepat Arc lagi, tetapi tidak mungkinkah melakukan ini dengan beberapa proyeksi? Karena Analis Militer mungkin akan dikenakan biaya uang ...
R Thiede
Saya tidak percaya solusi ini akan berhasil, karena tingkat peta saya akan sekitar 40 mil. Saya percaya ini bisa berhasil jika berada pada skala benua.
Pixel
Analis Militer gratis @RThiede Ya, Itu akan bekerja lebih baik pada tingkat yang lebih besar. Namun, Anda mungkin dapat mengedit garis setelah dibuat untuk memberikan apa yang Anda inginkan (karena mereka menggunakan kurva yang lebih keren untuk menghasilkan ratusan titik di sepanjang polyline untuk membuat kurva)
Michael Markieta
Saya dapat dengan mudah mengedit baris untuk mendapatkan busur yang saya inginkan, tetapi sebagai posting saya menunjukkan saya menggunakan Python untuk mengotomatisasi proses ini. Terima kasih untuk umpan baliknya!
Pixel