단일 점에서 여러 다각형까지의 모든 거리 계산 [닫기]


9

속성 (95 개체)을 정의하는 점 레이어와 속성 (211 개체)과 관련된 토지 플롯을 정의하는 다각형 레이어라는 두 개의 레이어가 있습니다. 각 점은 하나 이상의 다각형과 관련이 있습니다. 내가 만들고 싶은 것은 각 점과 그 점과 관련된 모든 다각형까지의 거리 표입니다 (가장 가까운 가장자리 또는 다각형의 중심-둘 중 하나입니다). QGIS와 ArcGIS에서 가장 가까운 거리를 계산하는 것은 비교적 쉽지만, 그 계산은 적어도 내가 사용했던 방법으로 모든 먼 다각형을 생략합니다. 이상적으로는 출력을 원합니다.

Point_ID | distance to polygon 1 | distance to polygon 2 | distance to polygon 3 | etc.

ArcGIS 10 또는 QGIS 2.2+의 포인터가 가장 유용합니다.


이는 ArcGIS에서 거의 분석을 통해 수행 할 수 있지만 각 지점마다이를 수행하려면 약간의 자동화가 필요합니다. 파이썬 스크립팅에 익숙하십니까?
Emil Brundage

Emil-아니요, 저는 파이썬에 익숙하지 않지만 배울 것이 있습니다.
NickN

답변:


1

이를 달성하기 위해 QGIS 에서 거리 매트릭스 를 사용할 수 있습니다 . 먼저로 다각형을 변환 할 필요가 중심 점 중 하나에 의해 벡터 > 형상 도구 > 다각형의 무게 중심 또는 다각형의 무게 중심의 SAGA 버전을 통해. 그 이유는 거리 매트릭스 기능이 2 개의 점 레이어 사이에서만 분석 할 수 있기 때문입니다. 또한 출력은 다음과 같습니다.

Point_1 | PolygonCentroid_1 | Distance
Point_1 | PolygonCentroid_2 | Distance
Point_1 | PolygonCentroid_3 | Distance
Point_2 | PolygonCentroid_1 | Distance
Point_2 | PolygonCentroid_2 | Distance

출력은 .csv 파일이므로 Microsoft Excel과 같은 다른 소프트웨어를 사용하여 레이아웃을 수동으로 편집 할 수 있습니다.


감사합니다. Joseph-저처럼 GIS를 처음 접하는 사람들에게는 이것이 제가 원하는 답변을 얻는 가장 간단한 방법입니다.
NickN

가장 환영받는 친구! 이 절차 (및 결과)는 기본이지만 GIS 소프트웨어에 익숙해지면 다른 답변에 설명 된 고급 절차를 사용해 볼 수 있습니다.
Joseph

1
@nickN이 방법에 대한 아주 작은 참고 사항 인 중심은 항상 그 모양에 따라 다각형 안에 있지는 않습니다. 그것은이다 가능한 일부 잘못된 거리 / 순위를 얻을 수 있지만, 그것은 문제가 될 것입니다 여부에 대한 데이터와 요구 사항에 따라 달라집니다. 그렇지 않으면 이것은 본질적으로 ArcGIS GNT의 QGIS 버전입니다. 후자는 점 이상을 처리 할 수 ​​있으며 QGIS가 결과에서 이름 / ID를 어떻게 처리하는지 잘 모르겠습니다.
Chris W

5

이것은 QGIS (모든 버전이 할 것이라고 생각합니다)와 DB 관리자의 매우 간단한 SQL 문을 사용하여 달성하는 것은 매우 간단합니다. 그러나 당신의 것이 일종의 공간 데이터베이스 (Postgis 또는 공간 공간)에 있어야합니다. 대부분의 사람들이 더 접근하기 쉽기 때문에 공간 공간을 사용한다고 가정하지만 SQL 문은 Postgis와 동일합니다.

  1. 새로운 Spatialite 데이터베이스를 작성하십시오.
  2. 점 및 다각형 레이어를 새 데이터베이스로 가져옵니다.
  3. DB 관리자 플러그인을 열고 데이터베이스를 선택한 후 다음 SQL 문 중 하나를 실행하십시오.

모든 점에서 모든 다각형 경계까지의 거리

SELECT 
  f.point_id,
  g.polygon_id,
  st_distance(g.geom, f.geom) AS distance
