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월 기준)

 

POSTGIS 설치

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

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

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

 

PostgreSQL에 DB만들기

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

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

house라는 DB를 생상한다

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

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

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

create extension postgis;

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

 

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

postgis를 실행합니다.

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

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

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

연결에 성공하였습니다.

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

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

여러개를 동시에 할 수 있습니다.

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

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

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

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

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

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

 

Coordinate Systems

 

developers.arcgis.com

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

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

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

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

데이터를 넣는 중입니다..

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

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

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

728x90
반응형