Trong PostGIS, ST_length()
hàm trả về độ dài của một dòng trong một số đơn vị, nhưng không tính bằng mét.
Có một chức năng như ST_Length()
nhưng tính bằng mét?
Trong PostGIS, ST_length()
hàm trả về độ dài của một dòng trong một số đơn vị, nhưng không tính bằng mét.
Có một chức năng như ST_Length()
nhưng tính bằng mét?
Câu trả lời:
St_Lpm () trả về độ dài tính theo đơn vị của Hệ thống tham chiếu không gian của nó. Nếu bạn muốn lấy mét, bạn sẽ cần chuyển đổi tính năng của mình sang SRS khác sử dụng mét làm đơn vị. Điều này có thể được thực hiện nhanh chóng, vì vậy đừng lo lắng về việc viết ra một bộ dữ liệu khác.
SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;
Trong ví dụ này, SRID 26915 là UTM Vùng 15 N, NAD83.
Có vẻ như kể từ PostGIS 2.0 (có thể trước đó), bạn cũng có thể thực hiện việc này bằng ST_Length
cách ghi lại hình học vào địa lý:
ST_Length(geom::geography)
Ví dụ: khoảng cách giữa 50 ° N, 12 ° E và 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
cái nào cho
deg | km_1 | km_2
-----------------+------------------+------------------
1.4142135623731 | 131.935962780384 | 131.935962780384
Ví dụ về yêu cầu SQL: how-to-tính-length-of-polyline-hình học-cho-vài-bảng-trong-postgis
Yêu cầu SQL (chiều dài tính bằng km (/ 1000 -delete cho mét)):
SELECT
sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads
FROM
"D1_r";