GIS

PostGIS (1): PostgreSQL/PostGIS 소개 및 설치

유병혁 2023. 2. 26. 17:38

공간 데이터베이스를 다루려면 공간 DBMS라는 프로그램을 사용해야 합니다. 이번 차시는 상용 DBMS를 대체할 수 있는 대표적인 오픈소스 DBMSPostgreSQL을 설치하고, 그 위에서 동작하는 공간 DBMSPostGIS도 함께 설치해 보겠습니다.

1. PostgreSQL이란?

1.1. PostgreSQL 소개

PostgreSQL(포스트그레스큐엘)은 오픈소스 객체-관계형 데이터베이스 관리 시스템(ORDBMS: Open Source Object-Relational Database Management System)입니다. PostgreSQL은 BSD 또는 MIT 라이선스와 유사한 자유 오픈소스 라이선스인 PostgreSQL 라이선스에 따라 배포됩니다.

 

PostgreSQL은 1986년에 캘리포니아 대학교 버클리(UC Berkley: University of California, Berkley)의 'POSTGRES' 프로젝트 일부로 시작되었습니다. 1994년 POSTGRES에 SQL 언어 인터프리터(interpreter)가 추가되면서 'Postgres95'라는 이름으로 웹에 공개되었습니다. 이후 Postgres95라는 이름이 특정 연도에 한정된다는 것이 인정되면서, 1996년부터 현재의 이름인 PostgreSQL을 사용하게 되었습니다.

 

PostgreSQL은 Postgres 프로젝트와 SQL 기능이 있는 최신 버전의 관계를 반영한 이름으로 많은 사람들은 여전히 PostgreSQL을 Postgres(포스트그레스)라고 계속 인용하고 있습니다.

 

이미지 출처: https://wiki.postgresql.org/wiki/Logo

PostgreSQL의 로고는 'Slonik(슬로닉, 러시아어로 코끼리)'이라는 이름을 가진 코끼리입니다. PostgreSQL의 주요 공헌자인 Oleg Bartunov(올렉 바르투노프)의 언급에 따르면, 오픈소스화된 직후 한 사용자가 아가사 크리스티의 소설 '코끼리는 기억한다(Elephants Can Remember)'에서 착안해 제안한 것으로 보입니다.

[...] but if you want an animal-based logo, how about some sort of elephant? After all, as the Agatha Christie title read, elephants can remember ...

David Yang

1.2. PostgreSQL 설치 및 환경설정

