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.

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.


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.


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ê


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.