3
本質的には、3つの座標があります。<@>がPostgreSQLで適切な距離を返さないのはなぜですか?
- クリーブランド、テネシー州(35.255097、-84.86844) - これは起源です。
- アトランタ、ジョージア州(32.4608333、-84.9877778) - これはその起源に非常に近い。
- コロンバス、ジョージア州(33.7488889、-84.3880556) - これは間違いありません。今、私は2つの点の間の空気のマイルを取得するために
<@>
演算子を使用しますEarthdistance module for Postgresqlを使用して
Here is a Google Map with these three points for comparison.
。
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マップで動作します。 –
更新を参照してください。 –
私はあなたのアップデートを理解していない、私の質問に対する解決策を特定しているのか、それとも自分の答えに問題があるのか? –