Obter valores de Lat Lat a partir de um tipo de dados GEOGRAPHY no PostGIS

16

Depois de armazenar os valores long lat como um tipo de dados GEOGRAPHY, como recupero os valores lat lat individuais?

Tentativa falhada:

SELECT id, geog, ST_X(geog), ST_Y(geog) FROM locations;

Erro:

No function matches the given name and argument types. You might need to add explicit type casts.
Nyxynyx
fonte
1
Para tipo de dados geográficos, use a função válida, ex. ST_MaxX () e ST_MaxY () .
Peter Krauss

Respostas:

20

A função ST_X (ponto) suporta apenas a geometria (por enquanto).

Uma solução alternativa é converter o geog em geom usando ::geometry.

Registre que sua consulta deve ser assim:

SELECT id, geog, ST_X(geog::geometry), ST_Y(geog::geometry) FROM locations; 

E como é geog, o SRID seria 4326 .

Também aqui está uma boa fonte para o tipo de geog.

nickves
fonte
Obrigado, sua solução funciona bem (ao consultar usando o pgAdmin3). No entanto, quando eu estou consultando a partir de PHP (nginx + php5-fpm), eu recebo o erro: Undefined object: 7 ERROR: type "geometry" does not exist. Alguma ideia? stackoverflow.com/questions/15780931/…
Nyxynyx 03/04
Bom, funciona bem para mim.
Felipe
1

Não precisa de elenco

Tente usar esta consulta.

SELECT ST_XMax(geog), ST_YMax(geog), ST_AsEWKT(geog)
FROM locations LIMIT 10;

funciona para mim.

Peter Krauss
fonte
1
Qual versão do PostGIS e PostgreSQL você está usando? Com 9.5 e 2.2, executar a consulta SELECT ST_XMax(ST_GeographyFromText('SRID=4326;POINT(-73.968504 40.779741)'));me fornece ERROR: function st_xmax(geography) does not exist.
r0estir0bbe
0

tente usar esta consulta.

SELECT X(the_geom), Y(the_geom), ST_AsEWKT(the_geom)
      FROM locations LIMIT 10;

espero que ajude você

Aragão
fonte
1
As funções X()e Y()parecem não existir. onde voce comprou esses?
Zoltán
@ Zoltán Penso X()e Y()são válidos em uma revisão mais antiga do PostGIS - talvez 8.x ?. Atualizada, essa consulta usaria ST_X()e, em ST_Y()vez disso.
elrobis
Mesmo PostGIS 2.2 não têm ST_X ( geografia ), consulte postgis.net/docs/manual-2.2/ST_X.html
Peter Krauss