2012-12-03 3 views
0

질의 SELECT geom FROM myLayer; 테이블에서 2km 길이의 문자열을 얻습니다. 나중에 테이블을 처리하기 위해 라디안 값으로 변환 할 수 있었으면합니다. 이것은 내가 얻은 것의 예입니다 :도형 데이터 문자열을도 단위로 변환하는 방법은 무엇입니까?

"01060000000100000001030000000100000005000000000070AC9FB81841000053BF535551410000303295B8184100001A6053555141000060FE8EB818410000670654555141000090399AB8184100004C6854555141000070AC9FB81841000053BF53555141" 

답변

2

PostGIS가 내부적으로 어떻게 지오메트리를 저장하는지 보여줍니다. 당신은 SELECT ST_ASEWkt(geom) FROM myLayer;

라디안을 얻으려면, 예를 들어,

그래서 (http://www.postgis.org/docs/ST_AsEWKT.html 참조) 이는 ST_AsText 또는 ST_ASEWKT 같은 것을 사용할 필요가, 내가 아마 할 거라고 어떤 진수도 데이텀 프로젝트는 (이다 즉 WGS84), x 좌표와 y 좌표를 따로 떼어 내고 변환합니다 (여기에 점 기하학이라고 가정). 예 : SELECT ST_X(ST_Transform(geom, 4326))*3.14/180, ST_Y(ST_Transform(geom,4326))*3.15/180 FROM myLayer;

희망이 있습니다.

2

좌표가 투영되었으며 지리적 (비 계획적) 좌표를 제공하려고합니다. 나는 당신이도 아닌 라디안을 할 거라 확신, 그래서 공통의 목표 SRID는 데이터 재 투영하는 4326 사용 ST_Transform입니다 : SRID가 소스 기하학 컬럼에 대해 설정해야

SELECT ST_Transform(geom, 4326) AS geom_in_degrees 
FROM your_table; 

참고. 그렇지 않다면 문제가 있습니다. 더 이론적 노트에


는, (내가 이것을 본 적이 없어!) 라디안의 좌표를 변환하는, 당신은 (0,0)에서 원점에서 좌표를 확장 할 수 π 배/180. 이는 아핀 변환 함수를 사용하거나 도우미 ST_Scale을 사용하여 수행 할 수 있습니다.

SELECT ST_Scale(
     ST_SetSRID(ST_Transform(geom, 4326), 0), 
     pi()/180.0, pi()/180.0) AS geom_in_radians 
FROM your_table;; 
관련 문제