ArcGIS Kernel Density 도구의 기능을 반복하고 싶습니다. 어떻게해야합니까?
설치하기 쉬운 무료 오픈 소스 소프트웨어에 대한 답변 을 제한하고 싶습니다. 즉, QGIS는 모든 플랫폼에서 GRASS와 함께 쉽게 설치되므로 QGIS + GRASS는 양호하지만 SAGA는 그렇지 않습니다 (불행히도 이상적인 도구입니다).
QGIS의 보호 지역에 걸쳐 야생 동물의 밀도 맵을 작성하려고합니다. 다음 예의 밀도 맵은 원시 그룹 수 (벡터 파일의 필드)를 사용하여 커널 밀도 (SpatialAnalyst) 도구에서 각 그리드 셀의 밀도를 가중시키는 데 사용 된 야생 동물의 관측점으로부터 ArcGIS에서 생성되었습니다. 선택한 검색 반경 및 그리드 셀 크기 :
밀도에 대한 이전 질문에서 GRASS v.kernel 도구를 사용하여 ArcGIS Kernel Density 도구를 모방하는 것이 제안되었지만 v.kernel은 동일한 작업을 수행하지 않습니다 . 매뉴얼을 보고 (성공적으로) 밀도 맵을 생성 한 후 v.kernel 함수는 포인트 밀도 에서만 작동하며 각 포인트에 대한 변수를 줄 수있는 기회가 없습니다 (예 : 원시 카운트) .
최신 정보
*.surf.*
GRASS에는 밀도 표면을 생성하는 데 도움이되는 다양한 도구 가있는 것 같습니다.이 도구는 가중치 열 또는 z- 값을 받거나 래스터에서 수행됩니다. @underdark는 v.surf.rst를 제안했으며 ‘zcolumn’은 가중치 (수) 변수 일 것입니다. 그러나 도구에 특정 그리드 크기를 만들거나 특정 반경을 사용하도록 요청하는 방법을 알 수는 없습니다.
v.surf.rst 또는 다른 방법을 사용하는 방법에 대한 제안?
샘플 데이터
x,y,count
431250,8707500,0
418750,8707500,5
413750,8707500,3
411250,8707500,1
408750,8685000,0
411250,8685000,0
416250,8685000,0
416250,8682500,6
411250,8682500,3
418750,8680000,0
433750,8677500,3
421250,8677500,0
423750,8675000,1
431250,8672500,0
428750,8672500,2
426250,8672500,2
423750,8670000,0
답변
그 매뉴얼 페이지에 따르면, GRASS 명령 r.resamp.filter을 위해 할 점을 나타내는 데이터 래스터 는 ArcGIS가 할 것입니다 정확히 포인트 레이어 를 사용 : filter=box
는 “간단한”래스터에 대한 옵션을하고 사용하는 filter=gauss
다른는 ArcGIS는 커널에 대한 옵션을 선택합니다. -n
널 전파를 피 하려면 플래그를 사용하십시오 .
참고 커널 밀도 추정 (일명 “열지도”)입니다 하지 데이터의 보간. 위치에서 KDE 값 X는 값 “량 추정 Z 근처의 단위 면적당” X를 . (반지름 또는 “대역폭”은 “가까운”의 의미를 정량화합니다.) Z 의 값을 지도의 가능한 모든 위치에서 정의 할 필요는 없습니다. 예를 들어, Z 는 사람과 같은 존재를 나타낼 수 있으며,이 경우 KDE는 인구 밀도를 제공합니다 . Z 의 값은 맵에서 지속적으로 변할 필요도 없습니다. 보간 들어,되는 것으로 그 Z를는 모든 위치에서 정의되며 데이터는 지정된 지점에서 의 Z 값에 대한 관측치입니다 . 보간 기는 다른 모든 지점에서 관찰되지 않은 Z 값을 예측하려고 시도합니다 . 이것은 Z 가 온도 나 압력과 같은 경우에는 의미가 있지만, Z 가 무언가의 존재를 기록하거나 데이터가 완전한 인구 조사 일 때는 일반적으로 무의미 합니다. (후자의 경우, 지역에 대한 도로 밀도 맵이 무엇을 의미하는지, 그리고 비도로 지역에 걸쳐 도로를 “보간”하는 방법을 이해할 수있는 방법을 고려하십시오.)
답변
SAGA의 모듈 ‘Kernel Density Estimation’은 당신이 찾고있는 것입니다.
QGIS에 SAGA 모듈 인터페이스를 설치하고 (메뉴 : Plugins-> Fetch Python plugins ..) 모듈을 사용하십시오. 행운을 빕니다!
답변
GRASS GIS를 사용하여 ArcMap의 Point Density에 가까운 Kernel Density보다 훨씬 간단한 방법 :
-
r.in.xyz
지정된 래스터 해상도에서 method = sum을 사용하여 점을 래스터 맵으로 가져옵니다 (로 설정g.region
). -
사용
r.neighbors
(기본값) 방법 = 평균지도를 원활하게하고 검색 반경을 설정하는 옵션 크기를 사용할 수 있습니다.
(현재 GRASS에 액세스 할 수 없으므로 실제로 시도하지 않았습니다!)
답변
v.surf.rst에 대한 추가 지침을 요청한 내용은 다음과 같습니다.
먼저 그리드 크기에 대해-플러그인-> GRASS-> 현재 GRASS 영역 편집을 사용하고 출력 해상도를 설정할 수 있습니다. v.surf.rst의 출력은 그 해상도를 갖습니다.
반경의 경우 ‘장력’이 매개 변수 인 것 같습니다. 나는이 알고리즘에 대한 전문가는 아니지만 매뉴얼을 읽으면 관련 비트 인 것 같습니다.
“… 높은 장력은”점들 사이의 거리를 증가시키고 “는 각 점의 영향 범위를 줄이고, 낮은 장력은”거리를 감소 시키며, 점들이 서로 더 긴 범위에 걸쳐 영향을 미칩니다. “
따라서 반경 매개 변수를 사용하는 것처럼 장력 매개 변수를 대략적으로 사용할 수 있습니다.
샘플 데이터에서 v.surf.rst의 결과는 다음과 같으며 카운트를 보간의 가중치로 사용한다는 점에서 합리적입니다.
답변
테스트하지는 않았지만 QGIS Contributors 저장소에는 ‘R을 사용한 홈 범위 추정’이라는 플러그인이 있습니다. 여기에는 커널 (밀도?) 계산이 포함됩니다. 작동한다면 이것이 최선의 방법이라고 생각합니다. R은 커널 밀도를 계산하는 실제 통계 방법을 수행합니다.
R을 설치했다면 플러그인을 설치하고 바로 사용할 수 있습니다.
답변
qgis 외부에서 약간의 Java 프로그래밍을 허용하는 경우 간단히이 밀도 맵 빌더 라이브러리 를 사용할 수 있습니다 .
constructor을 사용 HeatMapBuilder(int w, int h, int[][] pts, int[] weights)
하면 필요에 따라 각 포인트에 가중치를 부여 할 수 있습니다. 이 방법으로 출력 이미지를 검색하고 getImage()
를 사용하여 디스크에 저장할 수 있습니다 ImageIO.write("mymap.png")
.
다음은 출력 예입니다.
평활 강도와 색상 팔레트를 변경할 수 있습니다.