점과 다각형의 가장 가까운 부분 사이의 거리와 방위를 얻는 방법은 무엇입니까?


9

SQL을 작성하고 PostGIS를 사용하는 것이 상당히 익숙합니다. postGIS 데이터베이스에 다각형 피처 테이블이 있으며 사전 정의 된 점의 특정 거리 내에서 폴리곤 피처의 모든 속성, 거리 및 방향을 선택하려면 SQL 쿼리를 작성해야합니다. ST_Distance를 사용하여 기능을 선택하고 거리를 계산했지만 베어링을 얻는 방법을 해결할 수 없었습니다.

이것은 지금까지 사용중인 스크립트입니다.

SELECT *,
  ST_Distance (Geometry, ST_GeomFromText ('POINT(292596 90785)', 27700))
FROM mytable
WHERE
  ST_DWithin(
    Geometry,
    ST_GeomFromText('POINT(292596 90785)', 27700),
    250) 

거리와 피처의 방위를 어떻게 계산합니까?

답변:


4

ST_Azimuth를 사용하여 베어링을 계산할 수 있지만 점 형상 만 매개 변수로 사용하므로 실제로 원하는 베어링을 결정해야합니다.

@Nicklas가 제안한대로 가장 짧은 선을 선택할 수 있습니다 (이미 계산 한 거리를 가진 선임). 다각형에 도달하기 위해 가장 빠른 "방향"이 필요한 경우에 적합합니다. 다른 어떤 것도, 다각형 중심 (ST_Centroid)에 대해 계산하는 것이 좋습니다. 이는 임의의 모양에 대해 더 나은 결과를 제공합니다.


2

사용하다

ST_ 방위각 (ST_Shortestline (geom1, geom2))

편집하다

방금 ST_Azimuth가 argumetn으로 선 스트링을 사용하지 않으므로 두 점을 제공해야한다는 것을 깨달았습니다.

형상 중 하나가 점인 경우 직접 사용하고 ST_ClosestPoint를 사용하여 다각형의 점을 가져올 수 있습니다.


1

ST_Azimuth 는 원하는 기능입니다. 북쪽에서 시계 방향으로 각도 를 라디안 단위로 반환합니다 . ST_Azimuth()페이지 의 샘플에서 알 수 있듯이 단순히 degrees()함수에 래핑 하면 필요한 각도가 각도로 표시됩니다.

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