名前

ST_Distance — ジオメトリ型については,二つのジオメトリの,二次元の最小デカルト距離(空間参照系に基づきます)を,投影された単位で返します. ジオグラフィ型については,デフォルトでは,二つのジオメトリ間の回転楕円体上の最小距離をメートル単位で返します.

概要

float ST_Distance(geometry g1, geometry g2);

float ST_Distance(geography gg1, geography gg2);

float ST_Distance(geography gg1, geography gg2, boolean use_spheroid);

説明

ジオメトリ型については,二つのジオメトリの,二次元の最小デカルト距離を,投影された単位(空間参照系の単位)で返します. ジオグラフィ型については,デフォルトでは,二つのジオメトリ間の,WGS84回転楕円体上の最小距離をメートル単位で返します. 回転楕円体の替わりに球面による答えを得るにはFALSEを渡します.

このメソッドは OpenGIS Simple Features Implementation Specification for SQL 1.1.を実装するものです.

このメソッドはSQL/MM仕様の実装です. SQL-MM 3: 5.1.23

初出バージョン: 1.5.0 1.5でジオグラフィサポートが導入されました.大きいジオメトリやバーテックの多いジオメトリについての,扱いを改善することによる平面での速度改善.

-- ジオメトリの例 - 平面上の度単位 4326はWGS84経度緯度 単位は度
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

-- ジオメトリの例 - メートル単位 (SRID: 26986 メートル単位マサチューセッツ州平面)
-- (マサチューセッツで最も精度が良い)
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

-- Geometry example - units in meters (SRID: 2163 US National Atlas Equal area) (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

-- ジオグラフィの例 - 同じですがメートル単位,球面を使って若干の速度向上と若干の精度低下
SELECT ST_Distance(gg1, gg2) As spheroid_dist, ST_Distance(gg1, gg2, false) As sphere_dist 
FROM (SELECT
	ST_GeographyFromText('SRID=4326;POINT(-72.1235 42.3521)') As gg1,
	ST_GeographyFromText('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)') As gg2
	) As foo  ;

  spheroid_dist   |   sphere_dist
------------------+------------------
 123.802076746848 | 123.475736916397

関連情報

ST_DWithin, ST_Distance_Sphere, ST_Distance_Spheroid, ST_MaxDistance, ST_Transform