PostgreSQL 공식 홈페이지(https://www.postgresql.org/)에서 Download를 클릭하고 내 컴퓨터의 운영체제(예: Windows)를 선택합니다.

Download the installer를 클릭 후, PostgreSQL Version 별 설치 파일을 다운로드 합니다. 여기서는 PostgreSQL Version 15.2, Windows x86-64 설치파일을 내려받아 보겠습니다.

PostgreSQL Setup Wizard 창입니다.

PostgreSQL을 설치할 디렉터리를 설정합니다.

데이터를 저장할 디렉터리를 지정합니다. 기본 위치는 PostgreSQL이 설치되는 디렉터리 하위로 설정됩니다.

데이터베이스 운용관리자(database superuser) 패스워드를 설정합니다. 여기서는 실습 편의상 ‘postgres’로 설정했습니다.

서버가 수신할 포트 번호를 설정합니다. PostgreSQL은 기본 포트로 5432를 씁니다.

다음으로 언어 설정인데요, [Default locale]로 그대로 두시면 운영체제의 언어가 자동으로 선택됩니다.

설치 설정을 확인하고 이제 PostgreSQL을 설치합니다.

2. PostGIS이란?

2.1. PostGIS 소개

이미지 출처: https://postgis.net/workshops/postgis-intro/

PostGIS(https://postgis.net/)는 PostgreSQL의 공간 데이터베이스 익스텐더(Spatial DB Extender), 즉 공간 DB에 특화된 PostgreSQL용 플러그인입니다. PostGIS는 GNU General Public License(GPLv2 이상)에 따라 배포됩니다.

이미지 출처: https://postgis.net/workshops/postgis-intro/

 

PostGIS는 컨설팅사 Refractions Research(http://www.refractions.net)가 캐나다 지방정부(BC주 빅토리아)의 대규모 자연자원 데이터 관리 및 분석을 수행하는 과정에서 성장했습니다.

 

2000년 BC Watershed Atlas 프로젝트는 BC 전체에서 유역별로 수십 개의 환경통계를 요약했습니다. 2001년 BC Road Atlas 프로젝트는 데이터 품질 검사 및 무작위 데이터 엑세스가 필요했으며 간단한 분석과 색인(indexes)이 요구되었습니다. 이를 통해 2001년 PostGIS의 첫번째 버전이 출시되었습니다.

 

2004년 BC Corporate Watershes 프로젝트는 이전보다 훨씬 더 큰 데이터셋을 다뤘으므로 스토리지 효율성이 강조되었습니다. 그리하여 2005년 4월 19일, PostGIS 1.0이 출시되었습니다.

2008년부터 Refractions Research가 PostGIS의 추가 개선에 대한 직접 투자를 중단함에 따라, 프로젝트는 
postgis.net와 함께 완전한 커뮤니티 주도 개발 모델(a full community-driven development model)로 전환되었습니다.

2.2. PostGIS 설치 및 환경설정

PostgreSQL 설치에 이어 PostGIS를 설치하겠습니다.

 

Stack Builder 유틸리티는 PostgreSQL 설치를 보완하는 모듈 다운로드 및 설치를 간소화하는 그래픽 인터페이스를 제공합니다. Stack Builder로 모듈을 설치하면, 모든 소프트웨어 종속성을 해결합니다.

설치 목록에서 'PostgreSQL 15 (x64) on port 5432'를 선택해 줍니다.

'Next(다음)' 버튼을 클릭합니다.

다음 화면에서는 PostgreSQL에 추가할 애플리케이션을 선택합니다.

'Categories > Spatial > PostGIS 3.3 Bundle for PostgreSQL 15 (64 bit) v3.3.2'를 체크합니다.

'Next(다음)' 버튼을 클릭하면, PostGIS 패키지가 다운로드 됩니다.

다운로드가 완료되었습니다. , 이제 PostGIS를 설치해볼까요?! ‘Next(다음)’을 클릭합니다.

PostGIS의 GNU General Public License(GPLv2 이상) 계약 조건이 안내됩니다. 계속 하려면 'I Agree(동의)'을 클릭합니다.

PostGIS 구성 요소가 체크된 것을 확인하고 ‘Next(버튼)’을 클릭합니다.

설치 폴더를 확인하고 'Next(다음)' 버튼을 클릭합니다.

다음은 PROJ_LIB 환경 변수를 등록할 것인지 묻는 창입니다. PROJ_LIB는 지오메트리 및 래스터 변환이 제대로 작동하는데 필요한 환경 변수입니다. 기존 설정이 있는 경우 덮어쓰게 합니다.

이번에는 GDAL_DATA  환경 변수를 등록할 것인지 묻습니다. GDAL_DATA는 래스터 변환이 제대로 작동하는데 필요한 환경변수로, 기존 설정이 있는 경우 덮어쓰게 합니다.

Raster 드라이버는 기본적으로 비활성화되어 있습니다. 변경하려면 POSTGIS_GDAL_ENABLED_DRIVERS 환경 변수를 설정해야 하며 변경 사항을 적용하려면 PostgreSQL 서비스를 다시 시작해야 합니다.

이러한 안내와 함께 POSTGIS_ENABLED_DRIVERS를 일반 드라이버 GTiff, PNG, JPEG, XYZ, DTED, USGSDEM, AAIGrid로 설정하겠는지 묻는 창입니다.

Raster out of db 드라이버는 기본적으로 비활성화되어 있습니다. 다음은 PostGIS_ENABLE_OUTDB_RASTERS 환경 변수를 1로 설정해서 해당 드라이버를 활성화할 것인지 묻는 창입니다.

PostGIS 프로그램 설치가 완료되었습니다. 이제 PostgreSQL과 PostGIS가 모두 설치되어 공간 데이터베이스를 운영하고 관리할 수 있습니다.