ArcPy'de iki nokta arasında yay oluşturuluyor mu?


11

Canlı nokta verilerinin görselleştirilmesini otomatikleştiren bir python betiği üzerinde çalışıyorum. İki koordinat çiftli bir masam var. Bu iki noktayı bir daire ya da benzeri bir yay ile bağlamak istiyorum (parabol ??).

İki noktayı düz bir çizgiyle birleştirebildim, ama bana sıkıcı bir görsel veriyor.

En büyük engellerden biri lisans seviyem: ArcView.

Herkes bu iki nokta arasındaki bir çizgi yolunu temsil eden bir dizi nokta oluşturmak nasıl bir fikrim var mı?

Daha sonra noktaları çoklu satır komutunu kullanabilirim.


5
Gerçekten yeterli bilgi sağlamazsınız: "sıkıcı bir görseli geliştirin" ne spesifik ne de iyi bir problem ifadesidir. Ancak belki de gis.stackexchange.com/questions/5204/… adresindeki benzer bir başlıktan bazı fikirler alacaksınız .
whuber

1
Aynı anda incelemekte birçok bir anda çizgiler, ya da sadece bir tane (ya da birkaç)?
Andy W

Puan numarası 2'den 50'ye kadar herhangi bir yerde olabilir.
Pixel

Yanıtlar:


28

Bu tür "akış haritaları" ile ilgili en yaygın sorun, birçok satır dahil edildiğinde, o kadar büyük bir oranda çarpışmalarıdır ki, herhangi bir belirgin olmayan paterni ayırt etmeyi zorlaştırır (karşılıklı akışlar düşünüldüğünde daha da geniş). Ayrıca, uzun çizgiler grafiğe hakim olma eğilimindedir, ancak akışların dağılımı ağırlıklı olarak kısa alanlar üzerindedir (örneğin, yerler arasındaki farklı dağıtımların birçoğu Levy uçuşlarına benzer olma eğilimindedir ). Sanırım bu mutlaka kötü bir şey değil (uzun çizgiler birçok fenomen için kısa çizgilerden daha ilginç olabilir), ama ağaçlar için ormanı kaybetmek istediğimizi sanmıyorum.

Önerilen bazı potansiyel "çözümleri" kaçırdığımdan şüphe etmememe rağmen, bireylerin karşılaştığım işteki sorunu çözmeye çalıştığı yollardan bazılarını özetlemeye çalışacağım.

Hatları Deforme Etme

Görüşteki diğer bazı konuları incelerseniz, insanların bu sorunla nasıl başa çıktıklarına dair bazı örnekler göreceksiniz. Özellikle, çizgiler birbiriyle veya haritadaki diğer nesnelerle çakışmayacak şekilde çarpıtılır. Whuber'in benzer bir soruya verdiği cevap (bir yorumda daha önce belirtilmiş) buna bir örnektir. Bir sunum Stanford'da bazı araştırmacılar tarafından bu aynı düşünceyi gösterir (Phan ve diğ., 2005). Bu sunum için teşekkürler başka bir iş parçacığında bu cevap için dslamb gider (ve bu iş parçacığının tüm cevapları da sorunuz için ilgi çekici olacaktır). Özellikle bunun en önemli örneklerinden birinin Minard'ın eski göç haritası olması arzu edilen bir çıktı örneği (1864 dolaylarında!) İlginç buluyorum.

Özel kullanım durumunuz (az sayıda düğüm ve çizgi) göz önüne alındığında, bu yeterli görünüyor. Sunmuş olduğum diğer "çözümler" daha çok veriyi birçok çizgi ve birçok köken-varış noktasıyla görselleştirmeyi amaçlıyor (genel olarak topluluk için yararlı özetler olacağını varsaysam da, ne olursa olsun devam ediyorum).

Alfa Karıştırma, Renk ve Çizgi Genişliği / Yüksekliğini Kullanma

