코드에서 사용할 빠른 오픈 소스 래스터 비용 거리 함수를 찾고 있습니다.


9

코드에 포함시킬 수있는 빠른 오픈 소스 비용-거리 기능을 위해 인터넷을 검색했습니다. 이 기능은 기본적으로 소스 래스터 및 비용 래스터를 지정하고 비용 거리 래스터를 출력 할 수 있는 ArcGIS 구현 과 같이 작동해야합니다 . 즉, 임베디드 지오 메타 데이터를 사용하여 "래스터"를 입력 할 필요가 없다는 점에서 ArcGIS만큼 정교하게 구현할 필요는 없습니다. 데이터가 올바르게 겹치는 지 확인할 수 있기 때문에 간단한 숫자 배열을 사용하는 서명이면 충분합니다. 함수를 호출 할 때

내 구체적인 의도는 사용자 클릭을 기준으로 1000 x 1000 비용 래스터 중심의 단일 지점까지 비용 거리를 계산하는 것이므로 빠른 실행이 매우 중요합니다.

AC # 구현은 이상적이지만 거기에있는 것을 살펴 보겠습니다.

누구든지 이것을 지원하는 오픈 소스 라이브러리를 알고 있습니까? 당신의 도움을 주셔서 감사합니다!

답변:


5

GRASS GIS는 min-heap 을 사용하는 r.cost( source , documentation ) C 구현을 가지고 있습니다. 또는 QuickGraphFloyd-Warshall 과 같은 그래프 패키지 를 사용하여 비용을 계산할 수 있습니다.

GRASS 6.4의 최근 변경 사항으로 인해 r.cost가 훨씬 빨라져 성능이 충분할 수 있습니다. 랩탑에서는 1M 셀 영역의 경우 약 3 초, 기사의 이동이 활성화 된 경우 5 초가 걸립니다. GRASS는 C # 코드베이스를위한 드롭 인 솔루션이 아닌 C 애플리케이션입니다. 스택에 추가 해도 괜찮다면 PyWPS 를 사용하여 GRASS를 호출 한 다음 응용 프로그램의 다른 곳에서 결과를 사용할 수 있습니다.


나는 이것을 웹 응용 프로그램에서 사용할 것이므로 목표는 몇 초 안에 작업을 완료하는 것입니다. 나는 단일 대상 셀과 상대적으로 긴밀한 최대 비용 거리 (최소 비용으로 직선을 가정 할 때 중심 대상 셀에서 비용 래스터의 가장자리까지의 거리) 만 가질 것입니다. 이러한 조건에서 ArcMap을 사용한 테스트를 통해 가능하다고 생각합니다. C #에서 GRASS 사용에 대한 팁이나 경험이 있습니까?
atogle

귀하의 질문에 답변하기 위해 내 질문을 업데이트했으며, 의견으로 시작되었지만 너무 길었습니다. 희망이 도움이됩니다!
scw

감사합니다 scw! 이것은 모두 훌륭한 정보이지만 GRASS 코드 이식을 시작하지 않으면 (필자가 아닌) 실제로 필요한 곳에 도달하지 못합니다. 어쩌면 몇 가지 팁으로 다른 래스터 괴짜가있을 수 있습니다. 나는 이것에 계속 파고 들어가고 내가 해결 한 해결책을 게시 할 것입니다.
atogle

아마도 당신은 동료에게 문의 할 수 있습니다 : azavea.com/research/staff-research-projects/map-algebra ;-) 강력하고 빠른 구현이기 때문에 GRASS 코드를 제안했습니다 .C #은 지리 처리 공간에 상대적으로 새롭기 때문에 기존 구현하기가 어려울 수 있습니다.
scw

scw-실제로 여행이 시작된 곳입니다. 내 문제는 그의 구현이 고품질 계산을 위해 처리 시간을 희생한다는 것입니다. 우리는 지금 반대 작업을 수행하는 알고리즘을 연구하고 있습니다. GRASS는 훌륭한 제안입니다. 실제로 그것을 사용할 방법이 없습니다. =)
atogle


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.