กำลังมองหาฟังก์ชั่นค่าใช้จ่ายระยะทางแรสเตอร์โอเพนซอร์ซที่รวดเร็วเพื่อใช้ในโค้ด


9

ฉันใช้อินเทอร์เน็ตอย่างรวดเร็วในการหาฟังก์ชั่นต้นทุนทางไกลแบบโอเพ่นซอร์สซึ่งฉันสามารถฝังไว้ในโค้ดของฉันได้ ฟังก์ชั่นนั้นควรจะทำงานเหมือนกับการใช้งาน ArcGISซึ่งฉันสามารถระบุแรสเตอร์ต้นทางและแรสเตอร์ราคาและส่งออกแรสเตอร์ระยะทางค่าใช้จ่าย ที่กล่าวว่าการดำเนินการไม่จำเป็นต้องมีความซับซ้อนเช่นเดียวกับ ArcGIS ที่ฉันไม่จำเป็นต้องใส่ "rasters" ด้วย metadata ทางภูมิศาสตร์แบบฝังตัว - ลายเซ็นที่ใช้อาร์เรย์ตัวเลขอย่างง่ายจะเพียงพอเพราะฉันสามารถตรวจสอบว่าข้อมูลทับซ้อนกันอย่างถูกต้อง ในเวลาที่ฉันเรียกฟังก์ชั่น

จุดประสงค์เฉพาะของฉันคือการคำนวณระยะทางต้นทุนไปยังจุดเดียวที่อยู่ตรงกลางของแรสเตอร์ราคา 1000 x 1,000 ตามการคลิกของผู้ใช้ดังนั้นการดำเนินการที่รวดเร็วจึงมีความสำคัญมาก

การติดตั้ง AC # นั้นเหมาะสมอย่างยิ่ง แต่ฉันจะตรวจสอบทุกอย่างที่มีอยู่

มีใครรู้บ้างเกี่ยวกับห้องสมุดโอเพ่นซอร์สที่รองรับสิ่งนี้ ขอบคุณสำหรับความช่วยเหลือของคุณ!

คำตอบ:


5

GRASS GIS มีการดำเนินการใน C r.cost( แหล่งที่มา , เอกสาร ) ซึ่งใช้ นาทีกอง หรือคุณสามารถใช้แพ็คเกจกราฟอย่างQuickGraphและFloyd-Warshallเพื่อคำนวณค่าใช้จ่าย

การเปลี่ยนแปลงล่าสุดใน GRASS 6.4 ทำให้r.cost เร็วขึ้นอย่างมากดังนั้นประสิทธิภาพอาจดีพอ: บนแล็ปท็อปของฉันใช้เวลาประมาณ 3 วินาทีสำหรับพื้นที่เซลล์ 1M หรือ 5s ที่มีการเปิดใช้งานอัศวิน GRASS เป็นแอปพลิเคชั่น C ไม่ใช่โซลูชันแบบดรอปดาวน์สำหรับ codebase C # หากคุณเพิ่มในสแต็กของคุณเรียบร้อยแล้วคุณสามารถใช้PyWPSเพื่อโทรไปยัง GRASS จากนั้นใช้ผลลัพธ์ที่อื่นในแอปพลิเคชันของคุณ


ฉันกำลังจะใช้สิ่งนี้ในเว็บแอปพลิเคชันดังนั้นเป้าหมายของฉันคือการดำเนินการให้เสร็จภายในเวลาไม่กี่วินาที ฉันจะมีเพียงเซลล์เป้าหมายเดียวและระยะทางค่าใช้จ่ายสูงสุดที่ค่อนข้างแน่น (ระยะทางจากเซลล์เป้าหมายกึ่งกลางไปจนถึงขอบของแรสเตอร์ราคาโดยถือว่าเป็นเส้นตรงด้วยต้นทุนขั้นต่ำ) การทดสอบของฉันโดยใช้ ArcMap ภายใต้เงื่อนไขเหล่านี้ทำให้ฉันคิดว่าเป็นไปได้ มีเคล็ดลับหรือประสบการณ์ในการใช้ GRASS ใน C # หรือไม่
atogle

ฉันได้อัปเดตคำถามเพื่อตอบคำถามของคุณแล้วมันเริ่มเป็นความคิดเห็น แต่ยาวเกินไป หวังว่าจะช่วย!
scw

ขอบคุณ SCW! นี่เป็นข้อมูลที่ยอดเยี่ยม แต่ไม่ได้พาฉันไปยังที่ที่ฉันต้องการเว้นแต่ว่าฉันจะเริ่มย้ายรหัส GRASS (ซึ่งฉันไม่อยากทำ) บางทีมีแรสเตอร์อื่น ๆ ออกมาด้วยเคล็ดลับบางอย่าง ฉันจะขุดต่อไปในนี้และฉันจะโพสต์โซลูชั่นที่ฉันชำระ
atogle

บางทีคุณสามารถหันไปหาเพื่อนร่วมงานของคุณ: azavea.com/research/staff-research-projects/map-algebra ;-) ฉันแนะนำรหัส GRASS เนื่องจากมีการติดตั้งที่รวดเร็วและมีประสิทธิภาพ C # ค่อนข้างใหม่สำหรับพื้นที่ประมวลผล การติดตั้งใช้งานอาจทำได้ยาก
scw

scw - นั่นคือสิ่งที่การเดินทางของฉันเริ่มต้นจริง ปัญหาของฉันคือการใช้งานของเขาเสียเวลาประมวลผลสำหรับการคำนวณคุณภาพสูง เรากำลังดำเนินการกับอัลกอริทึมเพื่อทำสิ่งที่ตรงกันข้าม GRASS เป็นคำแนะนำที่ยอดเยี่ยมฉันไม่ได้ใช้วิธีนี้ =)
atogle

3

ฉันใช้r.costฟังก์ชั่นใน GRASS เป็นจำนวนมาก 1,000 * 1,000 กริดไม่มีปัญหากับแล็ปท็อปทั่วไป นอกจากนี้ยังมีแพ็คเกจ R (gdistance, http://r-forge.r-project.org/projects/gdistance/ ) ภายใต้การพัฒนา ฉันพบว่า GRASS เร็วขึ้นมาก


0

นี่จะสามารถค้นหาเส้นทางที่สั้นที่สุดในอาร์เรย์ int .... ที่เขียนใน C # ดูเหมือนว่าจะทำงานได้ดีกับแล็ปท็อปของฉันที่มีอาร์เรย์ 4000,4000 ชุดอาจคุ้มค่าที่จะดู

http://www.codeproject.com/Articles/9040/Maze-Solver-shortest-path-finder

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.