공부/postgresql

QGIS를 이용한 공간데이터 구축

농사꾼개발자 2022. 7. 10. 18:13

QGIS를 이용하여 공간데이터를 DB로 구축해보자

 

1. QGIS 다운로드

QGIS는 데이터 뷰, 편집, 분석을 제공하는 크로스 플랫폼 자유-오픈 소스 데스크톱 지리 정보 체계 응용 프로그램

LTR 버전을 다운로드 한다

QGIS 프로젝트에 오신 것을 환영합니다!

 

QGIS 프로젝트에 오신 것을 환영합니다!

여러분의 GIS 작업에 QGIS를 사용해 보세요.

qgis.org

QGIS LTR 버전을 다운로드
안정화 버전 다운로드

2. QGIS 설치

다운로드 받은 설치 파일을 실행하여 QGIS를 설치한다

QGIS 설치
기본 설치 경로는 C:\Program Files\QGIS 3.22.8\
설치 진행중

QGIS 버전이 'Bialowieza'로 나와 있어 검색해 보니 폴란드와 벨라루스 구경에 있는 숲 이름이라고 한다. 유네스코 시계유산으로 지정되어 있으며 유럽에 남은 마지막 원시림 이라고 함

 

3. QGIS 실행

바탕화면이나 시작메뉴에서 QGIS를 선택하여 프로그램을 실행하자

QGIS 실행화면

DB에 입력할 공간데이터 SHP파일을 레이어로 불러온다

테스트에 사용할 shp 파일은 국가공간정보포털(openapi.nsdi.go.kr)에서 제공하는 법정동 경계 파일을 사용함

http://www.nsdi.go.kr/lxportal/?menuno=2679 

 

국가공간정보포털

국가는 다양한 방법으로 공간정보 서비스를 제공하기 위해 노력해왔으나, 산재된 서비스 체계로 인해 공간정보 활용에 어려움이 있었습니다. 그래서 국가·공공·민간에서 생산한 공간정보를

www.nsdi.go.kr

법정동 경계 파일을 다운로드 받고 압축을 해제하여 qgis로 드래그 하여 레이어를 불러온다

법정동 경계 파일 압축 해제
3개의 압축 파일중 LIO 파일을 해제
QGIS를 이용하여 SHP 파일을 레이어로 생성

4. QGIS와 POSTGRESQL 연동

불러온 QGIS 레이어를 POSTGRESQL과 연동하여 DB에 IMPORT 해보자

먼저 좌측 탐색기 메뉴에서 POSTGIS를 선택하여 DB연결을 생성하자

지난번에 생성한 postgresql 정보를 입력하여 연결을 생성한다

postgresql 연결정보 입력
postgresql testdb에 대한 연결이 생성됨

 상단 메뉴의 데이터베이스를 클릭하여 DB관리자를 실행하자

QGIS의 DB관리자
접속한 QGIS와 연동된 postgresql의 정보

상단 메뉴의 스키마 생성하기 버튼을 클릭하고 shp2db라는 스키마를 생성하자

shp2db 스키마 생성

스키마 생성 후 레이어/파일 불러오기를 선택

생성한 스미카 shp2db를 선택하고 레이어/파일 불러오기를 선택

QGIS에서 불러온 레이어가 보인다

DB에 입력할 공간데이터에 대한 설정

레이어 전체에 대해서 utf-8로 인코딩된 값을 가져오기 위해 아래와 같이 설정

SRID는 입력된 데이터에 맞게끔 자동으로 설정됨

확인을 눌러 DB에 import 실행

4. 오류 발생

확인 버튼을 눌러 DB에 import를 하면 다음과 같이 오류가 발생한다.

오류 발생 화면

PostgreSQL에서 공간데이터를 사용하기 위해서는 PostGIS를 설치하고 해당 DB에 EXTENSION을 해줘야만 한다

 

5. 오류 해결

PostgreSQL이 설치된 서버에 접속하여 PostGIS를 설치해보자

postgis 확장 모듈 만들기: 한국 포스트그레스큐엘 홈페이지 (postgresql.kr)

 

postgis 확장 모듈 만들기

CentOS 7에서 postgis 모듈 만들기

postgresql.kr

PostGIS를 사용하기 위해서는 GEOS, PROJ, GDAL, SFCGAL 등등 추가적인 패키지가 필요하다

소스를 직접 찾아 컴파일 하고 설치를 해도 가능하지만 정신건강을 위해서 yum을 이용하여 설치하는것을 추천함

#>yum list | grep postgis

yum list를 확인해보면 postgis 버전이 상당히 많을것을 볼 수 있다

실습용 서버에 설치된 PostgreSQL 버전은 12버전이므로 해당 버전에 맞는 PostGIS를 설치한다

#>yum install postgis30_12

yum을 이용한 패키지 설치화면
yum을 이용해야 정신건강에 좋다

6. 다시 공간데이터 import

다시 QGIS를 실행하고 DB관리자로 이동해보자

QGIS DB관리자 실행화면

생성된 testdb 데이터베이스의 shp2db 스키마에 레이어를 import해보자

오류 발생

또 오류가 발생한다... 당연히 PostGIS EXTENSION을 생성하지 않아서 문제가 발생한다

DB툴이나 PSQL을 이용하여 설치된 PostGIS EXTENSION을 생성하자

psql을 이용한 postgis extension 생성

QGIS를 이용하여 다시 DB관리자를 실행하여 레이어를 불러오면 비활성화 되었부분이 활성화 되어 있다

PostGIS EXTENSION 생성후 비활성 버튼 활성화 화면

확인 버튼을 눌러 import를 실행해보자

성공!

DB툴을 이용하여 import한 내용을 확인해보자

DBEAVER를 이용한 데이터 조회 결과

DB툴이 여러가지가 있는데 그중에서 DBEAVER가 가장 마음에 들어서 주로 애용함

공간데이터에 대해서 바로 직접적으로 확인이 가능해서 여러모로 아주 좋음

 

PostgreSQL 설치는 쉬우나  PostGIS 설치 부분이 매우 어렵다

특히 소스 파일을 하나하나 다운로드 받아서 컴파일 해가면서 설치하면 멘탈이 나가기 쉬우므로 yum을 이용한 설치를 추천함


'공부 > postgresql' 카테고리의 다른 글

postgresql 설치  (0) 2022.07.03