1. 개요#


1.1. 이 책의 구성#

 이 책은 파이썬 프로그래밍을 통해 공간 데이터를 처리하는 방법에 대해 다룹니다. 각 단원은 이론 및 실습과 연습문제로 구성됩니다. 연습문제는 파이썬을 사용하여 기본적인 파이썬 프로그래밍을 검토하고, 해당 단원에서 다룬 공간 데이터 처리 방법을 적용하여 공간정보를 처리하고 분석하는 데 중점을 둡니다.

단원

제목

키워드

서론

주피터랩, 파이썬, 패키지

Shapely와 도형 객체

점, 선, 다각형

GeoPandas로 공간 데이터 관리

읽기, 쓰기, 투영, 조인

지오코딩과 공간 쿼리

지오코딩, 쿼리

데이터 재분류와 오버레이 분석

시각화: 정적 지도와 대화형 지도

OpenStreetMap 데이터와 네트워크 분석

osmnx, networkx

PyQGIS와 래스터 처리

1.2. 학습 목표#

  • 다른 파일 포맷에서/으로 공간 데이터를 읽기/쓰기

  • 좌표 참조 시스템(Coordinate Reference System; CRS) 작업

  • 지오코딩(Geocoding)을 사용하여 주소를 좌표로 또는 그 반대로 변환

  • 오버레이 기능을 사용하여 도형 결합(교집합, 합집합)

  • 값을 기준으로 데이터 재분류(reclassify)

  • 공간 쿼리 수행

  • 간단한 공간 분석 수행

  • 데이터 시각화 및 정적 또는 대화형 지도 생성(예. Texas Unemplyment 지도)

1.2.1. 단원별 학습 목표#

서론

  • 파이썬(Python) 및 패키지(Package) 설치

  • 공간 분석 환경 구성

Ⅰ. Shapely와 도형 객체

  • 파이썬에서 사용 가능한 GIS 패키지에 대한 탐색

  • Shapely에서 도형 객체(geometric objects)가 어떻게 표현되는지 이해

  • 좌표 값을 기반으로 도형 객체 생성

Ⅱ. GeoPandas로 공간 데이터 관리

  • 공통 파일 형식(Common file formats)에서 공간 데이터 읽기 및 쓰기

  • 공간 및 비공간 데이터셋에 대한 간단한 분석

  • 좌표 참조 시스템(CRS; Coordinate Reference Systems) 관리 및 데이터 재투영(re-project)

Ⅲ. 지오코딩과 공간 쿼리

  • 지오코딩(Geocoding), 즉 주소를 좌표로 또는 좌표를 주소로 변환

  • PIP (Point-in-Polygon) 쿼리

  • KML (Keyhole Markup Language) 파일에서 데이터 읽기

  • 공간 및 속성 값에 대한 레이어 조인(join)

  • 점(Point) 객체 중 최근접 이웃(nearest neighbor) 탐색

Ⅳ. 데이터 재분류와 오버레이 분석

  • 여러 기준에 따른 데이터 재분류(reclassifying)

  • 오버레이(Overlay) 분석

  • 데이터 집계(aggregate) 및 도형 객체 병합(merge)

  • 도형 단순화

Ⅴ. 시각화: 정적 지도와 대화형 지도

  • 정적 지도(Static map) 생성

  • 대화형 지도(Interactive map) 생성

Ⅵ. OpenStreetMap 데이터와 네트워크 분석

  • OpenStreetMap에서 데이터 검색 및 저장

  • 간단한 도로 네트워크 특성 및 통계 추출

  • 최단 경로 알고리즘을 사용한 경로 최적화

Ⅶ. PyQGIS와 래스터 처리

  • 래스터(Raster) 데이터 처리의 기초

  • QGIS에서 파이썬 스크립트 사용

1.3. GIS에 왜 파이썬인가#

 데이터 과학, 특히 공간 데이터 과학 및 공간 데이터 분석과 관련하여 Python은 유용한 프로그래밍 언어입니다. 파이썬 생태계는 사람들이 라이브러리를 다른 사람들과 쉽게 공유할 수 있게 해주며, 공간 데이터 분석과 관련해 대부분의 작업이 가능한 패키지들을 가지고 있습니다.

../../_images/python.png