Aynı iş parçacığında daha önce belirttiğim haritalar , Ağ akışlarının gösterimi bunlara örnektir. Facebook arkadaşları, hatların alfa seviyesini ayarlamak için iyi bir durumdur, bu nedenle iki yer arasındaki daha koyu (veya bu durumda daha parlak) bir bağlantıyı temsil etmek için daha fazla akış gerekir. Bu aynı zamanda daha uzun çizgileri de küçülterek daha seyrek olma eğilimindedir. Benzer mantık, daha önce bu forumda bahsedilen çokgen alanlar için Alfa Değer Haritalarından da (Roth ve ark., 2010) gelmektedir .

Aynı cevapta sunduğum diğer harita renk ve geleneksel olmayan 3d perspektif ark çizgileri kullanıyor (Ratti ve ark., 2010). Yazarlar, homojen alanları bir arada gruplamak ve renk kodlamak için bir kümeleme kriteri kullanmışlardır (bu nedenle, renk içindeki alanların renkler arasındakinden daha benzer akış düzenleri vardır). Kendi başına kümelenme kriterleri, verilerdeki desenleri tanımlamak için ilginç olabilir, ancak Andrew Gelman'ın belirttiği gibi, bununla ilgili olası bir sorun görünmektedir, size zaten bildiğiniz şeyi, birbirine daha yakın olan yerleri söylemesi daha fazla bağlantıya sahip olma eğilimindedir.

Son olarak, bu kategoride, akış hacmini iletmek için çizgi genişliğini veya 3d perspektif çizgi yüksekliği durumunda çizgileri (alfa karışımına benzer) ağırlıklandıran teknikler dahil ediyorum. 2d'deki bazı örnekler için Tobler'in akış haritalama yazılımı sayfasındaki sayfaya bakın (ve bahsettiğim diğer makale, çizgi yükseklikleri kullanılarak 3B'de bir örnektir). Ayrıca bu sayfada Tobler, akış haritası oluşturma ile ilgili sorunları ve bunların tarihsel uygulamalarını açıklayan çok faydalı bir makaleye sahiptir (Tobler, 1987).

3D'deki diğer bir örnek , bu sitedeki bir mankoff'un bu cevabıdır . Sosyolojik resimler blogundaki bu yayın , akışlar ve akışlar arasında ayrım yapmak için bir akış şemasında yararlı bir yol gösterir (yine de düğüm sayısı ve nispeten küçük olduğu için çalışır ve ağdaki düğümler yerleştirilebilir. fazla çizmeyi azaltmanın keyfi bir yolu). Aynı tür oklar (ve hashings kullanan birkaç diğerleri) de bulunmaktadır (Tobler, 1987).

Sonunda, çizgi genişliği ve rengi aşırı çizme problemini gerçekten çözmez. 3D'deki yaylar biraz yardımcı olur, ancak daha karmaşık akış kalıpları ile sınırlı faydaya sahip olacaklarını düşünüyorum. IMO alfa harmanlaması, bu üç durumun çok çeşitli durumlarında en yararlı gibi görünmektedir, ancak renk ve çizgi genişliği, yukarıda belirtilen hat distorsiyonu ile birlikte kullanılabilir / kullanılmalıdır.

Veri Azaltma

Burada iki tür tekniği gruplandırıyorum, 1) küçük çoklu haritalar kullanarak (yani, fazla çizmenin azaltılması için doğal olarak daha az nesneye sahip birçok harita) veya 2) çizgi olmayan, ancak yoğunluk yoluyla bazı akışları temsil eden diğer grafik gösterimleri kullanarak veya choropleth haritaları. Bunların örnekleri (Corcoran ve diğerleri, 2009; Rae, 2009; Wood ve diğerleri, 2010) 'da bulunabilir (Rae referansı için iant sayesinde). Bunlar, bir dizi küçük çoklu harita (veya sadece daha küçük bir alan) sunarak sunulan görsel bilgi miktarını azaltma veya bazı istatistiği temsil etmek için bir choropleth haritalama şeması kullanma eğilimindedir (örnekler, akış sayısı, çıkış sayısı sayısı olabilir) , akışların yönü, akışların ortalama mesafesi). Puan düzeyinde verileriniz varsa, bu istatistikleri çekirdek yoğunluk raster haritaları aracılığıyla temsil edebilir veya bunları quadratlara toplayabilirsiniz.

