PostGIS'de ST_length()
işlev, bazı birimlerdeki linestring uzunluğunu döndürür, ancak metre cinsinden döndürmez.
ST_Length()
Metre cinsinden ama gibi bir fonksiyon var mı ?
PostGIS'de ST_length()
işlev, bazı birimlerdeki linestring uzunluğunu döndürür, ancak metre cinsinden döndürmez.
ST_Length()
Metre cinsinden ama gibi bir fonksiyon var mı ?
Yanıtlar:
St_Length (), Mekansal Referans Sisteminin birimlerindeki uzunluğu döndürür. Metre almak istiyorsanız, özelliğinizi metre olarak birim olarak kullanan farklı bir SRS'ye dönüştürmeniz gerekir. Bu işlem anında yapılabilir, bu yüzden başka bir veri kümesi yazmak konusunda endişelenmeyin.
SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;
Bu örnekte, SRID 26915, UTM Bölge 15 N, NAD83'tür.
PostGIS 2.0'dan (belki de daha önce) beri, bunu ST_Length
geometriyi coğrafyaya yeniden biçimlendirerek de yapabilirsiniz :
ST_Length(geom::geography)
Örneğin, 50 ° N, 12 ° E ve 51 ° N, 13 ° E arasındaki mesafe:
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
hangi verir
deg | km_1 | km_2
-----------------+------------------+------------------
1.4142135623731 | 131.935962780384 | 131.935962780384
SQL isteğine örnekler: postgis içinde birkaç tablo için çoklu çizgi geometrisinin uzunluğunun nasıl hesaplanacağı
SQL isteği (km cinsinden uzunluk (/ 1000 -metreler için silin)):
SELECT
sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads
FROM
"D1_r";