Kodda kullanmak için hızlı, açık kaynaklı bir raster maliyet mesafe işlevi mi arıyorsunuz?


9

Kodumu içine yerleştirebileceğim hızlı, açık kaynaklı bir maliyet-mesafe fonksiyonu için internette dolaşıyorum. İşlevsellik temelde bir kaynak raster ve maliyet raster belirtebildiğim ve bir maliyet mesafe raster çıktısı alabileceğim ArcGIS uygulaması gibi çalışmalıdır . Bununla birlikte, uygulamanın ArcGIS kadar sofistike olması gerekmediği için, katıştırılmış coğrafi meta verilerle "rasters" ı mutlaka girmem gerekmiyor - verilerin doğru bir şekilde örtüştüğünü doğrulayabildiğim için basit sayısal diziler alan bir imza yeterli olacak fonksiyonu çağırdığımda.

Benim özel amacım 1000 x 1000 maliyet rasterinin merkezindeki tek bir noktaya olan maliyet mesafesini bir kullanıcı tıklamasına dayanarak hesaplamaktır, bu nedenle hızlı yürütme çok önemlidir.

AC # uygulaması ideal olurdu ama orada olan her şeye bakacağım.

Bunu destekleyen açık kaynaklı bir kütüphane bilen var mı? Yardımın için teşekkürler!

Yanıtlar:


5

ÇİM CBS bir C uygulaması vardır r.cost( kaynak , belgeleri bir kullanır) min-öbek . Alternatif olarak, maliyeti hesaplamak için QuickGraph ve Floyd-Warshall gibi bir grafik paketi kullanabilirsiniz .

GRASS 6.4'teki son değişiklikler r.cost'u önemli ölçüde daha hızlı hale getirdi , belki de performans yeterince iyi olabilir: dizüstü bilgisayarımda, 1M hücre bölgesi için yaklaşık 3 saniye veya şövalye hareketi etkinleştirilmiş 5 saniye sürer. GRASS bir C uygulamasıdır, bir C # kod tabanı için bir açılan çözüm değildir. Yığına eklemeyi tamamlarsanız , GRASS'ı aramak için PyWPS'yi kullanabilir ve ardından sonucu uygulamanızın başka bir yerinde kullanabilirsiniz.


Bunu bir web uygulamasında kullanacağım, bu yüzden amacım işlemi sadece birkaç saniye içinde tamamlamak. Sadece tek bir hedef hücreye ve nispeten sıkı bir maksimum maliyet mesafesine sahip olacağım (merkez hedef hücreden maliyet rasterinin kenarına olan mesafe, minimum maliyetle düz bir çizgi varsayarak). Bu koşullar altında ArcMap kullanan testlerim bana bunun mümkün olduğunu düşündürüyor. Herhangi bir ipucu veya deneyim GR # C # kullanarak?
atogle

Sorularınızı cevaplamak için sorumu güncelledim, yorum olarak başladı, ancak çok uzun sürdü. Umarım yardımcı olur!
scw

Teşekkürler scw! Bu tüm büyük bilgi, ama gerçekten GRASS kodu (ki yapmak endişeli değilim) porting başlamadan olmam gereken yerde olmamalıdır. Belki orada bazı ipuçları ile başka raster meraklıları vardır. Bunu araştırmaya devam edeceğim ve çözdüğüm çözümü göndereceğim.
Ağustos'ta

Belki de meslektaşınıza dönebilirsiniz: azavea.com/research/staff-research-projects/map-algebra ;-) GRASS kodunu önerdim çünkü sağlam ve hızlı bir uygulama, C # coğrafi işleme alanı için nispeten yeni, bu yüzden önceden mevcut uygulamaların yapılması zor olabilir.
scw

scw - bu benim yolculuğumun başladığı yer. Benim sorunum onun uygulaması yüksek kaliteli hesaplamalar için işlem süresini feda olmasıdır. Şimdi tam tersini yapmak için bir algoritma üzerinde çalışıyoruz. GRASS harika bir öneri, sadece onu kullanmanın bir yolu yok. =)
Ağustos'ta


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.