ST_Distance — ジオメトリ型については、二つのジオメトリの、2次元の最小デカルト距離 (空間参照系に基づきます)を、投影法の単位で返します。ジオグラフィ型については、デフォルトでは、二つのジオメトリ間の測地距離をメートル単位で返します。
float ST_Distance(
geometry g1, geometry g2)
;
float ST_Distance(
geography gg1, geography gg2)
;
float ST_Distance(
geography gg1, geography gg2, boolean use_spheroid)
;
ジオメトリ型については、二つのジオメトリの、2次元の最小デカルト距離 (空間参照系に基づきます)を、投影法の単位で返します。ジオグラフィ型については、デフォルトでは、二つのジオメトリ間の測地距離をメートル単位で返します。use_spheroidをFALSEにすると、回転楕円体の替わりに球面で計算します。
This method implements the OpenGIS Simple Features Implementation Specification for SQL 1.1.
This method implements the SQL/MM specification. SQL-MM 3: 5.1.23
This method supports Circular Strings and Curves
This method is also provided by SFCGAL backend.
Availability: 1.5.0 1.5でジオグラフィ対応が導入されました。大きいジオメトリや頂点の多いジオメトリについての速度が改善しました。
Enhanced: 2.1.0 ジオグラフィでの速度が改善されました。詳細はMaking Geography fasterをご覧ください。
Enhanced: 2.1.0 - 曲線ジオメトリ対応が導入されました。
Enhanced: 2.2.0 - measurement on spheroid performed with GeographicLib for improved accuracy and robustness. Requires Proj >= 4.9.0 to take advantage of the new feature.
-- ジオメトリの例 - 4326はWGS 84経度緯度で単位は度 SELECT ST_Distance( ST_GeomFromText('POINT(-72.1235 42.3521)',4326), ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)', 4326) ); st_distance ----------------- 0.00150567726382282 -- Geometry example - units in meters (SRID: 26986 Massachusetts state plane meters) (most accurate for Massachusetts) SELECT ST_Distance( ST_Transform(ST_GeomFromText('POINT(-72.1235 42.3521)',4326),26986), ST_Transform(ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)', 4326),26986) ); st_distance ----------------- 123.797937878454 -- ジオメトリの例 - 単位はメートル (SRID: 2163 米国ナショナルアトラス正積図法) (least accurate) SELECT ST_Distance( ST_Transform(ST_GeomFromText('POINT(-72.1235 42.3521)',4326),2163), ST_Transform(ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)', 4326),2163) ); st_distance ------------------ 126.664256056812
-- same as geometry example but note units in meters - use sphere for slightly faster less accurate SELECT ST_Distance(gg1, gg2) As spheroid_dist, ST_Distance(gg1, gg2, false) As sphere_dist FROM (SELECT ST_GeogFromText('SRID=4326;POINT(-72.1235 42.3521)') As gg1, ST_GeogFromText('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)') As gg2 ) As foo ; spheroid_dist | sphere_dist ------------------+------------------ 123.802076746848 | 123.475736916397