본문 바로가기

devlog/Python

공간정보 분석 - Part 1. 관련 라이브러리 소개

파이썬을 활용한 지리공간 분석 마스터하기

회사에서 모빌리티 관련 프로젝트 하나를 맡게 되었다. 사용자의 이동경로가 담긴 gps 데이터를 도로 네트워크에 맵매칭하고 매칭되지 않은 gps를 추출하고 기존 네트워크를 추가, 삭제, 갱신하는 프로젝트이다. 기존에 해왔던 게임개발 또는 웹개발과는 거리가 멀고 공간정보 분석 또는 파이썬으로 진행하는 첫 업무이기 때문에 관련 책을 구매했다. 블로그에 발행할 내용은 책을 참고하여 실습하면서 정리할 예정이다. 끝까지 다 볼 순 없겠지만 정리하면서 나중에 다시 볼 예정이고 관련 설명은 책에 자세히 나와있으므로 자세한 내용은 책 또는 관련 사이트를 참조하는 것이 좋다.

GDAL/OGR

GDAL (Geospatial Data Abstraction Library)

GDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source License by the OSGeo(Open Source Geospatial Foundation).
래스터 데이터 입출력 처리 라이브러리

gdal 발음 (구글처럼 구-들이라고 읽기도 하고 지들, 지달로 읽는다고 한다.)

https://soundcloud.com/danabauer/how-do-you-pronounce-gdal

OGR (OpenGIS Simple Features Reference Implementation)

OGR used to be a separate vector IO library inspired by OpenGIS Simple Features which was separated from GDAL. With the GDAL 2.0 release, the GDAL and OGR components were integrated together.
벡터 데이터 입출력 처리 라이브러리

  • C/C++ 로 개발되어 파이썬에서 사용하기 위해 바인딩된 라이브러리
  • 산업 표준 으로 QGIS 같은 오픈소스 GIS 프로그램 또는 ArcGIS 같은 상업용 GIS 프로그램에 포함되어 있음
  • GDAL 설치 시 OGR 라이브러리가 포함되어있음

GEOS (Geometry Engine – Open Source)

GEOS is a C++ port of the ?Java Topology Suite (JTS).

  • What is JTS?
    • JTS 는 JAVA로 개발된 오픈소스 공간쿼리 및 공간처리 라이브러리

GEOS는 GDAL과 함께 컴파일해서 OGR의 기능을 제공한다. JTS 의 완전한 기능을 C++로 포함하는 것을 목표로 개발되었다. QGIS, PostGIS, GeoDjango도 GEOS를 사용한다.

Shapely

Manipulation and analysis of geometric objects in the Cartesian plane.

평면 기하 처리와 분석을 위한 패키지로 GEOS와 JTS 라이브러리를 기반으로 개발되었다. 데이터 포맷과 좌표계는 직접 처리하지 않지만 관련 라이브러리와 쉽게 통합할 수 있다. 포인트, 멀티포인트, 라인스트링, 멀티라인스트링, 폴리곤, 멀티폴리곤, 지오메트리 컬렉션을 지원한다.

Fiona

Fiona reads and writes geographic data files and thereby helps Python programmers integrate geographic information systems with other computer systems.

Fiona는 파이썬 사용자를 위해 OGR API를 사용하여 지리적 데이터 입출력을 지원하는 라이브러리로서 GDAL 라이브러리와 연결된 확장모듈이 포함되어있다. 주로 Shapely, pyproj 또는 RTree 같은 파이썬 GIS 패키지에 통합하여 데이터를 생성하고 처리한다.

pyproj

Python interface to PROJ (cartographic projections and coordinate transformations library)

  • What is PROJ?
    • PROJ is a generic coordinate transformation software that transforms geospatial coordinates from one coordinate reference system (CRS) to another. This includes cartographic projections as well as geodetic transformations. PROJ is released under the X/MIT open source license

지도제작 투영과 좌표계 변환등을 수행하는 PROJ 라이브러리를 파이썬에서 사용할 수 있게 해주는 파이썬 인터페이스 라이브러리

pyshp

Pure Python read/write support for ESRI Shapefile format

타 라이브러리 없이 순수 파이썬으로 ESRI Shapefile 데이터를 입출력 하기 위한 라이브러리. 다른 포맷의 지리공간 데이터 입출력 또는 데이터 분석 및 처리가 필요하지 않고 shapefile만 입출력 한다면 사용할만하다.

Rasterio

Fast and direct raster I/O for use with Numpy and SciPy

Rasterio는 래스터 포맷의 입출력을 위한 N-D array 기반의 파이썬 API를 제공한다. GIS에서 GeoTIFF 또는 다른 래스터포맷을 구성하거나 그리드로 저장하는데 사용한다. Linux, Mac OS X를 위한 패키지는 공식적으로 지원하지만, Windows를 위한 패키지는 비공식적으로 지원한다. (래스터리오인줄 알았는데 래스터아이오였다.)

Geopandas

GeoPandas is an open source project to make working with geospatial data in python easier.

GeoPandas는 pandas 데이터셋을 확장하여 지오메트리 타입에 공간 연산이 가능하게 확장한 라이브러리다. 공간 처리에는 shapely 라이브러리를 사용하며 파일 입출력은 fiona 라이브러리를 사용하고 데이터 표시에는 matplotlib 라이브러리를 사용한다.

이어서 다음글은 실습환경 구축을 위해 anaconda를 이용한 가상환경 구축 및 database 설치를 진행할 예정이다.