获取几何长度(以米为单位)?


13

在PostGIS中,该ST_length()函数以某些单位而不是以米为单位返回线串的长度。

是否有类似ST_Length()但以米为单位的功能?

Answers:


11

St_Length()以其空间参考系统为单位返回长度。如果要获取仪表,则需要将功能转换为以仪表为单位的其他SRS。这可以即时完成,因此不必担心会写出另一个数据集。

SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;

在此示例中,SRID 26915是UTM区域15 N,NAD83。


或者只是添加您自己的字段并自己管理计算。注意您必须编写自己的触发器或根据长度的变化重新计算触发器。
布拉德·尼索姆

18

从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


0

使用以下公式:

select ST_Length(ST_Transform(ST_GeomFromEWKT('SRID=4326;'||st_astext(the_geom)),26986)) as geolength from my_table;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.