3 votos

Postgis - Relaciones espaciales en metros

Estoy tratando de realizar algunos análisis de relaciones espaciales utilizando funciones de Postgis como st_dwithin y st_dfullywithin . Busqué y encontré que para cualquier SRID, usando el geography da los resultados en metros, lo que funciona bien para st_dwithin . Sin embargo, el st_dfullywithin los argumentos deben ser del tipo geometry por lo que este enfoque no funciona.

Mi SRID base es 4283 y he probado a transformar el SRID de los objetos geométricos en el SRID 3577 que sigue sin funcionar.

Como prueba, he intentado medir la distancia entre dos puntos utilizando diferentes SRID y los tipos de geometría y geografía. Creo que las unidades de 3577 es en metros, pero cuando ejecuto la prueba para obtener la distancia entre dos puntos utilizando SRID 3577 devuelve los resultados en grados, pero cambiando el tipo a geografía devuelve metros.

Creía que al cambiar el SRID por uno con metros se obtendrían metros. Si no es así, ¿cómo se puede trabajar en metros?

EDIT: La consulta para obtener la distancia que da el resultado en grados es,

select st_distance(st_geomfromtext('POINT(150.9319747 -33.8482439)', 3557), st_geomfromtext('POINT(151.9319747 -34.8482439)', 3557))

Si utilizo el mismo SRID, tengo que utilizar la siguiente consulta para obtener el resultado en metros

select st_distance(st_geomfromtext('POINT(150.9319747 -33.8482439)', 3557)::geography, st_geomfromtext('POINT(151.9319747 -34.8482439)', 3557)::geography)

Mi objetivo final es afinar geom que se encuentran en un radio determinado de un punto,

select 
*
from table_1 a
where ST_DWithin(st_transform(a.geom, 3557), st_transform(st_geomfromtext('POINT(150.9319747 -33.8482439)', 4283),3557), 50000);

A pesar de utilizar los diferentes SRID, la relación sigue considerando los grados y no los metros.

3voto

amball Puntos 41

Su consulta:

select st_distance(st_geomfromtext('POINT(150.9319747 -33.8482439)', 3557), st_geomfromtext('POINT(151.9319747 -34.8482439)', 3557))

no está transformando la geometría. Sólo le está diciendo a PostGIS que sus coordenadas están en el SRID 3557.

Si quieres transformar la geometría, necesitas

SELECT ST_Distance(ST_Transform(ST_GeomFromText('POINT(150.9319747 -33.8482439)', 4326),3557), ST_Transform(ST_GeomFromText('POINT(151.9319747 -34.8482439)', 4326), 3557))

Sin embargo, sus puntos están fuera de los límites de la proyección 3557. Pruebe con la 3857 (Web Mercator), o con otra proyección que se adapte mejor a su área de interés.

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