[Foss4 g2014 korea] qgis를 플랫폼으로 한 파이썬기반 공간통계 구현 사례
1. QGIS를 플랫폼으로 한 파이썬 기반
공간통계 구현 사례
장병진(가이아쓰리디), 이경주(한국교통대학교)
2. GEEPS
연구/교육용 공간정보 기술 통합플랫폼 개발
연구
목적: 연구와 교육지원을 목적으로 오픈소스 공간
정보 기술 연구 및 패키지화
실체: QGIS를 연구/교육 활용목적 확장 연구
설계: 국토연구원
개발: 가이아쓰리디, 망고시스템
2013 – 기초기술 정리
2014 – 공간통계/공간분석 개발
2015 – 연구/교육용 컨텐츠 및 패키지 개발
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 2
3. 이경주
본 연구 공간통계 체계 설계
한국교통대학교 건설교통대학 도시공학과 교수
뉴욕주립대학교에서 공간통계로 박사학위
A Spatial Statistical Approach to Examining
Sprawled Urban Growth Patterns over Time in
The Framework of Geographic Information
System (GIS)
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 3
4. 장병진(BJ Jang)
본 연구 공간통계 개발
Gaia3D Open GIS Team Manager
OSGeo Charter Member
Open Source GIS Korean Localizer
Risk Surfer
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 4
6. 통계의 목적
미지의 결과를 추정
서울 중소기업의 40세 여자 개발자는 몇 살까
지 살 수 있을까?
특이한 상황인지 검정
1990년생 남자로 현재 165Cm라면 작은 키인
가?
샘플을 이용해 판단
모평균의 추정
모표준편차의 추정
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 6
7. 공간현상 특성과 극복
추계적(推計的, Stochastic)
확률을 따르지만 정확히 예측 불가
일반적인 사회현상의 특징
일반통계적 방법론으로 극복 가능
자기상관적(Autocorrelation)
시공간적으로 인접해 있을수록 그 성향 및 속성 유
사할 가능성 높음
일반통계의 변수 독립성 가정 위배 왜곡 가능성
거리가 가까울수록 가중치 많이 부여하여 유사성
에 따른 정보손실 반영
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 7
8. 공간통계 사례
John Snow의 콜
레라 발생 분석
이전까지는 전파
경로가 분명치 않
았음(공기? 접촉?)
Snow가 특정 물
펌프 사용자를 중
심으로 수인성 전
염임을 균 발견 없
이 거의 완벽히 설
명
공간통계와 공중
보건 분야의 시조
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 8
9. 공간정보산업 변화
DB 구축
및 운영
업무용
시스템
웹을 통한
정보 조회
의사결정
지원
•수치지도 구축
•주제도 구축
•영상지도 구축
•KLIS
•UIS
•내비게이션
•Mashup
•Drill Down
•Convergence
•웹 지도
•지도 앱
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 9
11. 필요 라이브러리
Python, qgis, PyQt
PySAL
Python based Spatial Analysis Library
NumPy와 SciPy를 기반으로 작성됨
http://pysal.org
NumPy
과학 계산을 위한 기초 파이썬 패키지
http://numpy.org
SciPy
수학, 과학, 통계 연산을 위한 파이썬 패키지
http://scipy.org
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 11
12. R vs PySAL
R
가장 많이 사용되는 오픈소스 통계 패키지
다양한 공간통계분석도 제공
R 고유 스크립트로 개발
PySAL
공간분석용 파이썬 패키지
공간통계가 강함
파이썬으로 모든 개발 가능
통일적인 언어체계로 공간통계부터 가시화까지 가
능
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 12
13. QGIS 설치
1. QGIS를 다운로드 받아 설치
http://qgis.org
2. QGIS가 사용중인 파이썬 버전 확인
OSGeo4W Shell을 관리자 권한으로 실행
python 명령 버전확인
3. OSGeo4W Setup 실행
OSGeo4W Shell을 관리자 권한으로 실행 안 하면
여기서 오류
Advanced Install 모드
설치된 라이브러리들과 버전 확인
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 13
14. NumPy 설치
NumPy Version > 1.8.0
PySAL이 필요로 하는 버전보다 낮으면 업데이트
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 14
15. SciPy 설치
윈도우에서는 파이썬 패키지관리에서 설치 안됨
UC IRVINE에서 윈도우용 설치본 만들어 둠
http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
Registry 수정 필요
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 15
16. PySAL 설치
pip(PyPi, Python Package Index)로 설치
SetupTools 설치
pip 설치
PySAL 설치
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 16
17. PyCharm 설치
PyCharm 이란?
파이썬 전용 통합개발환경
Eclipse, Visual Studio와 역할 유사
다운로드 및 설치
http://www.jetbrains.com/pycharm/download/
QGIS용 라이브러리도 사용하려면
QGIS가 사용하는 파이썬의 경로와 변수를 배치파일을
통해 설정후 CyCharm 실행
이를 배치파일로 만들어 간단히 실행
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 17
18. 개발 진행 과정
단위 로직 작성
QGIS 파이썬 콘솔에서 테스트
객체에 담긴 값을 확인해 검증
모듈 로직 작성
한 단위(통계로직 하나)를 하나의 파일로 개발
PyCharm에서 인텔리센스의 도움을 받아 개발
QGIS 파이썬 콘솔에서 전체 동작 확인
플러그인 UI에 통합
모듈 로직을 리팩토링 하여 UI와 결합
사용자 입력값에 대한 검증 추가
플러그인을 로드하여 전체 동작 검증
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 18
19. 상세한 과정 보기
생활코딩 QGIS 기반 공간통계 강의
http://opentutorials.org/module/982
현재 설치 및 기초부분까지 강의 진행
GEEPS 프로젝트 홈페이지
http://geeps.krihs.re.kr/study/spstat
컨텐츠 채운 후 오픈 예정
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 19
21. Moran’s I Statistic
자료의 공간자기상관의 전반적 경향을 추정
전역적 𝐼로 전체 경향판단, 지역적 𝐼𝑖로 각 지역 판단
정규화 하여 𝑍 값으로 변환후 유의성 판단
수행과정
1. 자료 정제(필요 데이터 추출)
2. 기준거리에 따라 공간가중치(Weight) 계산
3. pysal.esda.moran 으로 전역통계량 계산
4. pysal.esda.moran_local로 지역통계량 계산
5. 기준거리를 증가시켜 2~4 과정 반복
6. 표 및 그래프로 표출
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 21
23. Getis-Ord’s G Statistic
‘높은’ 값을 가지는 지역들이 군집하는 경향을 지수화
전역적 𝐺로 전체 경향판단, 지역적 𝐺𝑖로 각 지역 판단
정규화 하여 𝑍 값으로 변환후 유의성 판단
수행과정
1. 자료 정제(필요 데이터 추출)
2. 기준거리에 따라 공간가중치(Weight) 계산 (0 혹은 1)
3. pysal.esda.getisord 으로 전역통계량 계산
4. pysal.esda.getisord_local로 지역통계량 계산
5. 기준거리를 증가시켜 2~4 과정 반복
6. 표 및 그래프로 표출
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 23
25. Nearest Neighbor
Statistic
공간사건의 발생이 무작위 분포와 얼마나 차이 나는지 지
수화
보조적으로 최근린점을 연결하여 국지적 분포 시각화
수행과정
1. i 번째 점의 점의 최근린점 탐색
2. 찾은 최근린점을 연결하고 최근린거리합에 합산
3. 1~2를 모든 점에 대해 수행
4. 최근린거리합을 바탕으로 최근린 통계량 계산
분석대상지면적포인트수
A,N
r
rr
Z
A
N
ρ
ρN
0.26
r
ρ
r
r
r
R
var
expobs
Rvarexp
exp
obs
,,,
2
1
,
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 25
27. K-function
지리적 사건들의 공간적 군집을 지수화
각 사건에서 반경(ℎ)내의 사건수의 합을 밀도로 나누어 계산
수행과정
1. h를 최소거리로 설정하고 시작
2. 모든 점을 돌며 반경 h내의 점 수 파악하여 합산후 밀도 산정
3. 원 데이터와 동일한 무작위 점을 찍어 2의 방법으로 밀도 계산하는 몬
테카를로 시뮬레이션 n(999)번 실시
4. 원 데이터 밀도가 시뮬레이션 밀도 중 몇번째에 해당하는지로 확률값
평가
5. h를 최대거리까지 점차 증가시키며 2~3의 과정 반복
6. 모든 결과를 표로 그려 공간적 군집도가 의미 있는 거리 파악
2
2
hπ
λ
hλπ
E
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 27
29. Knox Statistic
시공간 상에서 발생하는 점들의 군집도 추정
수행과정
1. 원 데이터의 모든 점을 돌며 기준 시간/공간 거리내의 점 수 파
악하여 합산
2. 원 데이터에서 무작위로 시간을 섞어 1의 시공간내 점 수 파악
하는 몬테카를로 시뮬레이션 n(999)번 수행
3. 원 데이터의 기준 시공간내 점 수가 전체 시뮬레이션에서 몇 번
째인지 파악하여 확률값 산정
otherwise
dttif
T
otherwise
dxxif
S
TS
STN
tji
ij
sji
ij
n
i
n
j
ijij
,0
,1
,
,0
,1
,
2
)( 1 1
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 29
31. Spatial Scan Statistic
특정한 사건이 많이 발생하는 공간적인 범위 판단
수행과정
1. 모든 지역에 대해 그 지역의 사건수와 그 외 지역 사건수가 얼마나 다른
지 나타내는 우도비(LR) 계산
2. 가장 우도비가 높은 지역부터 인근 지역순으로 합쳐가며 우도비가 가
장 높게 합쳐지는 지역을 파악
3. 각 지역의 인구수에 비례되도록 무작위로 사건을 만들어 n(999)번 몬
테카를로 시뮬레이션
4. 원 데이터의 우도비가 시뮬레이션 중 몇 번째에 해당하는지 판단하여
확률값 산정
5. 나머지 지역중 우도비가 높은 2, 3번째 군집 파악
QGIS를 플랫폼으로 한 파이썬기반 공간통계 구현 사례 31