티스토리 뷰

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. 속성테이블도 열어 잘 불러왔는지 확인해보자.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함