- Published on
Django-rest-framework-gis 에 필요한 라이브러리 알아보기(python 3.9)
- Authors
- Name
- hongreat
- ✉️hongreat95@gmail.com
- 1. OS 단에서, django-rest-framework-gis 에 필요한 세팅
- 2. Python 단에서 사용하는 패키지
- 3. DB
- 4. 직접 설치하지 않았지만 알아두면 좋은 라이브러리
기존에 DRF(django-rest-framework) 를 사용하면서,
Django-rest-framework-gis 사용에 필요한 라이브러리를 정리했습니다.
설치 단계(OS, 파이썬, DB)별로 필요한 것이 많은데, 그 중에서 꼭 필요한 것 위주로 정리했습니다.
이 부분은 python 버전과 배포에 영향을 받습니다.
직접 스크립트로 설치하지 않았지만, 눈에 띄는 라이브러리 들도 몇개 있길래 같이 알아봤습니다.

1. OS 단에서, django-rest-framework-gis 에 필요한 세팅
제가 작업한 로컬 환경은 MacOS(M1 Sonoma 14.0) 입니다.
배포는 Docker Image -> python 3.9 버전을 사용했습니다. (AWS ECS에 했으며, 경량이미지는 패키지 관련 에러가 발생해 사용하지 않았습니다.)
FROM python:3.9
(참고)설치에 사용한 Docker 명령어는 아래와 같습니다.
RUN apt-get update && apt-get install -y \
gcc \
libcurl4-openssl-dev \
libssl-dev -y \
libgdal-dev \
gdal-bin \
libgeos-dev \
&& rm -rf /var/lib/apt/lists/*
1.1 GDAL
GDAL (Geospatial Data Abstraction Library)은 공간 데이터 형식을 다루기 위한 오픈소스 라이브러리입니다.
- 주요 기능 : 다양한 벡터 지리 공간 데이터 형식 읽기 및 쓰기를 지원합니다.
- 프로젝트 내부적으로 활용: 데이터 변환, 지도 투영 조정, 공간 데이터 처리 및 분석을 수행합니다.
1.2 GEOS
GEOS (Geometry Engine - Open Source)는 C++로 작성된 오픈소스 지오메트릭 함수 라이브러리입니다.
- 주요 기능: 공간 관계, 공간 연산 및 버퍼 작업 등의 지오메트릭을 처리 합니다.
- 프로젝트 내부적으로 활용: 공간 데이터의 정확한 지오메트릭 분석 및 처리를 수행합니다. JTS (Java Topology Suite)와 호환되는 API, 강력한 지오메트릭 연산을 지원합니다.
2. Python 단에서 사용하는 패키지
2.1 django-rest-framework-gis
django-rest-framework(DRF)에서 GIS 를 사용하기 위한 라이브러리이자, 프레임워크 입니다.
DRF 와 유사하게 사용되지만, GIS로 랩핑 되었다고도 볼 수 있고 확장되었다고 볼 수 있습니다.
- 주요 기능: GeoDjango 모델을 RESTful API로 쉽게 노출하게 해줍니다.
- 프로젝트에서의 활용: 지리공간 데이터를 사용하는 API 개발하는데 유용합니다. 그렇기에 클라이언트와의 효율적인 데이터 교환이 이뤄질 수 있습니다.
2.1.1 Djangoframework-gisCompatibility Version(DRF, Django, Python)
공식문서에서 호환되는 버전이 명시되어 있습니다.
사용하는 버전은 1.0.x 을 사용하는 것이 좋아보입니다.
파이썬 버전을 높혀, 효율을 끌어내기에 아직은 3.9 가 최대라 아쉽게 느껴집니다.
DRF-gis version | DRF version | Django version | Python version |
---|---|---|---|
1.0.x | 3.10up to3.13 | 2.2 to 4.0 | 3.6to3.9 |
2.2 GeoPandas
GeoPandas는 Python에서 상용하는 데이터 분석 라이브러리 Pandas와 통합된 지리공간 데이터 처리를 위한 라이브러리입니다.
- 주요 기능: 공간 데이터 분석, 데이터 처리를 수행할 수 있습니다. 다른 라이브러리와 같이 사용하면 지도 시각화 도 가능합니다.
- 프로젝트에서의 활용: Pandas의 데이터프레임 구조를 사용해 다양한 지리 공간 데이터 형식과 호환됩니다.데이터셋의 공간적 조작 및 분석, 간편한 데이터 시각화에 활용할 수 있습니다.저는 데이터 변환과 확인을 위한 용도로만 활용했습니다.
3. DB
데이터베이스는 Postgresql 을 사용했습니다.
GIS 연산을 수행하는데 PostGIS를 설치(확장)해야 합니다.

3.1 PostGIS , 확장 명령어
PostGIS는 PostgreSQL 데이터베이스의 확장으로, 공간 데이터를 위한 지원을 제공합니다.
DB단에서 Extension 으로 쉽게 적용이 가능하고, 명령어는 아래와 같습니다.
CREATE EXTENSION postgis;
- 주요 기능: 공간 쿼리, 지오메트릭 연산, 지도 생성에 바탕이 됩니다.
- 프로젝트에서의 활용: 위에서 언급된 라이브러리들은 PostGIS 환경이 갖춰져 있어야 동작합니다.
3.1.1 Docker로 만든 Postgresql에서 확장하는 방법 을 참고
4. 직접 설치하지 않았지만 알아두면 좋은 라이브러리
직접 CLI 로 설치 하지 않았더라도 다른 패키지에 랩핑되어 아래 라이브러리들이 설치 될 수 있습니다.
4.1 Shapely
Shapely는 지오메트릭 객체를 조작하고 분석하기 위한 라이브러리입니다.
4.2 Fiona
Fiona는 OGR 라이브러리의 간단한 Python 인터페이스로, 공간 데이터 파일을 읽고 쓰는 기능을 제공합니다..
실제로 공간 데이터 파일의 관리 및 변환, 데이터 입출력 자동화를 수행합니다.
4.3 pyshp
pyshp는 Python에서 ESRI Shapefile 형식의 공간 데이터를 쉽게 읽고 쓸 수 있는 라이브러리입니다.
Shapefile 데이터의 읽기 및 쓰기를 지원해,
4.4 pyproj
pyproj는 Python에서 공간 데이터의 지도 투영 및 좌표 변환을 위한 라이브러리입니다.
4.5 Rasterio
Rasterio는 Python에서 래스터 데이터를 쉽게 읽고, 쓰고, 분석할 수 있는 라이브러리입니다.
래스터 파일 형식의 읽기/쓰기, 공간 분석 및 위성 이미지나 지형 데이터 분석을 수행합니다.