मीटर में ज्यामिति की लंबाई हो रही है?


13

PostGIS में, ST_length()फ़ंक्शन कुछ इकाइयों में एक लिनस्ट्रिंग की लंबाई लौटाता है, लेकिन मीटर में नहीं।

क्या कोई फ़ंक्शन होता है, ST_Length()लेकिन मीटर में?

जवाबों:


11

St_Length () अपने स्थानिक संदर्भ प्रणाली की इकाइयों में लंबाई लौटाता है। यदि आप मीटर प्राप्त करना चाहते हैं, तो आपको अपनी सुविधा को एक अलग एसआरएस में बदलना होगा जो मीटर को इकाइयों के रूप में उपयोग करता है। यह ऑन-द-फ्लाई किया जा सकता है, इसलिए किसी अन्य डेटा सेट को लिखने के बारे में चिंता न करें।

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;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.