래스터를 사용하지 않고 여러 점에 비해 접근하기 어려운 극점 찾기


9

스코틀랜드의 도시와 마을을 대표하는 일련의 지점에서 '접근 할 수없는 지점'을 찾고 싶습니다. FOSS GIS 도구 사용 (QGIS, SAGA, GRASS, Postgres / PostGIS ...).

이것은 인구 중심에서 가장 먼 지점입니다. 이것은 도시를 포함하지 않는 가장 큰 원의 중심이지만, 가장자리에 도시가 있습니다.

GDAL 근접 필터 인 래스터 접근 방식이 있습니다 .

이 작업을 수행 하는 VECTOR 기반 방법이 있습니까? 래스터 화가 필요하지 않은 것?

여기 래스터를 사용한 시도가 있습니다 ...

  • 미터 단위로 적절한 투영에서 포인트 레이어로 시작하십시오 (OSGB, 27700을 사용하고 있습니다)
  • "one"이라는 필드를 추가하고 상수 값이 1 인 정수로 설정하십시오.
  • -a 하나 를 사용하고 픽셀 대신 GEO 를 사용하도록 명령을 편집하는 래스터 벡터 . 픽셀이 정사각형인지 확인하십시오!
  • 근접 래스터에서 윤곽을 만듭니다 (이 경우 너비 1km).

그 모습은 다음과 같습니다. 나는 몇 가지 후보 포인트를 손으로 그렸다 ;-)

여기에 이미지 설명을 입력하십시오

반복되는 버퍼를 녹이는 것 ( Multi ring buffer 플러그인 사용)이 작동 할 수 있다고 생각했지만이 작업을 수행하기에 메모리가 충분하지 않은 것 같습니다.

답변:


7

가장 큰 반경을 가진 삼각형의 중심이 3 점을 넘지 않는 것으로 생각합니다. 처음 11 아래 그림에서 이러한 중심이 표시됩니다. 순위 번호로 표시되어 있습니다.

여기에 이미지 설명을 입력하십시오

삼각형 외부에있는 것을 제거하고 챔피언을 정의하는 것으로 충분합니다 (예 : 그림에서 No3).

스티븐 파인딩에서 영감을 얻은 업데이트 :

여기에 이미지 설명을 입력하십시오

스크립팅 (고급 라이센스 포함)없이 ArcGIS에서 얻은 첫 번째 솔루션과 달리 위의 결과가 작동합니다! 그러나 연구 영역의 가장자리에서 의심스러운 결과를 생성 할 수 있습니다 (예 : 포인트 번호 1).


1
와, 고마워요! 나는 (1) 들로네 포인트 ( Vector | Delaunay Triangulation), (2) 챔피언 삼각형 ( $area델로 나이 다각형의 속성 테이블에서 계산 됨 )을 선택 하여 QGIS의 워크 플로를 따르려고 시도 했으며 가장 큰 것을 새로운 레이어로 저장했습니다 Processing | GRASS | Vector | v.voronoi.skeleton. 챔피언 삼각형). 이 방법이 맞다고 생각하십니까?
Kazuhito

첫 단계가 맞습니다. 모든 삼각형에 대한 중심점을 계산했습니다. 중심을 찾으려면 3면 모두의 중간 점에 대해 수직으로 안쪽으로 수직을 이루고 교차점을 찾습니다 (3,2 조합).
FelixIP

외접하지 않은 삼각형의 외접원.
FelixIP

정말 고마워! (그리고 멋진 사진도 감사합니다. 배경에 대해 더 많이 기대할수록 더 매력적입니다.)
Kazuhito

1
좋은 관찰! 테스트하고 답을 업데이트하겠습니다. 첫 번째 솔루션과 달리 적어도 Arcgis에서는 스크립팅이 필요하지 않습니다.
FelixIP

5

후속 조치는 다음과 같습니다. 올바른 방향으로 나를 가리켜 준 @FelixIP에게 감사드립니다!

호주의 OSM 데이터를 사용하여 호주 본토에서 "접근 할 수없는 지점"을 찾을 수있었습니다. POINT (137.234888 -24.966466)에서 Akarnenehe, Bedourie 및 Mount Dare와 260km 거리에 있습니다.

여기에 이미지 설명을 입력하십시오

QGIS에서 래스터와 벡터 접근 방식의 조합을 사용하는 상당히 쉬운 워크 플로를 발견했습니다. 다른 GIS에서도 비슷한 접근법이 효과가 있다고 확신합니다.

'아하'순간은 이것을 알아 차렸다

최대 값은 모두 보로 노이 메시의 트라이 포인트에 해당합니다. 보로 노이 다각형의 인접한 트리플렛이 만나는 포인트입니다.

접근 방식은 다음과 같습니다.

  • 미터 기반 투사로 작동합니다. 나는 이상적이지 않은 3857을 사용했지만 내 OSM 데이터는 그 형식이었습니다. :)
  • ( 'city', 'village', 'town', 'hamlet')에서 관심 장소를 나타내는 레이어를 얻습니다.
  • 이 레이어에서 보로 노이 메시 를 만듭니다
  • 삼점을 얻기 위해 추출 노드 를 사용
  • 근접성 래스터 만들기 (질문에 표시된대로)
  • 래스터를 가로 윤곽선에 클립하여 바다 픽셀이 0으로 설정됩니다.
  • 래스터에 대해 추출 된 노드에서 포인트 샘플링 도구 사용

그런 다음 Db ManagerVirtual Layers 를 사용 하여 래스터에서 가장 큰 거리 값을 가진 노드를 찾으십시오.

select 
    rowid,
    name,
    proximity2,
    st_astext(st_transform(geometry,4326)) as pt, 
    st_buffer(geometry, proximity2) as geometry
from 
    "samples" 
order by 
    proximity2 desc 
limit 1;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.