ฉันจะทำให้พื้นที่ของรูปหลายเหลี่ยม 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.

การสนับสนุนที่ขาดหายไปของ Proj ไม่น่าจะเป็นปัญหาด้วย SELECT 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

แบบสอบถามทั้งสองกำหนด SRID สำหรับรูปหลายเหลี่ยมเป็น 4326 แต่ขึ้นอยู่กับข้อมูลที่ไม่แน่นอนในกรณีนี้ 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)
)

ฉันแปลงเป็น 900913 แทน 31467 เพราะ SRID นั้นไม่ครอบคลุมพื้นที่ตัวอย่างของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.