PostGIS의 GEOGRAPHY 데이터 유형에서 Lon Lat 값 가져 오기


16

위도 값을 GEOGRAPHY 데이터 유형으로 저장 한 후 개별 위도 값을 어떻게 검색합니까?

시도 실패 :

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

오류:

No function matches the given name and argument types. You might need to add explicit type casts.

1
대한 지리 데이터 형식을 사용 유효한 기능, 예. ST_MaxX ()ST_MaxY () .
Peter Krauss

답변:


20

ST_X (포인트) 기능은 (지금과 같이) 형상을 지원합니다.

한 가지 해결 방법은을 사용하여 geog을 geom 으로 캐스팅 하는 것 ::geometry입니다.

쿼리가 다음과 같아야합니다.

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

그리고 그것은 지오그 (geog)이기 때문에 SRID는 4326 일 것 입니다.

또한 여기 geog 유형에 대한 좋은 소스.


pgAdmin3을 사용하여 쿼리 할 때 솔루션이 잘 작동합니다. 그러나 PHP (nginx + php5-fpm)에서 쿼리 할 때 오류가 발생 Undefined object: 7 ERROR: type "geometry" does not exist합니다. 어떤 아이디어? stackoverflow.com/questions/15780931/…
Nyxynyx

좋아, 그것은 나를 위해 잘 작동합니다.
Felipe

1

캐스트 불필요

이 쿼리를 사용해보십시오.

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

그것은 나를 위해 작동합니다.


1
어떤 PostGIS & PostgreSQL 버전을 사용하고 있습니까? 9.5와 2.2에서 쿼리 SELECT ST_XMax(ST_GeographyFromText('SRID=4326;POINT(-73.968504 40.779741)'));를 실행 하면 나에게 ERROR: function st_xmax(geography) does not exist.
r0estir0bbe

0

이 쿼리를 사용해보십시오.

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

나는 그것이 당신을 돕기를 바랍니다


1
X()Y()기능이 존재하지 않는 것. 어디서 구했습니까?
Zoltán

졸탄 내가 생각하는 @ X()Y()PostGIS와 이전 버전에서 유효 - 아마도 8.x의를? 업데이트, 그 쿼리를 사용합니다 ST_X()ST_Y()대신.
elrobis

PostGIS 2.2에도 ST_X ( geography ) 가 없습니다. postgis.net/docs/manual-2.2/ST_X.html
Peter Krauss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.