8 votos

Extraer lat/long de la columna nativa PostgeSQL de tipo punto

En mi tabla tengo una columna location que es un point . Probé esto:

SELECT ST_X(location), ST_Y(location) FROM locations;

Pero sigo recibiendo el mensaje de error:

ERROR: function st_x(point) does not exist

13voto

Subimage Puntos 1492

Que necesitas usar:

SELECT ST_X(geom), ST_Y(geom) FROM locations;

Supongo que las localizaciones son una tabla de puntos con la geometría denominada "geom".

Espero que esto ayude,

9voto

jlehenbauer Puntos 7749

Ninguno de ellos habla de cómo extraer lat/long con el tipo de punto nativo. Está claro que no se puede utilizar ST_X() y ST_Y como puedes hacer con una Geometría PostGIS; así que aquí con el punto nativo simplemente usa la sintaxis array-deference [0] y [1] . Por ejemplo, si tienes un tipo nativo y quieres pasar a tipo PostGIS puedes hágalo así (de mi respuesta en dba.se).

SELECT ST_MakePoint(p[0],p[1])
FROM ( VALUES (point(-71.1043443253471,42.3150676015829)) ) AS t(p);

6voto

Andrew Davey Puntos 2322

Parece que su columna location tipo es point ( Referencia PostgreSQL ). Este es un tipo nativo de PostgreSQL, no un tipo de datos de Postgis.

Tienes que cambiar location tipo de datos de columna a geometry o añada una nueva columna geométrica con la función Postgis AddGeometryColumn .

5voto

connersz Puntos 140

Puedes tratar el tipo de punto como un array para acceder a los componentes x e y de esta forma:

SELECT location[0], location[1] FROM locations;

0voto

Laurent Puntos 18

He aquí la respuesta:

SELECT ST_X(location::geometry), ST_Y(location::geometry) FROM locations;

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