반응형

이번엔 shapefile을 postgresql table로 바꾸는 작업을 해보겠다.

 

전에 쓰던 방법은 gdal을 활용하여 shapefile을 db table로 컨버팅을 한 적이 있다.

 

하지만 용량이 조금이라도 클 경우 예를 들어 100MB 이상에 속성까지 30만 레코드 정도가 있다면

 

상당시간 소요됐던 기억이 있다. gdal options 중에 그나마 빠르게 해주는 옵션이 있지만 그렇게 차이는 많이 나지 않았다.

 

 

shp2pgsql은 레코드를 insert 작업을 통해 테이블에 데이터를 추가하는 경우도 있고 옵션 값 -D를 주면 테이블을 insert하지 않고

 

덤프로 Copy한다고 명시되어있다. 정확히 어떻게 shapefile이 카피되어서 데이터베이스 테이블로 변환되는지 자세히 알고 계신 분은 

 

링크나 설명 댓글로 부탁드립니다.ㅜ

 

shp2pgsql에 대한 옵션 값들은 아래 링크를 참조하면 된다.

 

www.bostongis.com/pgsql2shp_shp2pgsql_quickguide.bqg

 

PostGIS 2.0 pgsql2shp shp2pgsql Command Line Cheatsheet

PostGIS 2.0.0 pgsql2shp shp2pgsql Cheat Sheet shp2pgsql and pgsql2shp are all located in the bin folder of the PostgreSQL install. pgsql2shp dumps a postgis database table, view or sql query to ESRI shape file format. USAGE: pgsql2shp [OPTIONS] database [s

www.bostongis.com

이제 본격적으로 어떻게 사용하면 되는지 자세히 알아보도록 하자.

 

일단 테스트는 원격접속으로 진행했었다.

 

1. 자동 로그인으로 해야할 경우(pgpass.conf 설정)

  -postgis 설정 경로pgpass.conf 파일을 생성한다.

  -pgpass.conf에 다음과 같이 입력한 후 저장한다.

  - localhost:port:database:user:password

    호스트:포트:데이터베이스:유저:패스워드 순으로 입력 후 저장한다.

 

2.설정이 끝나면 cmd 창을 열고 아래와 같이 명령어를 입력한다.

  cmd> shp2pgsql -D -s 4326 -W euckr shp파일 경로 schema.tablename | psql -h 호스트 -U 유저 -p 포트

 

  옵션

  -D dump 옵션

  -s 좌표계

  -W dbf파일에 한글이 있을 경우 인코딩

 

*pgpass.conf 를 설정하지 않을 경우

   - cmd> shp2pgsql -D -s 4326 -W euckr shp파일 경로 schema.tablename | psql -h 호스트 -U 유저 -p 포트

   - 똑같이 입력 후 비밀번호를 입력하면 된다.

 

이렇게 하면 gdal 또는 geotools 소스 코드로도 shapefile을 컨버팅할 수 있지만 

shp2pgsql의 -D 옵션은 데이터가 큰 경우 유용한것 같다.

 

*참조) java geotools to postgis 컨버트

spatiumwdev.tistory.com/entry/Geotools-shapefile-PostGis-데이터로-바꾸기

 

Geotools shapefile PostGis 데이터로 바꾸기

이번 글에서는 geotools를 활용해서 shpaefile을 Postgis로 변환하는 것에 대해 알아볼려고 한다. dbf 파일에 직접 접근해서 데이터를 가져올 수 도 있지만 공간쿼리를가 필요한 경우 아무래도 postgis와

spatiumwdev.tistory.com

 

반응형

+ Recent posts