Bilgi bu şekilde azaltıldığında, fazla çizmek bir sorun değildir. Çok güzel bir interaktif çevrimiçi örnek, Forbes dergisinin bu göç haritasıdır . Bir seferde yalnızca bir ilçe görebilirsiniz, ancak bilgilerin azaltılması satırların ayrıştırılmasını (ve içeri akışlar ile dışarı akışlar arasındaki fark) çok daha kolay hale getirir. ESRI haritalama blogunda son zamanlarda yayınlanan bir yazı da küçük katlar ile benzer bir teknik kullanmaktadır (ayrıca dünya haritasının "güzel görünen" çizgilere sahip olması ve farklı uluslararası kökenleri daha da vurgulamak için rengi iyi bir şekilde kullanmaları için belirli bir projeksiyon seçerler). Bu örnekte, son hedef tüm akışlar için aynı olduğu için oldukça iyi çalışır, ancak akışlar karşılıklı olabilirse muhtemelen de işe yaramaz.

Akışların Harita Dışı Diğer Gösterimlerini Kullanma

Bu sitedeki diğer kullanıcılar, akışları temsil etmek için gerçek haritaya alternatif diyagramlar kullanılmasını önermiştir (yalnızca başlangıç ​​noktalarını ve hedefleri gerçek coğrafi konumlarından başka bir şekilde eşlemek). Bunların örnekleri, (örneğin, üretilen edilene ya cicular görsel olarak Circos diyagramları (bakınız yay,) Bu örnek Protovis ile, bunlar da adlandırılır kriskograms 2009 Şu Anda (Xiao ve Chun)), ya da matris ısı haritaları ( burada başka bir örnek ile ilgili Protovis web sitesi). Başka bir seçenek, akışlardaki desenleri ( Graphviz tarafından yapılabilenler gibi ) tanımlamak için bir tür otomatik ağ düzeni kullanmak olacaktır . Graphviz'in yanı sıra NetworkX python kütüphanesi Gephi ve bazı R kütüphaneleri de popüler araçlardır (bkz.istatistik sitesinde bu yanıtı ).

Alıntı yaptığım kütüphaneler, etkileşimli görselleştirmeler geliştirdikleri için oldukça havalı. Dairesel grafiklere benzer bir stile sahip bir örnek (dairesel olmasa da!). Burada daha önce tartışılan bazı çizgi bozulma tekniklerini, ağ yerleşimini (dairesel Dorling cartogramlarına benzeyen) ve diğer faydalı istatistiksel özetleri (bu örneklerin her ikisini de aslında bilgi estetiği blogunda gördüm) kullanan bir başka etkileşimli görselleştirme .


Yararlı olduğunu düşündüğüm diğer bazı kaynaklar, Mekansal Veri Madenciliği ve Visual Analytics Laboratuarı'ndan gelen yazılım ve makalelerdir . Ayrıca CrimeStat programındaki suç seyahati talep modellemesi , bu tür akış verileri için uygulanabilir regresyon tekniklerine yumuşak bir giriş niteliğindedir. Bu araçların her ikisi de, akış modellerindeki diğer coğrafi bilgilerle ilginç korelasyonları tanımlamanıza izin verebilir. Verileri grafiksel olarak görüntülemek veya istatistiksel analiz için belki de yararlı bir ilham almak için başka bir yer, Hesaplamalı ve Grafik İstatistik Dergisi, Cilt 20 Sayı 2'de yeni bir sayı olacaktır., 1987'den 2008'e kadar ABD'deki ticari taşıyıcılar için uçuş varış / ayrılış istatistiklerini incelerken (büyük verileri ele almakla ilgileniyorsanız, bu da incelemeye değer olacaktır). Tüm makaleler ücretsizdir ve her bildiri ile ilgili posterleri vardır.

