Ce qui suit me donne l'aire du polygone en degrés carrés:
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;
Résultat: 16586.2319335938
Comment obtenir la surface en mètres carrés? J'ai essayé ce qui suit:
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;
Mais il semble que ST_Transform ne fonctionne pas. Je reçois le message d'erreur suivant:
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.
Le support manquant de Proj ne devrait pas être le problème, avec SELECT PostGIS_full_version () j'obtiens
"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;
est la syntaxe correcte. Vous semblez avoir mélangé des virgules.
la source
Les deux requêtes définissent le SRID pour le polygone comme 4326, mais sur la base des données, ce n'est sûrement pas le cas. Le SRID 4326 (WGS84) est limité à la plage [-90,90] pour la latitude et [-180,180] pour la longitude.
Si vous avez des données de polygone dans 4326, l'utilisation de ST_GeogFromText peut être une meilleure approche. Cela suppose que vos données sont en 4326 et que les mesures sur les entités géographiques seront en mètres.
Une requête de travail suit:
Je me suis transformé en 900913 au lieu de 31467 car ce SRID ne couvre pas la zone de mes données d'exemple.
la source