본문 바로가기
GIS

PostgreSQL Geometry 추출 및 적재

by 이노닝 2023. 7. 5.

안녕하세요.

이번글에서는 SHP 파일을 PostgreSQL에 적재하는 방법에 대해

간략하게 작성하려고 합니다.

공간데이터는 다양한 확장자로 존재하게 되는데요.

이 글에서는 벡터 데이터를 기반하여 작성하도록 하겠습니다.

1. Shape File

감히 말씀드리자면 공간데이터 중 가장 많이 쓰는 포맷이 아닐까 싶습니다.

파일 구성또한 존재하는데요.

크게 4가지가 존재합니다.

shp, prj, shx, dbf

Shp, --Geometry 공간정보를 담고 있는 파일
Shx, --Geometry 인덱스를 담고 있는 파일
Dbf, --공간 정보의 실제 속성 정보를 담고 있는 파일
Prj  --Geometry 의 좌표계를 가지고 있는 파일

통상적으로 4가지의 파일이 모두 존재하여야 정상적인 파일로 볼 수 있고,

데이터를 교환 하는 과정에 있어서 누락된 파일이 존재 할 경우,

그 데이터를 활용하는데 있어서 문제가 발생 될 가능성이 매우매우매우 높습니다.

해당 데이터의 대한 이해가 충분하다면(좌표계 및 데이터컬럼 구조) 문제는 해결 할 수 있습니다.

 

이 외에도 cpg(인코딩),xml, qpj, sbn, sbx 등 다양한 확장자가 존재하게 되는데,

무시하셔도 되며 응용프로그램을 사용하다가 생성된 파일이라고 보시면 됩니다.

 

2. GPKG

SHP 파일은 데이터 용량이 2GB가 넘게 되면 더 이상 담을 수 없습니다.

그러한 문제점으로 인하여 GeoPackage 라는 확장자가 생성되었는데,

그것이 GPKG 입니다.

벡터와 레스터 데이터를 모두 지원합니다.

GPKG 데이터의 경우 shp 파일 적재 방식이 조금 다르게 되는데,

이 내용은 다음에 추가적으로 작성하도록 하겠습니다.

먼저 ogr2ogr 로 사용한다는것만 말씀 드리겠습니다.

다른 내용들도 작성하다보니 조금 늦어질 수 있습니다..

 

 

SHP Import (SHP 파일적재)

작업 이전 주의사항

1. PostgreSQL DB 내 Extension(PostGIS) 가 설치 되어 있어야 합니다.
2. 작업하려는 Client에 PostGIS가 설치 되어 있어야 합니다.

실제로 작업을 해보겠습니다.

shp2pgsql <option> <shapefile> <table>

shp2pgsql -s 5179 -D -W UTF-8 D:\Noni\Building_20220629.shp noni.building_20220629 | psql

간단하게 한줄로 끝나네요.

눈치 채셨겠지만 shp to( --> ) pgsql

shp 파일을 DB에 적재하겠다 라는 대화형 함수네요.

옵션에 대해 간략하게 추가로 설명 드리겠습니다.

shp2pgsql Options
-s  : 좌표체계 EPSG 값
-D  : 데이터 포맷을 의미( 기본값은 Insert 입니다.)
-W  : 사용하려는 인코딩
-r  : Raw 모드이며, GID 데이터를 삭제하지 않고 적재함.

크게 이정도만 설명 드려도 될 것 같네요.

이 외에 host, username, password, database, port 환경설정은

앞 글에서 설정 방법을 작성 하였으니 참고 하시면 될 것 같습니다.

 

 

SHP Export (SHP 파일 추출)

실무자 답게 바로 작업 하겠습니다.

 

pgsql2shp <option> <database> <squery>

Example)
pgsql2shp -r -f C:\noni\export\20220629_build.shp noni "SELECT * FROM building_DATA "

이번에도 역시 한줄로 끝나네요.

쉽죠?

위와 같이 2 양 옆 shp이랑 pgsql 순서가 바뀌었네요.

DB에 데이터를 shp 파일로 만들겠다. 라는 대화형 함수 입니다.

옵션 간략하게 설명 드리겠습니다.

-r  : Raw 모드이며, GID 데이터를 삭제하지 않고 추출함.
-f  : 파일 명

이 두가지 만 알아도 데이터 가공에는 충분해 보입니다.

그럼 이만 공간데이터 DB에 적재하는 방법에 대해 마치도록 하겠습니다.

'GIS' 카테고리의 다른 글

PostgreSQL Geometry 검증하기  (0) 2023.07.09
한국 좌표 목록 개념  (0) 2023.07.03