簡単な答え:
x、yを変換するだけです ST_MakePoint
を使用したオンザフライの値
(オーバーヘッドに注意してください!)指定されたポイントからの距離を計算すると、デフォルトのSRSはWGS84
:
SELECT ST_Distance(ST_MakePoint(lon,lat)::GEOGRAPHY,
ST_MakePoint(23.73,37.99)::GEOGRAPHY) FROM places;
GEOGRAPHY
の使用 GEOMETRY
を使用している間、結果はメートル単位で取得されます 度でそれを与えます。もちろん、距離を計算するには座標ペアのSRSを知ることが不可欠ですが、データ品質を制御でき、座標が一貫している場合(この場合、SRSを省略)、心配する必要はあまりありません。外部データを使用して操作を実行することを計画している場合は、注意が必要になります。外部データからもSRSに気づかず、自分のデータとは異なる場合があります。
長い答え:
そうですね、PostGISを使用している場合は、 x、yを使用しないでください。 そもそも別々の列に。このようなことを行うジオメトリ/地理列を簡単に追加できます。
これはあなたのテーブルです...
CREATE TABLE places (place TEXT, lon NUMERIC, lat NUMERIC);
次のデータが含まれています..
INSERT INTO places VALUES ('Budva',18.84,42.92),
('Ohrid',20.80,41.14);
地理タイプ列を追加する方法は次のとおりです。
ALTER TABLE places ADD COLUMN geo GEOGRAPHY;
列が追加されたら、次のように座標を地理/ジオメトリに変換し、テーブルを更新します。
UPDATE places SET geo = ST_MakePoint(lon,lat);
距離を計算するには、関数 ST_Distance
を使用する必要があります。
、次のように(メートル単位の距離):
SELECT ST_Distance(geo,ST_MakePoint(23.73,37.99)) FROM places;
st_distance
-----------------
686560.16822422
430876.07368955
(2 Zeilen)
WKT
に位置パラメータがある場合
、次も使用できます:
SELECT ST_Distance(geo,'POINT(23.73 37.99)') FROM places;
st_distance
-----------------
686560.16822422
430876.07368955
(2 Zeilen)