Yüksekliğe göre noktalar arasındaki mesafe nasıl ölçülür?


10

Noktalar arasındaki mesafeleri ölçebilmem gerekiyor, ancak yükseklik ile olan ilişkide mesafenin hesaplanması gerekiyor. Noktalar, 19. yüzyıldan kalma hikaye anlatıcılarının evleri ve hikayelerinde bahsedilen yerlerdir. Bu nedenle mesafe "yürüme mesafesi" olmalıdır. Bir vadi boyunca uzanan bir yol, gerçek düz mesafe daha kısa olsa bile, bir dağ üzerindeki yoldan daha kısa olacaktır. Ekte, düşüncelerimi gösteren bir ekran görüntüsü var. Görüntüde, A ve C yolları bu nedenle B yolundan daha kısa hesaplanacaktır.Noktalar ve yükseklik

Noktalar bir CSV dosyasından ancak yükseklik verileri içeren bir raster katmanı da var.


1
Yürüyüş zamanını hesaplamanın daha iyi olacağını düşünüyorum . Yürüme hızı eğime bağlıdır ve yukarı doğru aşağıdan daha fazla zaman alır.
AndreJ

1
Düz harita mesafesine kıyasla "3D" mesafe? Fark muhtemelen düşündüğünüzden daha küçüktür. MICRODEM'in arkasındaki adam Peter Guth, "Mesafe veya alan eğim açısının sekantı tarafından artırılacak ve çok büyük yamaçlara ulaşıncaya kadar sekant esasen 1 olacak." Dedi.
nhopton

Yanıtlar:


6

Bu hedefe ulaşmak, CBS'de temel bir görevdir, ancak QGIS'deki yöntem önemsiz olmayabilir. En iyi şansınız r.walkanizotropik maliyet yüzeyi (dem + eğim + diğer faktörler) oluşturan GRASS işlevini kullanmaktır .

İlk olarak, girdi olarak bir sürtünme yüzeyi oluşturmanız gerekir r.walk. Sizin durumunuzda, DEM'inizin boyutuna uyan tek değerli bir raster (1.0) olabilir. Bunu aşağıdaki r.mapcalculatorformülle oluşturabilirsiniz : A*0+1burada A sizin DEM'inizdir.

Ardından, CSV'nizden bir başlangıç ​​noktası kümesi seçmeniz gerekir. Bunlar nokta, biriken maliyet yüzeyinden hesaplanacaktır. Her başlangıç ​​noktasından ayrı bir maliyet yüzeyi oluşturmanız gerekir. Bu adımdaki her başlangıç ​​noktası ile ilişkili bitiş noktalarını tanımlamak akıllıca olabilir (rota dışı katmanlarda). Sonra, r.walkoluşturulan girişlerle çalıştırabilirsiniz . Başlangıç ​​noktaları tek bir katmanda olabilir, diyalog kutusundaki yeşil okla bunları tekrarlayabilirsiniz.

Şimdi ideal bir durumda, maliyet yüzeylerine ve her maliyet yüzeyi için bitiş noktalarına sahipsiniz. Teoride en düşük maliyetli yolları bulabilirsiniz r.drain, ancak benim için bir hatayla sonuçlandı (python QgisRaster kütüphanesini içe aktaramadı). Aynı sayıda çalışırsanız, SAGA'nın "En düşük maliyet yolları" algoritması ile devam edebilirsiniz. Maliyet yüzeyi ile her bitiş noktası için bir nokta ve bir çizgi katmanı oluşturur (yineleme düğmesini tekrar kullanın). Tüm çizgilere sahip olduktan sonra, SAGA'nın "Şekil katmanlarını birleştir" aracıyla bunları tek bir şekil dosyasında birleştirebilirsiniz.

Bu yöntem puanların artmasıyla çok yavaş olabilir, bu nedenle çok fazla varsa, yöntemi python ile otomatikleştirmeyi deneyebilirsiniz. Hesaplamak için hala çok zaman olacak (özellikle maliyet yüzeyleri), ancak elle tonlarca bitiş noktası katmanı oluşturmanız gerekmez.


Bunun için teşekkürler, muhtemelen GRASS kullanmayı öğrenmem gerekecek. Ayrıca sorun yaşayabileceğimi de düşünüyorum, yayınladığım resimde dağların çoğunun geçilmez olduğunu varsayacağım, bu yüzden "dağ x'den yüksekse, etrafından dolan" gibi bir şey eklemek zorunda kalacaktım ... cevap, bu muhtemelen başlamama yardımcı olacaktır.
traustid

Bu kolay bir durum r.walk. Geçilmez hücreleri ayarlamak için sürtünme haritasını kullanabilirsiniz. DEM'inizi kurallar dosyasında (eşik değeriniz 2000m ise) r.reclassgibi kurallarla yeniden sınıflandırın 1 thru 2000 = 1 2000 thru * = 9999. Bu şekilde algoritma, yüksek sürtünme değerlerine sahip hücreleri geçmeyecek, etrafında dolaşmanın maliyeti daha düşük olacaktır.
Gabor Farkas

Bunun için çok teşekkürler! Gerçekten çok fazla GRASS bilgim yok ama bu gerçekten harika bir başlangıç ​​noktası.
traustid

Rica ederim. Dürüst olmak gerekirse, hala görevine hayran kaldım. Bu, CBS'nin en geniş disiplinlere nasıl uygulanabileceğinin en iyi örneklerinden biridir.
Gabor Farkas
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.