Tìm kiếm một hàm khoảng cách chi phí raster nguồn mở nhanh để sử dụng trong mã


9

Tôi đã truy cập internet để tìm một hàm khoảng cách chi phí nguồn mở nhanh mà tôi có thể nhúng vào mã của mình. Về cơ bản, chức năng sẽ hoạt động giống như triển khai ArcGIS nơi tôi có thể chỉ định raster nguồn và raster chi phí và tạo ra raster khoảng cách chi phí. Điều đó nói rằng, việc triển khai không cần phức tạp như ArcGIS ở chỗ tôi không nhất thiết phải nhập "trình quét" với siêu dữ liệu địa lý nhúng - một chữ ký có các mảng số đơn giản sẽ đủ vì tôi có thể xác minh rằng dữ liệu trùng lặp chính xác tại thời điểm tôi gọi hàm.

Mục đích cụ thể của tôi là tính khoảng cách chi phí đến một điểm duy nhất ở trung tâm của raster chi phí 1000 x 1000 dựa trên nhấp chuột của người dùng, vì vậy việc thực hiện nhanh là rất quan trọng.

Triển khai AC # sẽ là lý tưởng nhưng tôi sẽ xem xét bất cứ điều gì ngoài đó.

Có ai biết về một thư viện mã nguồn mở hỗ trợ này không? Cảm ơn bạn đã giúp đỡ!

Câu trả lời:


5

GRASS GIS có triển khai C trong r.cost( nguồn , tài liệu ) sử dụng một đống nhỏ . Ngoài ra, bạn có thể sử dụng gói biểu đồ như QuickGraphFloyd-Warshall để tính toán chi phí.

Những thay đổi gần đây trong GRASS 6.4 đã giúp r.cost nhanh hơn đáng kể , do đó, có lẽ hiệu suất có thể đủ tốt: trên máy tính xách tay của tôi, mất khoảng 3 giây cho vùng di động 1M hoặc 5 giây khi kích hoạt di chuyển hiệp sĩ. GRASS là một ứng dụng C, không phải là giải pháp thả xuống cho một cơ sở mã C #. Nếu bạn đồng ý thêm vào ngăn xếp của mình, bạn có thể sử dụng PyWPS để thực hiện cuộc gọi tới GRASS, sau đó sử dụng kết quả ở nơi khác trong ứng dụng của bạn.


Tôi sẽ sử dụng điều này trong một ứng dụng web, vì vậy mục tiêu của tôi là hoàn thành thao tác chỉ trong vài giây. Tôi sẽ chỉ có một ô mục tiêu duy nhất và khoảng cách chi phí tối đa tương đối chặt chẽ (khoảng cách từ ô mục tiêu trung tâm đến rìa của raster chi phí, giả sử một đường thẳng với chi phí tối thiểu). Các thử nghiệm của tôi sử dụng ArcMap trong các điều kiện này khiến tôi nghĩ rằng nó có thể. Bất kỳ lời khuyên hoặc kinh nghiệm sử dụng GRASS trong C #?
vào

Tôi đã cập nhật câu hỏi của mình để trả lời câu hỏi của bạn, nó bắt đầu như một bình luận, nhưng đã quá lâu. Mong rằng sẽ giúp!
scw

Cảm ơn scw! Đây là tất cả thông tin tuyệt vời, nhưng thực sự không đưa tôi đến nơi tôi cần đến trừ khi tôi bắt đầu chuyển mã GRASS (điều mà tôi không lo lắng để làm). Có thể có một số chuyên viên máy tính raster khác ngoài kia với một số lời khuyên. Tôi sẽ tiếp tục đào sâu vào vấn đề này và tôi sẽ đăng giải pháp tôi giải quyết.
atogle

Có lẽ bạn có thể chuyển sang đồng nghiệp của mình: azavea.com/research/staff-research-projects/map-acheebra ;-) Tôi đã đề xuất mã GRASS vì nó triển khai mạnh mẽ và nhanh chóng, C # tương đối mới đối với không gian xử lý địa lý, vì vậy có sẵn việc thực hiện có thể khó đến
scw

scw - đó là nơi cuộc hành trình của tôi bắt đầu, thực sự. Vấn đề của tôi là việc thực hiện của anh ấy hy sinh thời gian xử lý cho các tính toán chất lượng cao. Bây giờ chúng tôi đang làm việc trên một thuật toán để làm điều ngược lại. GRASS là một gợi ý tuyệt vời, tôi chỉ không có cách thực sự sử dụng nó. =)
atogle

3

Tôi đã sử dụng r.costchức năng trong GRASS rất nhiều. 1000 * 1000 lưới không có vấn đề gì trên một máy tính xách tay bình thường. Ngoài ra còn có gói R (gdistance, http://r-forge.r-project.org/projects/gdistance/ ) đang được phát triển. Tôi tìm thấy GRASS nhanh hơn rất nhiều.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.