İşte yukarıdaki yorumda bahsettiğim iş akışının bir örneğidir ve bunu yapmak için önceden hazırlanmış basit bir rutin bilmesem de, bir dizi başlangıç-hedef koordinatlarını içe aktarabilecek bir excel elektronik tablosu ekledim ve sayfa daha sonra bir küme veya dairesel çizgi koordinatları oluşturur ( burada elektronik tablo ). Oluşturulmuş formüller vardır, bu nedenle yeni OD koordinatlarını içe aktarmak ve sonuçları doldurmak için formülleri genişletmek oldukça kolaydır, ancak sürecin mantığından daha açık bir şekilde geçeceğim ve diğerleri bunu tamamen içine nasıl yazacağımı önerebilir ArcMap (veya her neyse).
Kısacası, bunun OD verilerini görselleştirmek için makul olduğunu düşünüyorum, aynı sebepten dolayı büyük daire çizgileri popülerdir, çizgiler arasında daha görsel ayrım sağlarlar. Önerdiğim yaklaşımın ayrıca büyük daire çizgilerine göre bir avantajı vardır, çünkü akışın yönü yarım dairede kodlanmıştır. Sitedeki bu diğer cevapta , akış haritalaması için görselleştirme tekniklerinin daha genel bir görünümünü veririm ve bu tür arkların yapılmasına ek olarak aynı tekniklerin çoğu uygulanabilir.
Yani, bir kimsenin öneri olduğum gibi nasıl çizgi çizdiğini detaylandırmak için, esasen süreç için 3 adımım var, 1) akışın yönünü bul, 2) orta noktayı ve akış mesafesini bul, 3) bir daire merkezi olarak orta noktaya getirin ve ardından yay çizin (başlangıç noktasından hedefe yarım daire). Açık olmak gerekirse, bir dizi öngörülen başlangıç koordinatı (x1,y1)
ve hedef koordinatı ile başlıyorum (x2,y2)
.
Böylece 1) akışın yönünü bulunuz. Birincisi formülü kullanır ATAN((y2 - y1)/(x2 - x1))
ve sonra yöne bağlı olarak yönün doğu veya batı yönüne bağlı olarak bir yönlendirme atar. Aşağıdaki örnek pseudocode (Ben her ikisi de aynı koordinatlarda OD yönünü sıfır yönüne atarım). Burada or_rad
değişken olan "radyan yönelimi" için kısayol pi
anlamına gelir ve pi'nin değerini ifade eder.
#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) Akışın orta noktasını ve mesafesini bulun. Bu çok basit, sadece bir eşleştirilmiş koordinat seti için (x, y) koordinatlarındaki orta nokta olacaktır (x1+x2/2,y1+y2/2)
. Yani tanımlamak sağlar mid_x = (x1 + x2)/2
ve mid_y = (y1 + y2)/2
bir sonraki kısmı için. Pisagor teorumunu kullanan mesafe basittir distance = SQRT((x1 - x2)^2 + (y1 - y2)^2)
.
3) Daha sonra bu bilgi verildiğinde, verilen bir derece ve bir yarıçap (ki iki nokta arasındaki mesafenin yarısıdır) üzerinde verilen daireyi çizin. Örneğin, adresinde bir dizi OD koordinat çifti ile başladığımızı varsayalım (1,3):(3,2)
. Derece cinsinden yönelim ~ 116 olacaktır (ve radyanlar ~ 2 cinsinden), x, y orta noktası olacaktır (2,2.5)
ve iki nokta arasındaki mesafe yaklaşık 2.2'dir.
Diyelim ki yarım daireyi 180 derece çizmek istiyoruz. Pseduo kodunda (daha önce tanımladığım değişkenleri kullanarak) iterasyonlar şöyle görünecektir;
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.
Aşağıda, yukarıda belirttiğim orijinal koordinatların bir diyagramı yer almaktadır. Sıfırdan başlamak ve 180 ile bitmek, varlığın ve bitiş noktalarının aynı yerlerde olmasını sağlar. Döngüyü daha fazla adım (daha ayrıntılı yay) veya daha az (daha az ayrıntılı yay) olacak şekilde ayarlamak oldukça açık olmalıdır.
Not etmek gerekirse, sitedeki diğer iş parçacıkları nokta verilerinden satır oluşturmayı tartışır (çok satırlı oluşturma etiketine bakın). Ekli xls elektronik tablosunda bir örnek var ve elektronik tablo koordinatlarını şekil dosyası satırlarına dönüştürmek için ET Geo-sihirbazları arcmap aracını kullandım. Ekteki e-tablodaki örnek verilerdeki arklar daha sonra şöyle görünür;
Bu şimdiki kurulum için basit ama potansiyel olarak yararlı bir güncelleme, şimdiye kadar birkaç denemede bunu nasıl yapacağımdan emin olmasam da, önceden belirlenmiş miktarda eksantrikliğe izin vermek için formülleri güncellemek olacaktır. Tavsiyem için buradaki topluluktan öneri ve geri bildirim almak için sabırsızlanıyorum.