Berikut ini memberi saya luas poligon dalam derajat persegi:
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;
Hasil: 16586.2319335938
Bagaimana cara mendapatkan area dalam meter persegi? Saya mencoba yang berikut ini:
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;
Tetapi sepertinya ST_Transform tidak berfungsi. Saya mendapatkan pesan kesalahan berikut:
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.
Dukungan Proj yang hilang seharusnya tidak menjadi masalah, dengan SELECT PostGIS_full_version () saya dapatkan
"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"
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;
adalah sintaks yang benar. Anda tampaknya telah mencampur beberapa koma.
sumber
Kedua pertanyaan mendefinisikan SRID untuk poligon sebagai 4326, tetapi berdasarkan data ini jelas bukan itu masalahnya. SRID 4326 (WGS84) terbatas pada kisaran [-90,90] untuk garis lintang dan [-180,180] untuk garis bujur.
Jika Anda memiliki data poligon pada 4326, maka menggunakan ST_GeogFromText mungkin merupakan pendekatan yang lebih baik. Ini mengasumsikan bahwa data Anda dalam 4326, dan pengukuran pada fitur geografi akan dalam meter.
Kueri yang berfungsi mengikuti:
Saya bertransformasi ke 900913 alih-alih 31467 karena SRID itu tidak mencakup area data contoh saya.
sumber