Dalam PostGIS, ST_length()
fungsi mengembalikan panjang linestring di beberapa unit, tetapi tidak dalam meter.
Apakah ada fungsi seperti ST_Length()
tetapi dalam meter?
Dalam PostGIS, ST_length()
fungsi mengembalikan panjang linestring di beberapa unit, tetapi tidak dalam meter.
Apakah ada fungsi seperti ST_Length()
tetapi dalam meter?
Jawaban:
St_Length () mengembalikan panjang dalam satuan Sistem Referensi Tata Ruang. Jika Anda ingin mendapatkan meter, Anda perlu mengubah fitur Anda ke SRS berbeda yang menggunakan meter sebagai unit. Ini bisa dilakukan sambil jalan, jadi jangan khawatir tentang penulisan set data lain.
SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;
Dalam contoh ini, SRID 26915 adalah UTM Zone 15 N, NAD83.
Sepertinya sejak PostGIS 2.0 (mungkin sebelumnya) Anda juga bisa melakukan ini dengan ST_Length
menyusun kembali geometri ke geografi:
ST_Length(geom::geography)
Misalnya, jarak antara 50 ° N, 12 ° E dan 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
pemberian yang mana
deg | km_1 | km_2
-----------------+------------------+------------------
1.4142135623731 | 131.935962780384 | 131.935962780384
Contoh permintaan SQL: cara menghitung panjang polyline-geometri-untuk-beberapa-tabel-di-postgis
Permintaan SQL (panjang dalam km (/ 1000 -delete untuk meter)):
SELECT
sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads
FROM
"D1_r";