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 소프트웨어 라이브러리