티스토리 뷰
shp2pgsql 이용해서 shp파일을 postgresql db에 얹혀보기
* 참조: http://postgis.refractions.net/documentation/manual-2.0/using_postgis_dbmanagement.html#id2853463
1. 사용환경
- OS: Ubuntu 15.10 wily
- DB: PostgreSQL 9.5.1
- tool: shp2pgsql
* shp2pgsql은 postgis패키지에 포함, sudo apt-get install postgis 명령으로 해당 패키지 설치
- shp 샘플자료: 국가공간정보 통합 포털에서 제공하는 법정구역정보의 읍면동 자료
* 링크: http://openapi.nsdi.go.kr/nsdi/eios/ServiceDetail.do?svcSe=F&svcId=F001+&gubun=F&sUpperSvcId=&infoTy=&svcNm=
법정동 구역정보로 shp파일 형태의 좌표계는 중부원점(2016.6.9일 기준,ESPG:2097)
2. 사전 설정
테스트DB생성 후 postgis 기능 활성화하기
zipeya@postgresql:~$ createdb -U postgres testdb
zipeya@postgresql:~$ psql -U postgres -d testdb -c 'CREATE EXTENSION postgis'
해당 db에 잘 적용되었는 지 확인
zipeya@postgresql:~$ psql -U postgres -d testdb -c 'SELECT postgis_version()'
Password for user postgres:
postgis_version
---------------------------------------
2.2 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)
zipeya@postgresql:~$
3. 자료 얹히기
아래와 같은 형식으로 shp2pgsql툴을 통해 db에 넣는다.
shp2pgsql -I -s . | psql -U postgres -d
* I옵션은 인덱싱 생성, s옵션은 좌표계 epsg 숫자, shp파일, 테이블 명 | psql -U db유저명 -d db이름
-옵션에 대한 자세한 내용은 아래 링크를 확인한다.
http://postgis.refractions.net/documentation/manual-2.0/using_postgis_dbmanagement.html#id2853463
국가공간정보 통합포털에서 제공하는 법정구역정보의 읍면동 자료를 샘플로 넣어본다.
zipeya@postgresql:~$ shp2pgsql -I -s 2097 /home/zipeya/AL_00_D001_20160507\(EMD\).shp tablename | psql -U postgres -d testdb
.....
INSERT 0 1
INSERT 0 1
CREATE INDEX
COMMIT
ANALYZE
zipeya@postgresql:~$
다른 방법으로 sql 명령 형식으로 뽑아내서 psql에서 얹히는 방법도 있다.
# shp2pgsql -I -s > SHAPEFILE.sql
# psql -U postgres -d -f SHAPEFILE.sql
4. db에 얹힌 레이어 확인
- 쉘에서 아래와 같은 명령으로 확인을 하거나,
zipeya@postgresql:~$ psql -U postgres -d testdb -c "\d"
postgres 사용자의 암호:
릴레이션(relation) 목록
스키마 | 이름 | 형태 | 소유주
--------+-------------------+----------+----------
public | cities | 테이블 | postgres
public | emd | 테이블 | postgres
public | emd_gid_seq | 시퀀스 | postgres
public | geography_columns | 뷰(view) | postgres
public | geometry_columns | 뷰(view) | postgres
public | raster_columns | 뷰(view) | postgres
public | raster_overviews | 뷰(view) | postgres
public | spatial_ref_sys | 테이블 | postgres
public | weather | 테이블 | postgres
(9개 행)
zipeya@postgresql:~$
- qgis 등 shp파일을 불러올 수 있는 툴에서 확인
1. QGIS에서 Layer-Add Layer-Add PostGIS Layers
2. New버튼을 누른 후 DB정보를 입력 후 OK
3. connect누르면 레이어 목록이 뜨고 Add버튼을 눌러 레이어를 추가
4. 속성테이블도 열어 잘 불러왔는지 확인해보자.
'DBMS > PostgreSQL' 카테고리의 다른 글
PostgreSQL 관련 팁 모음 (0) | 2016.08.16 |
---|---|
MySQL과 PostgreSQL 변환할 때 참고할 만한 것 등 차이점 (0) | 2016.08.16 |
postgresql DB생성 및 접속 시 Peer authentication에러 발생 시 해야할 것 (1) | 2016.06.09 |
ubuntu에 PostgreSQL 설치하기 (0) | 2016.02.24 |