Fig. 1.1 Python에서는 무엇이든 배우는 것이 쉽습니다 : 모든 것을 위한 패키지가 있습니다. 출처: xkcd.com/353#

 일부 데스크톱 GIS(예. QGIS, ESRI ArcGIS)에는 Python을 사용할 수 있는 툴 또는 프로그래밍 인터페이스가 있습니다. 즉, 데스크톱 GIS에서 파이썬 프로그램을 작성해 데이터, 라이브러리, 사용자 인터페이스와 상호 작용하도록 기능을 확장하는 사용자 지정 플러그인도 만들 수 있습니다. 그 외에도 공간 데이터 관리 및 공간 분석과 관련된 대부분의 작업을 위한 강력한 Python 패키지가 있습니다.

 이 책에서는 독점 타사 소프트웨어 패키지(예. ESRI ArcGIS)와 같은 데스크톱 GIS 없이 GIS 분석 및 데이터 관리 작업을 수행하는 데에 중점을 둘 것입니다. 여기에는 여러가지 이유가 있습니다.

  • Python과 대부분의 파이썬 패키지는 오픈소스입니다. 이는 무료로 사용할 수 있고 여러분의 목적에 따라 자유롭게 수정할 수 있음을 의미합니다. 따라서 라이선스에 대한 액세스에 의존할 필요가 없으며 전 세계 누구나 사용할 수 있습니다.

  • 문제를 해결하기 위해 코딩을 하다보면, geoprocessing의 세세한 내용을 깊게 이해할 수 있습니다. 또한 이 과정에서 GIS에 대한 이해도 더 깊어질 것 입니다.

  • Python은 효율적입니다. Python 스크립트를 사용하여 빅데이터를 분석할 수 있을뿐만 아니라, 데스크톱 GIS 툴보다 대체로 성능이 뛰어납니다.

  • Python은 유연합니다. 다양한 데이터 형식들을 읽고 쓸 수 있으며, 파이썬의 패키지 생태계는 여러분이 상상할 수 있는 프로그래밍 작업과 관련된 라이브러리를 제공합니다.

  • 오픈소스 소프트웨어인 파이썬을 사용함으로써 개방 과학(Open science)과 재현 가능한 연구에 기여할 수 있습니다. 누구나 여러분의 코드를 가지고 실험이나 분석을 반복하여 귀하의 주장을 확인하고 귀하의 예에서 배울 수 있습니다.

  • Python의 다양한 패키지 기능들을 결합하면 상대적으로 적은 비용으로 좋은 결과를 얻을 수 있습니다. 예를 들어, GeoDjango와 PostGIS 패키지를 결합해 멋있는 GIS 웹을 개발할 수 있습니다.

1.4. Python에서 사용할 수 있는 GIS 패키지#

 이 책에서 여러분은 데이터 분석 및 공간 데이터셋 처리에 유용한 Python 패키지들을 다룰 것입니다. 아래 목록은 GIS 및 데이터 분석을 위해 보편적으로 사용되는 Python 패키지를 나열한 것 입니다.

1.4.1. 데이터 분석 및 시각화#

패키지

설명

NumPy

Python을 사용한 과학적 컴퓨팅을 위한 도구

Pandas

고성능의 사용하기 쉬운 데이터 구조 및 데이터 분석 도구

SciPy

수치 알고리즘 및 여러 도메인(신호 처리, 최적화 및 통계)에 특화된 도구

MatplotLib

Python용 시각화 라이브러리

Bokeh, Plotly

웹 기반 반응형 시각화 라이브러리 (지도 포함)

1.4.2. GIS#

패키지

설명

GDAL

벡터 및 래스터 데이터 형식을 처리하기 위한 패키지이며, 아래의 많은 모듈이 이 패키지를 필요로 함

Geopandas

Pandas와 Shapely 패키지의 기능을 결합해 공간 데이터 작업에 사용

Shapely

GEOS 기반의 기하학적 객체의 조작, 분석을 위한 패키지

Fiona

공간 데이터 읽기 및 쓰기 (Geopandas 대신 사용 됨)

Pyproj

PROJ.4 기반의 지도 제작 변환 및 측지 계산(geodetic)을 수행

Geopy

지오코딩 라이브러리. 주소 → 좌표 또는 좌표 → 주소 변환

Contextily

정적 지도 시각화를 위한 배경맵 제공

GeoViews

웹 기반 대화형 지도 제공

Geoplot

지리 공간 데이터 시각화 라이브러리

Dash (Plotly)

분석 웹 애플리케이션을 구축하기 위한 Python 프레임워크

OSMnx

OpenStreetMap에서 네트워크 탐색, 구성, 분석, 시각화 제공

Networkx

네트워크 분석 및 경로 탐색 (예: Dijkstra 및 A* 알고리즘)

Cartopy

데이터 분석 및 시각화를 위한 지도 제작

Scipy.spatial

공간 알고리즘 및 데이터 구조

Rtree

빠른 공간 인덱싱 제공

Rasterio

빠른 지리 공간 래스터 I/O

RSGISLib

원격 탐사 및 GIS 소프트웨어 라이브러리