나는 오랫동안 PostGIS를 사용해 왔지만 LINESTRING
지오메트리 를 사용할 필요는 없었습니다 ...! :)
여기에 내가하고 싶은 일이 있습니다 : 선 스트링 테이블 (주어진 도시의 거리, SRID 3395)이 있고 주어진 지점까지 가장 가까운 선 스트링을 찾고 싶습니다 (GPS 위치, SRID 4326).
내가 찾은 해결책은 expand()
방법을 사용하여 내 점 내의 모든 선 스트링을 선택하고 방법을 사용하여 각 선 스트링과 내 점 사이의 거리를 결정하는 ST_Distance()
것입니다.
다음은 SQL입니다.
SELECT myLineId, myLineName, ST_Distance(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395),myLineGeom) AS myLineDistance
FROM myLines
WHERE myLineGeom && expand(ST_Transform(GeomFromText('POINT(LON LAT)',4326),3395), 100)
ORDER BY myLineDistance;
결과는 괜찮아 보이지만 구현에 문제가 있다고 생각합니다.
1) 너희들은 expand()
모든 관련 줄을 얻을 수 있다고 생각 합니까?
2) 당신 ST_Distance()
은 이것이 올바른 방법 이라고 생각 합니까? 내가 얻고 싶은 거리가 포인트와 선 사이의 거리가 아니라 포인트와 내 선 사이의 가장 작은 거리이기 때문에 내가 잘못하고 있다고 생각합니다.
삽화: