SQL & DB/PostgreSQL

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기

YSY^ 2020. 11. 3. 19:56

이전에 QGIS로 만든 SHP파일을 이제 PostgreSQL에 DB화 하는 것을 알아보겠습니다.

 

PostgreSQL 설치

먼저 PostgreSQL을 설치해줍니다.

www.enterprisedb.com/downloads/postgres-postgresql-downloads

 

Download PostgreSQL Database for Windows, Linux and MacOS & 32-bit or 64-bit Versions | EDB

Download PostgreSQL packages or installers free from EDB. Get PostgreSQL for Windows, Linux and MacOS platforms. Download 32-bit or 64-bit versions. Download open-source PostgreSQL now.

www.enterprisedb.com

 

여기서 12.4버전 이하를 깔아주셔야 합니다. 아직까지 13버전에서는 Postgis를 지원하지 않습니다.(2020년 10월 기준)

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 0

 

POSTGIS 설치

PostgreSQL을 깔으셨다면 POSTGIS를 깔아줄 차례입니다.

먼저 PostgreSQL과 같이 깔린 Stack Builder를 실행해주고 PostgreSQL12(x64)... 를 선택해 주고 next를 누릅니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 1

그다음 Spatial Extension의 PostGIS 3.0 을 선택해 주시고 next를 눌러 설치해주시면 되겠습니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 2

 

PostgreSQL에 DB만들기

postgreSQL을 실행한 후 공간데이터를 담을 Databases를 만들어 줍니다.

Databases 카테고리를 우클릭한다음 Create->Database.. 를 누르고 DB이름을 설정하고 DB를 만들어줍니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 3
[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 4
house라는 DB를 생상한다

데이터베이스가 만들어졌습니다. 이제 PostGIS 확장 모듈을 데이터베이스 안에 불러옵니다.

SQL 쿼리 빌더로 명령문을 적어보겠습니다. DB명을 우클릭 후 Query Tool을 선택합니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 5

그리고 PostGIS 확장 모듈을 로드하기 위해 다음과 같은 코드를 실행합니다..(F5를 눌러 실행)

create extension postgis;

Create Extension이라고 뜨면 성공입니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 6

 

POSTGIS를 이용하여 SHP파일을 DB화 하기

postgis를 실행합니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 7

먼저 POSTGIS를 PostgreSQL과 연결해주어야합니다.

View connection details를 누르고 username, password, database를 입력합니다.

Username은 postgres가 기본이며, 비밀번호는 postgresql비밀번호고 Database는 아까 만들었던 DB명을 입력하면됩니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 8
[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 9
연결에 성공하였습니다.

Add File 버튼을 누르면 다음과 같은 화면이 뜹니다.

여기서 SHP파일과 DBF파일을 각각 열어줍니다. 둘중에 하나라도 없으면 에러가 날 수 있으니 꼭 두개 업로드 해야합니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 10
[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 11
여러개를 동시에 할 수 있습니다.

이제 SRID코드를 입력해주어야 합니다.

SRID란 공간 참조 식별자(Spatial Reference Identifier)라고 하며 데이터의 지리적 좌표계와 투영법에 대한 정보를 구분해 주는 유일한 식별 코드입니다.

먼저 SHP파일을 만들때 pri라는 파일도 만들어졌을겁니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 12

이 Prj파일을 메모장으로 열어줍니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 13

이파일에 젹혀 있는 문자열을 복사하고 하단에 있는 사이트로 들어갑니다.

developers.arcgis.com/javascript/3/jshelp/gcs.html

 

Coordinate Systems

 

developers.arcgis.com

여기서 아까 복사한 문장을 ctrl+f를 이용해 찾아준다면 왼쪽에 숫자가 하나 있습니다. 그것이 공간데이터의 SRID코드입니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 14

다시 POSTGIS로 돌아와서 각 파일마다 SRID코드를 입력해줍니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 15

그리고 Options를 눌러 체크되있는 것을 모두 해제해줍니다.(오류가 발생될 수 있습니다.)

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 16

이제 IMPORT 버튼을 눌러 PostgreSQL에 공간데이터를 넣어줍니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 17
데이터를 넣는 중입니다..

만약 다음과 같은 encoding 오류가 뜬다면 Options에서 UTF-8을 CP949나 EUC-KR로 바꾸어서 진행해보시기 바랍니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 18

완료되면 릴레이션이 이미 있다는 오류가 뜰텐데요, 실제로 이미 있었다면 오류가 났었겠지만 처음 만드는것이라면 무시하셔도 되는 오류입니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 19

SELECT문을 실행해보니 데이터가 잘 들어갔음을 확인할 수 있습니다.

[PostgreSQL] SHP파일을 POSTGIS로 PostgreSQL에 DB화 하기 20

728x90
반응형