기본적으로 3 개의 좌표가 있습니다.<@>이 PostgreSQL에서 올바른 거리를 반환하지 않는 이유는 무엇입니까?
- 클리블랜드, (35.255097, -84.86844) - 이것은 출발점입니다.
- 애틀랜타, 조지아 - (32.4608333, -84.9877778) - 이것은 그 근원에 훨씬 가깝습니다.
- 콜럼버스, 조지아 - (33.7488889, -84.3880556) - 이것은 분명히 멀리 떨어져 있습니다.
Here is a Google Map with these three points for comparison.
이제 Earthdistance module for Postgresql 내가 두 점 사이의 비행 마일을 얻기 위해 <@>
연산자를 사용합니다 사용하여.
SELECT 'Celeveland, TN' AS origin
, '(35.255097,-84.86844)' AS origin_cords
, city || ', ' || region AS dest
, cords AS cords
, cords <@> '(35.255097,-84.86844)'::point AS distance_miles
FROM maxmind.city
WHERE (region = 'GA' AND city ='Atlanta') OR (region = 'GA' AND city = 'Columbus')
;
그러나 이것은 내가 무엇을 얻을입니다 ...
origin | origin_cords | dest | cords | distance_miles
----------------+-----------------------+--------------+--------------------------+------------------
Celeveland, TN | (35.255097,-84.86844) | Columbus, GA | (32.4608333,-84.9877778) | 18.952732930393
Celeveland, TN | (35.255097,-84.86844) | Atlanta, GA | (33.7488889,-84.3880556) | 34.5888147812704
(2 rows)
그래서 그것은 나를 이야기하는 것은 콜럼버스, GA 클리블랜드 (18.95mi), 애틀란타, GA에 비해 TN (34.58mi에 가까운 것입니다) 비록 내가 분명히 그것이 사실이 아니라고 말할 수는 있지만. PostgreSQL 9.1 및 PostgreSQL 8.4에서 이러한 결과를 확인했습니다.
어떤 코드가 순서가 바뀌 었습니까? 나는 위도가 제일 먼저다고 믿습니다. 그것은 Google Maps에서 작동합니다. –
업데이트를 참조하십시오. –
업데이트를 이해하지 못하거나 내 질문에 대한 해결책을 찾거나 자신의 대답에 문제가 있습니까? –