고도를 기준으로 점 사이의 거리를 측정하는 방법은 무엇입니까?


10

점 사이의 거리를 측정 할 수 있어야하지만 거리는 고도와 관련하여 계산해야합니다. 요점은 19 세기 이야기꾼들의 집과 그들의 이야기에서 언급 된 장소입니다. 따라서 거리는 "도보 거리"여야합니다. 실제 직선 거리가 더 짧아도 계곡을 따라 걷는 경로는 산 위로가는 경로보다 짧을 수 있습니다. 첨부는 내 생각을 보여주는 스크린 샷입니다. 이미지에서 경로 A와 C는 경로 B보다 짧게 계산됩니다.점과 고도

점은 CSV 파일에서 가져온 것이지만 고도 데이터가있는 래스터 레이어도 있습니다.


1
나는 걷는 시간 을 계산하는 것이 더 나을 것이라고 생각합니다 . 보행 속도는 경사에 따라 다르며 위쪽보다 아래쪽보다 시간이 더 걸립니다.
AndreJ

1
플랫 맵 거리와 비교 한 "3D"거리? 그 차이는 생각보다 작을 것입니다. MICRODEM의 배후 인 Peter Guth는 "거리 또는 면적은 경사각의 시컨트에 의해 증가 할 것이며, 매우 큰 경사면에 도달 할 때까지 시컨트는 본질적으로 1입니다."
nhopton

답변:


6

이 목표를 달성하는 것은 GIS에서 다소 기본적인 작업이지만 QGIS의 방법은 사소하지 않을 수 있습니다. GRASS의 r.walk기능 을 사용하는 것이 가장 좋습니다 . 이방성 비용 표면 (dem + slope + other factor).

먼저에 대한 입력으로 마찰 표면을 작성해야합니다 r.walk. 귀하의 경우 DEM의 범위와 일치하는 단일 값 래스터 (1.0) 일 수 있습니다. r.mapcalculator다음 공식 을 사용하여 작성할 수 있습니다 . A*0+1여기서 A는 DEM입니다.

다음으로 CSV에서 시작점 세트를 선택해야합니다. 이것들은 포인트, 누적 비용 표면이 계산됩니다. 모든 시작 지점에서 개별 비용 표면을 만들어야합니다. 이 단계의 모든 시작 지점과 관련된 종료 지점을 정의하는 것이 현명 할 수 있습니다 (물론 개별 레이어에서). 그런 r.walk다음 생성 된 입력으로 실행할 수 있습니다 . 시작점은 단일 레이어에있을 수 있으며 대화 상자의 녹색 화살표를 사용하여 시작점을 반복 할 수 있습니다.

이제 이상적인 경우 모든 비용 표면에 대한 비용 표면과 끝 점이 있습니다. 이론상으로 가장 저렴한 비용의 경로를 찾을 수는 r.drain있지만 오류가 발생했습니다 (파이썬은 QgisRaster 라이브러리를 가져올 수 없습니다). 같은 문제로 실행하면 SAGA의 "최소 비용 경로"알고리즘을 사용할 수 있습니다. 비용 표면이있는 모든 끝점에 대해 점과 선 레이어를 만듭니다 (반복 버튼 사용). 모든 선을 확보 한 후 SAGA의 "모양 레이어 병합"도구를 사용하여 단일 모양 파일로 병합 할 수 있습니다.

이 방법은 점 증분으로 인해 속도가 매우 느릴 수 있으므로 많은 점이 있으면 파이썬으로 방법을 자동화하려고 할 수 있습니다. 계산하는 데 많은 시간이 걸리지 만 (특히 비용 표면), 수많은 끝점 레이어를 수동으로 만들 필요는 없습니다.


덕분에 GRASS 사용법을 배우기 시작했을 것입니다. 또한 문제가있을 수 있다고 생각합니다. 게시 한 그림에서 많은 산을 통과 할 수 없다고 가정하므로 "산이 x보다 높으면 주변을 이동하십시오"와 같은 것을 추가해야합니다. 대답은 아마도 시작하는 데 도움이 될 것입니다.
traustid

의 쉬운 조건입니다 r.walk. 마찰 맵을 사용하여 통과 할 수없는 셀을 설정할 수 있습니다. 규칙 파일 r.reclass과 같은 규칙 을 사용 하여 DEM을 다시 분류하십시오 1 thru 2000 = 1 2000 thru * = 9999(임계 값이 2000m 인 경우). 이런 식으로 알고리즘은 마찰 값이 높은 셀을 통과하지 않으므로 이동하는 데 드는 비용이 줄어 듭니다.
Gabor Farkas

정말 감사합니다! 나는 GRASS에 대한 지식이 거의 없지만 이것이 정말 좋은 출발점입니다.
traustid

천만에요. 솔직히 말해서, 나는 당신의 임무에 여전히 놀랐습니다. 이것은 가장 큰 예 중 하나이며, GIS가 광범위한 분야에 적용될 수있는 방법입니다.
Gabor Farkas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.