मुझे वर्ग मीटर में WGS84 बहुभुज का क्षेत्रफल कैसे मिलेगा?


10

निम्नलिखित मुझे वर्ग डिग्री में बहुभुज का क्षेत्र देता है:

SELECT ST_Area(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',4326)) As sqm;

परिणाम: 16586.2319335938

मुझे वर्ग मीटर में क्षेत्र कैसे मिलेगा? मैंने निम्नलिखित कोशिश की:

SELECT ST_Area(ST_Transform(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',4326)),31467) As sqm;

लेकिन ऐसा लगता है कि ST_Transform काम नहीं करता है। मुझे निम्न त्रुटि संदेश मिलता है:

ERROR:  function st_transform(geometry) does not exist
LINE 1: SELECT ST_Area(ST_Transform(ST_GeomFromText('POLYGON((871325...
                       ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
 ERROR: function st_transform(geometry) does not exist
SQL Status:42883
Hint:No function matches the given name and argument types. You might need to add explicit type casts.

गुम प्रोज़ समर्थन समस्या नहीं होनी चाहिए, सिलेक्ट PostGIS_full_version () के साथ

"POSTGIS="1.5.3" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.8.0, 6 March 2012" LIBXML="2.8.0" USE_STATS"

जवाबों:


7

आपकी क्वेरी के अंत में गलत जगह पर आपके पास एक बंद परिन है। मैंने यह कोशिश की और NaN रिटर्न मिला,

SELECT ST_AREA(ST_Transform(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',4326),31467)) As sqm;

NaN परिणाम बहुभुज आपके प्रक्षेपण की सीमा के बाहर होने के कारण है।


बस! धन्यवाद! इसके अलावा अनुमान 900913 और 31467 होना चाहिए:SELECT ST_AREA(ST_Transform(ST_GeomFromText('POLYGON((871325.790874952 6105405.3261047,871418.748307692 6105359.72944624,871346.22022442 6105215.141258,871254.85408906 6105261.72007212,871325.790874952 6105405.3261047))',900913),31467)) As sqm;
मार्क

2
ST_Transform(geometry,target_CRS) 

सही वाक्यविन्यास है। लगता है आपने कुछ अल्पविराम मिलाया है।


2

दोनों प्रश्न 4326 के रूप में बहुभुज के लिए SRID को परिभाषित करते हैं, लेकिन डेटा के आधार पर यह निश्चित रूप से ऐसा नहीं है। SRID 4326 (WGS84) अक्षांश के लिए [-90,90] और देशांतर के लिए [-180,180] तक सीमित है।

यदि आपके पास 4326 में बहुभुज डेटा है, तो ST_GeogFromText का उपयोग करना बेहतर दृष्टिकोण हो सकता है। यह मानता है कि आपका डेटा 4326 में है, और भूगोल सुविधाओं पर माप मीटर में होंगे।

एक कामकाजी प्रश्न इस प्रकार है:

SELECT
ST_Area(
ST_Transform(
ST_SetSRID(
ST_GeomFromText(
'POLYGON((-98.4854749658124 29.3495134003054,-97.4374094977531 29.4150174920591,-97.2408972224919 28.4979602075071,-98.354466782305 28.4324561157534,-98.4854749658124 29.3495134003054))'
)
, 4326)
, 900913)
)

मैं 31467 के बजाय 900913 में बदल गया क्योंकि SRID मेरे उदाहरण डेटा के क्षेत्र को कवर नहीं करता है।

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