10 votos

¿Cómo puedo obtener el área de un polígono WGS84 en metros cuadrados?

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 puedo obtener la superficie en metros cuadrados? He intentado 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 aparece 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"

13voto

Martin Duys Puntos 121

Ambas consultas definen el SRID del polígono como 4326, pero basándose en los datos seguramente no es así. El SRID 4326 (WGS84) está limitado al rango [-90,90] para la latitud y [-180,180] para la longitud.

Si tiene datos de polígonos en 4326, entonces usando el ST_GeogFromText puede ser un mejor enfoque. Esto supone que sus datos están en 4326, y que las medidas de los elementos geográficos estarán en metros.

A continuación, una consulta de trabajo:

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)
)

Transformé a 900913 en lugar de 31467 porque ese SRID no cubre el área de mis datos de ejemplo.

7voto

neouser99 Puntos 1203

Tienes un paréntesis de cierre en el lugar equivocado hacia el final de tu consulta. Lo he intentado y he obtenido un retorno 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;

El resultado NaN se debe a que el polígono está fuera de los límites de su proyección.

7voto

tobes Puntos 19
ST_Transform(geometry,target_CRS) 

es la sintaxis correcta. Parece que has confundido algunas comas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X