Sonunda, veriler ve ortam, bu tekniklerin bazılarının, akış verileriyle birlikte gelen görsel karmaşayı azaltmada ne kadar iyi çalıştığını belirleyecektir. Umarım bu görselleştirme problemiyle nasıl başa çıkılacağına dair fikirler bulmak için yararlı bir yerdir. Sorunuzu başarmak istediğiniz şeyle daha da hassaslaştırırsanız, diğerleri gerçek programlı uygulamalara (zaten bir şey yoksa) faydalı geri bildirim verebilir.


Atıflar

* not, bulamadığımda söylenmemiş pdf belgelerine bağlantılar dahildir


2
Şu anda herhangi bir grafiği atladım, ancak istenirse, insanlar bağlantıları izlemek zorunda kalmadan örnekleri görmek isterse ekleyebilirim.
Andy W

Vay !! !! Alıntılarla tamamla! İki kez oy verebilseydim, yapardım! Müthiş cevap adamım :)
R Thiede

Şu anda veri azaltma (ve harika çevre çizgileri) kullanarak oldukça havalı bir etkileşimli görselleştirme buldum , Trulia Insights blogu aracılığıyla uluslararası ev avcıları arasında hangi ABD şehrinin en popüler olduğunu öğrenin .
Andy W

5

Burada kendi alt ekibimiz tarafından güzel bir prosedür var .

Temel olarak, prosedür şu şekildedir: - çizginin arasında olmasını istediğiniz noktaları yeniden projelendirin, - aralarında düz bir çizgi çizin, - bu çizgiyi x adet parçaya bölün ve son olarak - alt bölümlere ayrılmış çizgiyi orijinalinize geri yansıtın projeksiyon.

Arc'ı kullanmayı bıraktım, çünkü paraya mal oluyor, ancak bu prosedürün çalışması için, size temel işlevsellik vermek için ESRI'ya herhangi bir ekstra rüşvet ödemeniz gerektiğini düşünmüyorum. Yani, herhangi bir "uzantı" satın almanız gerektiğini düşünmüyorum. Gerçi düzeltme altında konuşuyorum, çünkü bir satırı alt bölümlemenin Uzamsal Analistin bir parçası olup olmadığı konusunda olumlu değilim. Belki daha ESRIcal eğimli bazı bana burada yardımcı olabilir? :)


1
ArcView ile gerçek eğrileri yapamazsınız, ancak ArcView şimdi 9 sürümünden beri gerçek eğriler yapabiliyordu.
blord-castillo


2

Büyük daire yöntemini kullanarak bir haritadaki iki noktadan görsel olarak çekici çoklu çizgiler oluşturmaya devam edebilirsiniz. Http://www.esri.com/software/arcgis/defense-solutions/military-analyst.html - Askeri Analist'e göz atın . Aradığın şeye sahip olmalısın!


Artýk Arc'a göre daha fazla hýzlanmýyorum, ama bunu bazý kýrmýzlarla yapmak mümkün deđil mi? Askeri Analist muhtemelen size mal olacak ...
R Thiede

Bu çözümün zaten işe yarayacağına inanmıyorum, çünkü haritamın genişliği yaklaşık 40 mil olacak. Bir kıta ölçeğinde olsaydı bunun işe yarayabileceğine inanıyorum.
Piksel

Military Analyst ücretsiz @RThiede Evet, Daha büyük ölçüde daha iyi çalışır. Bununla birlikte, satırları oluşturulduktan sonra size istediğinizi vermek için düzenleyebilirsiniz (eğriyi oluşturmak için çoklu çizgiler boyunca yüzlerce nokta üretmek için bezzier eğrileri kullandıklarından)
Michael Markieta 30:11

İstediğim yayları almak için satırları kolayca düzenleyebilirim, ancak yazımın belirttiği gibi bu işlemi otomatikleştirmek için Python kullanıyorum. Geri dönüşünüz için teşekkür ederiz!
Pixel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.