답변:
St_Length ()는 공간 참조 시스템의 단위로 길이를 리턴합니다. 미터를 얻으려면 미터를 단위로 사용하는 다른 SRS로 기능을 변환해야합니다. 이 작업은 즉시 수행 할 수 있으므로 다른 데이터 세트를 작성하는 것에 대해 걱정하지 마십시오.
SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;
이 예에서 SRID 26915는 UTM Zone 15 N, NAD83입니다.
PostGIS 2.0 이후 (아마도) ST_Length
지오메트리를 지리로 다시 캐스팅 하여이 작업을 수행 할 수도 있습니다.
ST_Length(geom::geography)
예를 들어, 50 ° N, 12 ° E와 51 ° N, 13 ° E 사이의 거리 :
SELECT ST_Length(geom) AS deg,
ST_Length(geom::geography)/1000 AS km_1,
ST_Length_Spheroid(geom, 'SPHEROID["WGS 84",6378137,298.257223563]')/1000 as km_2
FROM ST_GeomFromText('LINESTRING(12 50, 13 51)' , 4326) AS geom
어느 것이
deg | km_1 | km_2
-----------------+------------------+------------------
1.4142135623731 | 131.935962780384 | 131.935962780384
SQL 요청의 예 : post-in-postgis에 대한 폴리 라인-지오메트리의 길이를 계산하는 방법
SQL 요청 (길이 (km) (미터당 / 1000-삭제)) :
SELECT
sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads
FROM
"D1_r";