PostgreSQL データベースのテーブルに列がlatitude
あり、PostgreSQL 関数を使用して距離クエリを実行しようとしています。longitude
location
私はマニュアルのこの章を読みました:
https://www.postgresql.org/docs/current/static/earthdistance.html
しかし、私はそこに何かが欠けていると思います。
どうすればいいですか?利用可能な他の例はありますか
PostgreSQL データベースのテーブルに列がlatitude
あり、PostgreSQL 関数を使用して距離クエリを実行しようとしています。longitude
location
私はマニュアルのこの章を読みました:
https://www.postgresql.org/docs/current/static/earthdistance.html
しかし、私はそこに何かが欠けていると思います。
どうすればいいですか?利用可能な他の例はありますか
ポイント演算子を使用した別の例を次に示します。
初期設定(一度だけ実行する必要があります):
create extension cube;
create extension earthdistance;
そして、クエリ:
select (point(-0.1277,51.5073) <@> point(-74.006,40.7144)) as distance;
distance
------------------
3461.10547602474
(1 row)
LONGITUDE FIRSTpoints
で作成されていることに注意してください。ドキュメントごと:
ポイントは (経度、緯度) として取得され、その逆ではありません。これは、経度が x 軸、緯度が y 軸の直感的な考えに近いためです。
これはひどいデザインです...しかし、それはそうです。
出力はマイル単位になります。
地表上の 2 点間の法定マイルの距離を示します。
Earthdistance モジュールが正しくインストールされていると仮定すると、2 つの都市間の距離がマイル単位で表示されます。この方法では、より単純な点ベースの地球距離が使用されます。point() の引数は、最初に経度、次に緯度であることに注意してください。
create table lat_lon (
city varchar(50) primary key,
lat float8 not null,
lon float8 not null
);
insert into lat_lon values
('London, GB', 51.67234320, 0.14787970),
('New York, NY', 40.91524130, -73.7002720);
select
(
(select point(lon,lat) from lat_lon where city = 'London, GB') <@>
(select point(lon,lat) from lat_lon where city = 'New York, NY')
) as distance_miles
distance_miles
--
3447.58672105301