본문 바로가기
공간정보/한줄 팁(Tip)

ESRI Shape file(*.shp)을 postgresql로 밀어넣기

by 요긴소프트 2024. 11. 1.
728x90
반응형

shp 파일을 postgresql(postGIS)로 로딩하는 방법은 여러가지가 있겠지만, 이번 글에서는 GIS에서 사용하는 shape 파일을 곧바로 postgresql에 임포트 하는 방법에 대해 설명하겠습니다.

다양한 지리공간 데이터 형식 간의 변환을 돕는 GDAL 도구 중 하나인 ogr2ogr을 이용한 방법입니다. 아래 명령어를 이용하면 shp 파일 뿐만 아니라, ogr2ogr에서 지원하는 파일은 다 넣을 수 있을 거라고 생각합니다.

ogr2ogr.exe -progress --config PG_USE_COPY YES --config SHAPE_ENCODING UTF-8 -f PostgreSQL "PG:host=localhost port=5432 dbname=postgres password=1234 active_schema=public user=postgres" -lco DIM=2 C:/Users/yoginsoft/Desktop/bnd_sido.shp bnd_sido -overwrite -lco GEOMETRY_NAME=geom -lco FID=id -nln public.bnd_sido -nlt PROMOTE_TO_MULTI

 

각 옵션에 대한 설명은 다음과 같습니다.

 

  • -progress: 변환 진행 상황을 출력합니다.
  • --config PG_USE_COPY YES: PostgreSQL로 데이터를 복사할 때 더 빠른 COPY 명령을 사용합니다.
  • --config SHAPE_ENCODING UTF-8: Shapefile의 문자 인코딩을 UTF-8로 설정합니다.
  • -f PostgreSQL: 출력 형식을 PostgreSQL로 지정합니다.
  • "PG:host=localhost port=5432 dbname=postgres password=1234 active_schema=public user=postgres": PostgreSQL 데이터베이스 연결 문자열입니다.
    • host=localhost: 데이터베이스 호스트는 로컬입니다.
    • port=5432: PostgreSQL 기본 포트입니다.
    • dbname=postgres: 데이터베이스 이름입니다.
    • password=1234: 데이터베이스 비밀번호입니다.
    • active_schema=public: 사용할 스키마입니다.
    • user=postgres: 데이터베이스 사용자 이름입니다.
  • -lco DIM=2: 2차원 좌표를 사용하도록 설정합니다.
  • C:/Users/yoginsoft/bnd_sido.shp: 입력 Shapefile 경로입니다.
  • bnd_sido: 레이어 이름입니다.
  • -overwrite: 기존 데이터를 덮어씁니다.
  • -lco GEOMETRY_NAME=geom: 지오메트리 컬럼 이름을 geom으로 설정합니다.
  • -lco FID=id: 피처 ID 컬럼을 id로 설정합니다.
  • -nln public.bnd_sido: 새 레이어 이름을 public.bnd_sido로 설정합니다.
  • -nlt PROMOTE_TO_MULTI: 지오메트리를 MULTI 타입으로 변환합니다.

명령어를 실행하면 Shapefile의 데이터를 PostgreSQL에 가져와서 public.bnd_sido 테이블로 저장합니다.

 

728x90
반응형