PART 01 / CHAPTER 01
01 · 공간 질문과 Python 라이브러리
Python·라이브러리·데이터·분석 질문을 구별하는 첫 수업.
목표: 도구 이름보다 먼저 분석의 질문과 단위를 정합니다. 선수: 없음. 실습: 20분, 가상 공원 2곳. 용어가 낯설면 라이브러리 안내를 함께 읽습니다.
개념: Python과 라이브러리는 무엇인가
Python은 컴퓨터에게 작업 순서를 설명하는 프로그래밍 언어입니다. QGIS처럼 창과 버튼을 가진 GIS 프로그램과 달리 코드를 실행해 작업합니다. 라이브러리(library)는 반복해서 쓰는 함수·자료구조·기능을 미리 만들어 모은 도구입니다. 패키지(package)는 코드가 배포·구성되는 단위로, 실무에서는 “GeoPandas 패키지를 설치해서 GeoPandas 라이브러리를 쓴다”고 말합니다.
pip install geopandas는 현재 Python 환경에 패키지를 설치하는 명령이고, import geopandas as gpd는 설치된 기능을 현재 코드로 불러오면서 gpd라는 짧은 이름을 붙이는 문장입니다. 둘은 같은 작업이 아닙니다. API는 read_file()처럼 그 도구의 기능을 부르는 약속입니다. 파일 경로를 입력하면 공간표가 나오는 식으로 입력과 출력을 정해 둡니다.
GeoPandas는 위치를 가진 표를 다루는 라이브러리, Rasterio는 지리참조를 가진 격자 파일을 읽고 쓰는 라이브러리입니다. 공원 경계·건물 도형은 GeoPandas, 고도·위성영상은 Rasterio에서 시작합니다. NumPy는 그 격자의 숫자를 계산합니다. OpenStreetMap은 지도 데이터 프로젝트, Sentinel-2A는 위성 플랫폼이므로 라이브러리와 다른 종류입니다.
왜 필요한가
“공원 A가 더 좋다”는 문장에는 좋은 것의 기준이 없습니다. 면적이 넓은지, 인구당 녹지가 많은지, 실제로 걸어갈 수 있는지를 나눠야 필요한 자료와 연산이 정해집니다. 도구를 먼저 선택하면 쉽게 계산되는 숫자로 원래 질문을 바꾸기 쉽습니다.
핵심 API와 분석의 계약
| 구성 | 이번 예 |
|---|---|
| 질문 | 주변 인구 대비 공원 면적은 어느 쪽이 큰가? |
| 자료 | 공원면적(㎡), 같은 범위·기준일의 인구(명) |
| 연산 | 면적 ÷ 인구 |
| 결과 | 1인당 공원면적(㎡/명) |
| 한계 | 보행로·수용력·이용 행태는 아직 반영하지 않음 |
최소 실행 예제
이 장의 예제는 외부 라이브러리 없이 Python 기본 기능만 사용합니다. Python을 설치한 뒤 파일로 실행하거나 노트북 셀에서 실행합니다.
parks = [
{"name": "A", "area_m2": 3000, "people": 1000},
{"name": "B", "area_m2": 2000, "people": 500},
]
for park in parks:
assert park["people"] > 0
per_person = park["area_m2"] / park["people"]
print(park["name"], per_person, "m2/person")
A는 3㎡/명, B는 4㎡/명입니다. 면적만 보면 A가 크지만 분모를 포함하면 순서가 달라집니다. 이 계산만으로 실제 이용 가능 녹지나 공원 품질을 판정할 수는 없습니다.
조경·도시 실무 예제
대상 공원 경계, 실제 출입구, 주변 인구 집계영역, 보행 도로망을 따로 준비합니다. “주변”을 반경 500m로 할지 보행 10분으로 할지에 따라 분석 대상 인구도 달라집니다. 분석 전에 그 범위를 문장으로 적습니다.
시각화
먼저 공원면적과 인구를 표로 나란히 보여주고 비율을 덧붙입니다. 지도는 그 다음입니다. 지도에 색을 칠하기 전에 단위와 분모가 맞는지 표에서 확인할 수 있어야 합니다.
흔한 오류
“QGIS를 설치했으니 Python에서도 GeoPandas를 쓸 수 있다”는 가정은 맞지 않을 수 있습니다. 각 프로그램의 Python 환경이 다르기 때문입니다. 또 OSM 데이터를 설치하는 것과 OSMnx 라이브러리를 설치하는 것도 다릅니다. 실제 도로 데이터 취득은 별도 단계입니다.
연습문제
“그늘이 부족한 공원을 찾는다”를 질문·자료·연산·결과·한계로 나눠 보세요. 수관면적과 실제 시간대별 그늘면적이 왜 다른지 한 문장으로 설명하세요.
다음 단계
02장에서 같은 공원을 점·면·격자로 표현합니다. 설치 순서는 04장에 있습니다.
출처
Python 모듈과 패키지, GeoPandas 소개, Rasterio 소개. 확인 2026-09-30. 공원 숫자는 교육용 가상 값입니다.
