안녕하세요.
이번글에서는 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 |