Un esferoide es la representación de una superficie curva. Un sistema de coordenadas "lat/lon" o geográficas también es una representación de una superficie curva. Cuando se utilizan estos sistemas de coordenadas, las medidas entre puntos se representan en grados a lo largo de la curva del esferoide. Para convertir esto en metros, es necesario utilizar el esferoide para calcular la longitud exacta utilizando una línea curva, en lugar de la línea recta más corta que conectaría los puntos en una superficie plana.
Un sistema de coordenadas proyectadas es un plano. Las líneas entre puntos son siempre rectas. Así que los cálculos realizados en sistemas de coordenadas proyectadas casi siempre utilizan metros.
- Si no sabe qué sistema de coordenadas utiliza su geometría, utilice
select st_srid(geom)
para encontrarlo.
- Si desea una explicación detallada del srid devuelto por st_srid, utilice
select * from spatial_ref_sys where srid = 4326
pero sustituye 4326 por tu srid
- Si el srid es 0, significa que nunca se configuró. Tendrá que averiguar cuál debe ser el srid y establecerlo utilizando
alter table your_table alter column geom type geometry(linestring,4326) using st_setsrid(geom,4326)
Según su último comentario, su geometría no utiliza la proyección WGS84, por lo que está utilizando el esferoide incorrecto.
Si su geometría no utiliza un sistema de coordenadas lat/lon, debe utilizar un sistema de coordenadas proyectadas. Si es así, puede utilizar simplemente select st_length(geom)
para obtener la longitud en metros.
Si su geometría utiliza, de hecho, un sistema de coordenadas lat/lon, utilice esto en su lugar:
select st_length(geometry::geography)
Esto utilizará el esferoide por defecto, y devuelve la longitud en metros.