ST_DistanceSphere
ST_DistanceSphere는 구에 있는 두 점 지오메트리 사이의 거리를 반환합니다.
구문
ST_DistanceSphere(geom1, geom2)
ST_DistanceSphere(geom1, geom2, radius)
인수
- geom1
-
구에 놓인
GEOMETRY
데이터 형식의 점 값(도)입니다. 점의 첫 번째 좌표는 경도 값입니다. 점의 두 번째 좌표는 위도 값입니다. 3DZ, 3DM 또는 4D 지오메트리의 경우 처음 두 좌표만 사용됩니다. - geom2
-
구에 놓인
GEOMETRY
데이터 형식의 점 값(도)입니다. 점의 첫 번째 좌표는 경도 값입니다. 점의 두 번째 좌표는 위도 값입니다. 3DZ, 3DM 또는 4D 지오메트리의 경우 처음 두 좌표만 사용됩니다. - radius
-
데이터 형식이
DOUBLE PRECISION
인 구의 반경입니다. radius가 제공되지 않으면 구의 기본값은 Earth로 설정되며 타원체의 WGS(World Geodetic System) 84 표현에서 반경이 계산됩니다.
반환 타입
반경과 같은 단위의 DOUBLE PRECISION
입니다. 반경이 제공되지 않은 경우 거리는 미터 단위입니다.
geom1 또는 geom2가 null이거나 비어 있으면 null이 반환됩니다.
radius가 제공되지 않으면 결과는 지표면을 따라 측정된 미터 단위가 반환됩니다.
radius가 음수이면 오류가 반환됩니다.
geom1과 geom2의 SRID(공간 참조 시스템 식별자) 값이 같지 않으면 오류가 반환됩니다.
geom1 또는 geom2가 점이 아니면 오류가 반환됩니다.
예시
다음 예시 SQL은 지구상의 두 지점 사이의 거리를 킬로미터 단위로 계산합니다.
SELECT ROUND(ST_DistanceSphere(ST_Point(-122, 47), ST_Point(-122.1, 47.1))/ 1000, 0);
round
-----------
13
다음 예제 SQL은 독일의 세 공항 위치 Berlin Tegel(TXL), Munich International(MUC) 및 Frankfurt International(FRA) 사이의 거리를 킬로미터 단위로 계산합니다.
WITH airports_raw(code,lon,lat) AS ( (SELECT 'MUC', 11.786111, 48.353889) UNION (SELECT 'FRA', 8.570556, 50.033333) UNION (SELECT 'TXL', 13.287778, 52.559722)), airports1(code,location) AS (SELECT code, ST_Point(lon, lat) FROM airports_raw), airports2(code,location) AS (SELECT * from airports1) SELECT (airports1.code || ' <-> ' || airports2.code) AS airports, round(ST_DistanceSphere(airports1.location, airports2.location) / 1000, 0) AS distance_in_km FROM airports1, airports2 WHERE airports1.code < airports2.code ORDER BY 1;
airports | distance_in_km
-------------+----------------
FRA <-> MUC | 299
FRA <-> TXL | 432
MUC <-> TXL | 480