Lo siguiente me da el área del polígono en grados cuadrados:
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;
Resultado: 16586.2319335938
¿Cómo obtengo el área en metros cuadrados? Intenté lo siguiente:
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;
Pero parece que ST_Transform no funciona. Me sale el siguiente mensaje de error:
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.
La falta de soporte de Proj no debería ser el problema, con SELECT PostGIS_full_version () obtengo
"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;
es la sintaxis correcta Parece que has mezclado algunas comas.
fuente
Ambas consultas definen el SRID para el polígono como 4326, pero con base en los datos, este seguramente no es el caso. SRID 4326 (WGS84) está limitado al rango [-90,90] para latitud y [-180,180] para la longitud.
Si tiene datos de polígonos en 4326, usar ST_GeogFromText puede ser un mejor enfoque. Esto supone que sus datos están en 4326, y las mediciones en las características de la geografía estarán en metros.
Sigue una consulta de trabajo:
Me transformé a 900913 en lugar de 31467 porque ese SRID no cubre el área de datos de mi ejemplo.
fuente