나는 지금 실내지도 네비게이션 응용 프로그램을 만들고 있는데 내가하려는 것은 건물에지도 지점의 데이터베이스를 구축하는 것입니다.PostGis Distance Calculation
내가 사용하는 모든 좌표는 Google지도 (EPSG는 3857 임)에서 가져온 것입니다. 와 처음 2 행에 대해
SELECT ST_DISTANCE(
ST_GeomFromText('POINT(' || StartLon || ' ' || StartLat || ')',3857),
ST_GeomFromText('POINT(' || EndLon || ' ' || EndLat || ')',3857))
FROM i3_building.floordata;
: 내가 지금해야 할 것은 미터의 거리를 찾을뿐만 아니라 내가 2 점 사이의 거리를 추출 할 때 m
을에 D_Within을 사용하는 것입니다 주어진Start: 103.776047 1.292149; End: 103.77607 1.292212 (3 meters away)
Start: 103.776070 1.292212; End: 103.77554 1.292406 (50 meters away)
결과는 다음과 같습니다
2.59422435413724e-005
4.11096095831604e-005
가, 방사선의 두 번째 재 비록 sult는 첫 번째 것보다 두 배나 높습니다. 그래서 그것은 나를 혼란스럽게 만듭니다. 그럼 난 미터로 출력하려고 :
SELECT ST_DISTANCE(
ST_GeographyFromText('POINT(' || StartLon || ' ' || StartLat || ')'),
ST_GeographyFromText('POINT(' || EndLon || ' ' || EndLat || ')'))
FROM i3_building.floordata;
같은 행에 주어진 결과는 다음과 같습니다 나뿐만 아니라 무엇을 기대하지
2.872546829
4.572207435
. Postgis와 SRID에 익숙하지 않아서이 질문이 간단 해 보이지만 도와 주시면 감사하겠습니다. @@
답장을 보내 주셔서 감사합니다. 나는 4326도 시도했지만 3857과 많이 다르지 않았다. 첫 번째 세트와의 거리는 3 미터 떨어져 있기 때문에 내 사무실에 있으므로 잘 알고있다. 나는 또한 여기에서 그것을 산출하는 것을 시도한다 : http://boulter.com/gps/distance/ - 동일한 결과, 3 미터. –
별로 다르지 않은 점은 무엇입니까? 나는 7.45 미터와 62.74가 상당히 다르다고 말할 것이다. 그것은 st_distance_sphere가 문제이지만, 이것은 st_distance가 투영 된 좌표에서 거리를 취하는 lat/lon에서 입력을 취하기 때문에 문제입니다. 3857과 4326은 각각 미터와 각도가 다르지만 근본적으로 다릅니다. 올바른 답을 얻기 위해서는 올바른 기능을 사용해야합니다. D –
죄송합니다. 나가서 측정을 시도하십시오. 약 7 미터가 정확합니다.도와 줘서 고마워. –