티스토리 뷰

 

https://wldnjd2.tistory.com/35

 

shp2pgsql로 postgreSQL에 shp파일 올리기 (윈도우)

이전에는 PostGIS Shapefile Import/Export Manager를 이용해서 DB에 shp파일을 올렸었다. 이번에는 shp2pgsql을 이용해서 postgreSQL에 직접 shp파일을 db에 올려보겠다. shp2psql이란 shp2psql은 데이터베이스에..

wldnjd2.tistory.com

위의 게시글에서는 

postgresql을 리눅스에 설치하고 윈도우에서 shp2pgsql을 실행했는데

굳이 그럴 필요가 없었다.

 

postgresql12은 리눅스에 설치되어있고,

shape파일을 리눅스로 옮기고 디비에 넣고 디비버로 데이터 확인하면 된다!


 

 

CentOS에서 shp2pgsql 이용해서 shp파일 db에 넣기

 

*shp2psql이란
   shp2psql은 데이터베이스에 ESRI shapefile을 import 할 수 있는 커맨드라인 도구이다.
  리눅스에서 다음 명령어를 써서 새 PostGIS테이블을 import 할 수 있다.
*shapefile (.shp)
  셰이프파일 형식은 지리 정보 시스템 소프트웨어를 위한 지리 공간 벡터 데이터 형식이다.

 

 

0. 사전준비
- shp2pgsql을 사용하기 전에 PostGIS가 설치
# create extension postgis;

- postgresql.conf 파일 수정
# cd /var/lib/pgsql/12/data
# vi postgresql.conf     (해당 파일 아래와 같이 수정: 주석해제, *수정)

listen_addresses = '*'                    # what IP address(es) to listen on;
                                                      # comma-separated list of addresses;
                                                      # defaults to 'localhost'; use '*' for all
                                                      # (change requires restart)
port = 5432                                    # (change requires restart)

 


1. shp2pgsql 실행
아래의 폴더 안에 shp2pgsql이라는 파일을 실행한다.
# cd /usr/pgsql-12/bin
# ./shp2pgsql



2. DB에 파일 넣기
- 필자는 test용 .shp파일을 아래의 경로에 넣어놨다.
# cd /home/geoserver_example_data

- PostgreSQL에 데이터 넣기
  s 좌표계값
  W 인코딩설정값
  h 원격 주소 설정
  U 계정지정
  d database 지정
ex)
# ./shp2pgsql -s 5186 -W cp949 /home/geoserver_example_data/admin_emd.shp | psql -h 192.168.224.131 -U postgres -d postgres

- 실행결과

[root@localhost bin]# ./shp2pgsql -s 5186 -W cp949 /home/geoserver_example_data/policestation.shp | psql -h 192.168.224.131 -U postgres -d postgres
postgres 사용자의 암호: Shapefile type: Point
Postgis type: POINT[2]

SET
SET
BEGIN
CREATE TABLE
ALTER TABLE
                   addgeometrycolumn                    
--------------------------------------------------------
 public.policestation.geom SRID:5186 TYPE:POINT DIMS:2 
(1개 행)

INSERT 0 1
INSERT 0 1
INSERT 0 1
COMMIT
ANALYZE




3. 데이터 확인
3-1. DBeaver를 통해 확인

 

 


3-2. CentOS 터미널에서 아래의 쿼리로 데이터 조회
ex)
# select * from pg_tables where TABLENAME='admin_sid';

 

 

 

 

댓글