FROM
  points_table AS f, 
  polygons_table AS g

관련 다각형 경계까지 모든 점까지의 거리 (공통 필드가 있다고 가정)

SELECT 
  f.point_id,
  g.polygon_id,
  st_distance(g.geom, f.geom) AS distance
FROM
  points_table AS f JOIN 
  polygons_table AS g ON (g.common_field = f.common_field)

관련 다각형 중심까지의 모든 점까지의 거리 :

SELECT 
  f.point_id,
  g.polygon_id,
  st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
  points_table AS f JOIN 
  polygons_table AS g ON (g.common_field = f.common_field)

레이어의 필드를 결과에 추가 할 수 있습니다.

SELECT 
  f.point_id,
  f.point_number,
  g.polygon_id,
  g.parcel_name,
  st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
  points_table AS f JOIN 
  polygons_table AS g ON (g.common_field = f.common_field)

또는 모든 분야 :

SELECT 
  f.*,
  g.*,
  st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
  points_table AS f JOIN 
  polygons_table AS g ON (g.common_field = f.common_field)

공간 정보 데이터베이스를 생성하고 레이어를 가져 오는 방법에 대한 추가 정보가 필요하면 알려 주시면 답변을 수정하겠습니다.
Alexandre Neto

안녕하세요 Alexandre, 왜 간단한 회원이 아닌 가입하세요?
Luigi Pirelli

글쎄, 폴 램지 (Paul Ramsey)의 프레젠테이션 중 하나에서 발췌 한 내용입니다. 그가 Join의 명시 적 사용을 옹호하는 이유를 기억할 수는 없지만 그가 말하면 ... : -PI는 두 쿼리에 대해 EXPLAIN을 실행하여 차이가 있는지 확인합니다.
Alexandre Neto

나는 SpatialLite를 처음 사용합니다.이 답변은 현재 진행중인 문제를 해결하는 것으로 보입니다. 내 테이블이 비어 있습니다. 아마 나는 이것을 이해하지 못한다. "Pothole VRI"라는 다각형 레이어와 "Grid Pothole Center"라는 다른 포인트 레이어가 있습니다. 위의 지침을 사용하여 다음 코드를 추가합니다. SELECT f.id, g.id, st_distance (f.geom, st_centroid (g.geom)) AS 거리 FROM 'Grid Pothole Center'AS f, 'Pothole VRI'AS g __ id, id : 1, distance라는 제목을 가진 빈 테이블 x를 얻었습니다. 여기서 내가 잘못한 것은 무엇입니까? QGIS 3.6 사용
Mark Thompson

4

근처 테이블을 생성 는 ArcGIS에서 도구는 당신이 원하는 것을 할 것입니다,하지만 고급 라이센스가 필요하고 그것을 할 것입니다 모든 점 / 다각형 - 서로 관련이없는 바로 그. 즉, 각 95 개 객체에 대해 211 개 속성 모두에 대해 거리가 결정되므로 테이블에 20,045 개의 행이 표시됩니다. 결과 테이블을 필터링하거나 Emil이 제안한대로 연관을 기반으로 선택을 작성하고 해당 그룹에서만 실행하도록 태스크를 자동화하도록 제안해야합니다.

필터링의 경우, 조인 (정의 쿼리 또는 선택이 뒤 따름) 만 있으면됩니다. 공구 결과는 IN_FID 및 NEAR_FID를 제공합니다. 도구를 실행하는 방법 (근처 속성 또는 포인트 근처 속성)에 따라 어떤 FID가 어느 것인지 결정합니다. 그런 다음 포인트 및 속성 테이블 (둘 다)을 해당 FID를 기반으로 도구 결과에 결합합니다.

다음 단계는 하나의 레코드의 두 필드가 있어야하는 조인 된 테이블에서 모든 레코드를 선택 (또는 정의 쿼리)하는 것이므로 211 개의 속성 레코드 각각에 해당 속성이 속하는 95 개의 포인트를 나타내는 속성이 있다고 가정합니다. 일치-포인트 이름 필드 = 속성 관련 포인트 이름 필드 일치하지 않는 경우는 해당 점과 관련이없는 다각형이므로 해당 점과의 거리는 신경 쓰지 않아도됩니다.

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