- "POSTGIS="2.0.1 r9979" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.8""
▣ View 레이어 생성하기
⊙ PostGIS 2.0에서 기존 레이어로 뷰를 생성했을 때, geometry_columns에 srid 및 type이 제대로 표시되지 않을 경우에 해결책입니다.
⊙ 우선 View가 이미 있는 경우 뷰를 삭제합니다.
DROP VIEW view_name;
⊙ 기존 building 레이어에서 도형의 면적이 300을 넘는 building을 building_view 뷰로 생성하는 예입니다.
- 다음과 같이 geometry 컬럼에 정확한 Geometry 타입 및 SRID를 정의해 주면 됩니다.
CREATE VIEW building_view AS SELECT gid AS gid, the_geom::geometry(MultiPolygon, 5174) AS the_geom FROM building WHERE ST_Area(the_geom) > 300;
⊙ 기존 building 레이어를 WGS84 경위도 좌표계로 변환한 포인트 building_point_4326 뷰로 생성
- 다음은 building 폴리곤의 중심점을 추출하고 좌표계를 변환하는 예를 포함합니다.
CREATE VIEW building_point_4326 AS SELECT building.gid AS gid, ST_Transform(ST_Centroid(building.the_geom), 4326)::geometry(Point, 4326) AS the_geom FROM building;
▣ 기존 레이어의 SRID 정의
PostGIS 공간테이블(레이어)의 좌표체계를 정의하는 방법은 UpdateGeometrySRID 함수를 이용하면 됩니다. 2.0 버전부터는 DDL을 이용하여 기존 레이어의 좌표체계 정의 및 변환까지 가능하게 되었습니다.
⊙ UpdateGeometrySRID 함수를 이용하는 방법
- 기존 Unknown 좌표계를 WGS84 경위도 좌표계로 정의
SELECT UpdateGeometrySRID('roads', 'geom', 4326);
⊙ DDL을 이용하는 방법 - 2.0 버전부터 적용
- 기존 Unknown 좌표계를 WGS84 경위도 좌표계로 정의
ALTER TABLE roads ALTER COLUMN geom TYPE geometry(MULTILINESTRING, 4326) USING ST_SetSRID(geom,4326);
▣ 테이블 생성 없이 기존 레이어의 Geometry 좌표 변환후 업데이트
⊙ DDL을 이용하는 방법 - 2.0 버전부터 적용
- 기존 WGS84 경위도 좌표계의 레이어를 구글 좌표계(일반적으로 900913을 많이 사용하지만 EPSG 공식 코드는 3857임)로 변환
ALTER TABLE roads ALTER COLUMN geom TYPE geometry(MULTILINESTRING, 3857) USING ST_Transform(ST_SetSRID(geom, 4326), 3857) ;
▣ 참고
- http://postgis.net/docs/using_postgis_dbmanagement.html
- http://postgis.org/docs/UpdateGeometrySRID.html
댓글 없음:
댓글 쓰기