PostGIS में, ST_length()
फ़ंक्शन कुछ इकाइयों में एक लिनस्ट्रिंग की लंबाई लौटाता है, लेकिन मीटर में नहीं।
क्या कोई फ़ंक्शन होता है, ST_Length()
लेकिन मीटर में?
PostGIS में, ST_length()
फ़ंक्शन कुछ इकाइयों में एक लिनस्ट्रिंग की लंबाई लौटाता है, लेकिन मीटर में नहीं।
क्या कोई फ़ंक्शन होता है, ST_Length()
लेकिन मीटर में?
जवाबों:
St_Length () अपने स्थानिक संदर्भ प्रणाली की इकाइयों में लंबाई लौटाता है। यदि आप मीटर प्राप्त करना चाहते हैं, तो आपको अपनी सुविधा को एक अलग एसआरएस में बदलना होगा जो मीटर को इकाइयों के रूप में उपयोग करता है। यह ऑन-द-फ्लाई किया जा सकता है, इसलिए किसी अन्य डेटा सेट को लिखने के बारे में चिंता न करें।
SELECT ST_AsText(ST_Transform(the_geom,26915)) from my_table;
इस उदाहरण में, SRID 26915 UTM जोन 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 अनुरोध के उदाहरण: कैसे-की-गणना-की-लंबाई-पॉलीलाइन-ज्यामिति-के लिए-कई-टेबल-इन-पोस्टगिस
SQL अनुरोध (किमी में लंबाई (/ मीटर के लिए 1000-तक)):
SELECT
sum(ST_Length_Spheroid(the_geom,'SPHEROID["WGS 84",6378137,298.257223563]'))/1000 AS km_roads
FROM
"D1_r";