다양한 GPS 정밀도를 가진 유사한 경로 (이 경우 마운틴 트레일)를 나타내는 여러 줄 기능이 있습니다 (이 경우 멀티 트레일에도 있습니다 …).
이 프로젝트의 목적을 위해, 나는 그들 모두에서 “평균”라인을 계산하고 가장 가능성이 높은 트레일 위치의 결과 라인을 생성하는 방법을 찾고 있습니다.
QGIS 또는 다른 도구를 사용하여 어떻게 진행 하시겠습니까 (OGR에 대해 생각했습니다 …)?
답변
테스트 데이터 :
- QGIS 2.18.16, GRASS GIS 7
- 4 개의 GPS 트랙
- 1x1km의 그리드 내
나는.)
QGIS 플러그인 Locate Points Along Lines
( https://plugins.qgis.org/plugins/LocatePoints/ ) 을 사용하여 GPS 트랙을 따라 점을 만듭니다 . 나는 내 예에서 5m의 간격을 사용했습니다.
II.)
만들기 Concave Hull
로 Processing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull
. 0.1
예제에서 임계 값을 사용했습니다 . 임계 값이 낮 으면 출력 다각형 내에 구멍이있을 수 있습니다.
III.)
이제 스켈레톤 알고리즘을 사용하여 “평균”라인을 계산할 수 있습니다. 에서 골격을 검색하십시오 Processing Toolbox
. 의 v.voronoi.skeleton
도구를 사용하십시오 GRASS GIS 7 commands
.
답변
히트 맵 접근 방식 :
처리 단계의 계산 시간으로 인해이 방법은 시간이 더 걸립니다. 더 일반적인 솔루션에 더 가까이 다가가는 아이디어로 볼 수 있습니다.
테스트 데이터 :
- QGIS 2.18.16, GRASS GIS 7
- 4 개의 GPS 트랙
- 1x1km의 그리드 내
나는.)
QGIS 플러그인으로 선을 따라 점 찾기 ( https://plugins.qgis.org/plugins/LocatePoints/ )로 GPS 트랙을 따라 점을 만듭니다 . 히트 맵 접근법에는 2m 간격을 사용했습니다 .
II.)
QGIS 히트 맵 플러그인으로 히트 맵을 생성하십시오. 반경 40m를 사용했습니다. 출력 래스터에 구멍이 없을 때까지 반지름을 증가시킵니다. 다른 반지름 값으로 시도해야합니다.
III.)
편집 정확한 히트 맵 래스터 값을 유지할 필요가 없습니다.
이제 가장 많은 점이 집중되어있는 “백색”영역으로 래스터를 얇게 만들고 싶습니다. 따라서 출력 래스터를 다시 계산합니다. 출력 래스터의 최소 / 최대 값은 0
및 89.7935
입니다. 위의 값만 사용합니다 44
. 이를 위해 “엄지 손가락 규칙”을 사용했습니다. 최대 값을 내림하고 2로 나눕니다. 이 값을 다시 반올림하십시오. 89/2 = 44,5
-> 44
. OSGeo4W Shell을 사용했습니다 : gdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif
.
IV.)
편집
a) 재 계산 된 열지도를 다각형 화 Raster > Conversion > Polygonize ...
b) 다각형을 단순화합니다 Vector > Geometry Tools > Simplify geometries
. 의 공차를 사용했습니다 2
. 더 간단한 다각형은 스켈레톤의 처리 시간을 줄입니다.
c) 골격 계산 : 처리 도구 상자에서 골격을 검색하십시오. v.voronoi.skeleton
GRASS GIS 7 명령에서 도구를 사용하십시오 .
결과 라인이 첫 번째 답변보다 트레일의 가장 가능성이 높은 위치를 나타냅니다. 특히 북쪽의 굴곡의 경우 평균선은 서로 더 가까운 3 개의 트랙을 따릅니다. 동쪽의 굽힘에 대해서도 동일합니다.
접근 방식의 장점 :
- QGIS를 독점적으로 사용하여 합리적인 좋은 결과
단점 :
- 빅 데이터 세트의 처리 시간
- 매개 변수를 우선적으로 시도해야합니다 (히트 맵 반경, 최소 / 최대 값)
- 처리 단계를 자동화하기 어렵다
- 좁은 굽힘 / 곡선 및 실제로 선 밖으로 나가는 트랙에 대해서는 테스트되지 않았습니다.
누군가가 처리 단계를 최적화 할 수 있다면 환영합니다!