ArcGIS for Desktop kullanarak kısa mesafelerde (20km) eğri çizgiler gösteren radyal akış haritası mı yapıyorsunuz?


10

Esri radyal bir akış haritasının nasıl yapılacağına dair talimatlar verdi ama bence eğri çizgiler sadece dünyanın yarısı gibi uzun bir mesafede üretilecek.

Kısa mesafeler (20km) için bir jeodezik hat muhtemelen oldukça düz görünecektir. Bu işlemi kısa mesafelerde radyal bir akış haritası için kullanmaya devam etmek için, daha sonra veri ayarlarını düzenleyebileceğimizi düşündüm, böylece dünya daha küçüktür, böylece küçük bir mesafe için güzel bir eğri çizgi elde edersiniz. Bunu nasıl yapacağını bilen var mı?

Alternatif olarak, ArcGIS Desktop 10.0'da eğri çizgiler yapmak için kullanılacak başka bir araç var mı? 54 puana kadar bağlanmam gereken 90 puan var, çizgileri elle çizmek yerine otomatikleştirmek iyi olurdu.


2
Sorunuz ArcGIS dışı bir bağlamda gis.stackexchange.com/questions/5204/… adresinde soruldu . Yanıtları ilginizi çekebilir.
whuber

1
Whuber için farklı bir fikrim vardı, ama hedeflerinize göre daha iyi olabilir. Basitçe, yay diyagramlarına yapılanlara benzer şekilde, yaylara keyfi miktarda bükülme ekleyebileceğini düşündüm . Daha sonra akış yönüne bağlı olarak tepenin yönü değiştirilebilir. Esasen iş akışı büyük çevrelerle aynı olur, çizgi dizesini daha küçük düz segmentlere ayırır. Keyfi viraj herhangi bir yerel projeksiyonu barındırabilir.
Andy W

@AndyW, öneriniz benim için daha yararlı geliyor (daha fazla capaple kullanıcısı için harika önerilerde bulunan whuber için bir suç olmamasına rağmen). Whuber'ın önerisini anlayamıyorum ya da uygulayamıyorum. Basit bir 'kutudan çıkmış' çözümden, tercihen bir ArcGIS uzantısından sonrayım. Ark diyagramlarına baktım, bazı şaşırtıcı örnekler var. Benim durumumda tahliye siteleri ve tehcir siteleri arasında çok çok (ama genellikle bir ila çok) ilişki gösteren basit bir statik harita için bir çözüm görmüyorum.
ndthl

Yanıtlar:


5

İş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_raddeğişken olan "radyan yönelimi" için kısayol pianlamı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)/2ve mid_y = (y1 + y2)/2bir 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.

resim açıklamasını buraya girin

Not etmek gerekirse, sitedeki diğer iş parçacıkları nokta verilerinden satır oluşturmayı tartışır (çok satırlı 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;

resim açıklamasını buraya girin

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.


1
Bu gerçekten harika bir yanıt! nasıl kodlamak anlamıyorum rağmen, ben bir arkadaşıyla tartışabilirsiniz gitmek için iyi bir şey var düşünüyorum. Ben düz bir çizgi ile iki noktaya katılmak için et geowizards aracı farkındayım - ben sadece kartografik amaçlar için eğri çizgiler ilgileniyorum.
ndthl
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.