SlideShare a Scribd company logo
1 of 46
Download to read offline
한국환경생태학회 국보위 – 하계종합학술조사 [Part2]
국립공원관리공단 소백산국립공원북부사무소
유병혁
R 프로그래밍을 이용한
야생동물 행동권(HR) 분석
강의 순서
1. R 설치하기
2. R에서 공간데이터 다루기
3. adehabitatHR 패키지 다루기
[출처] https://terpconnect.umd.edu/~egurarie/teaching/MovementAtICCB2017/index.html
1.
 R
 통계와 데이터 과학에 쓰이는 오픈소스 프로그래밍 언어
 1993년 로버트 젠틀맨(Robert Gentleman), 로스 이하카(Ross Ihaka) 개발
 현재는 R 코어 팀이 개발(중)
 2000년 2월 29일 R 1.0 출시
 2004년 10월 4일 R 2.0 출시
 2013년 4월 3일 R 3.0 출시
R 설치하기
-1. R
1.
 R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
 공식 홈페이지: https://cran.r-project.org/bin/windows/base/
R 설치하기
-2. R 설치하기
1.
 R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
 공식 홈페이지: https://cran.r-project.org/bin/windows/base/
R 설치하기
-2. R 설치하기
1.
 R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
 구성 요소 설치 > ’64-bit 사용자 편의를 위한 쉬운 설치’ 선택
R 설치하기
-2. R 설치하기
1.
 R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)
 R x64 3.5.0 실행 화면
R 설치하기
-2. R 설치하기
2.
 작업 디렉터리
 getwd()
 현재 디렉터리를 반환
 setwd()
 작업 디렉터리를 설정
R에서 공간데이터 다루기
-1. 기본 사용법
# 현재 디렉터리 반환
getwd()
## [1] "C:/Users/User/Documents"
# 작업 디렉터리 변경
setwd("C:/GEODATA")
getwd()
## [1] "C:/GEODATA"
 R 패키지
 Install.packages()
 저장소 또는 로컬 파일에서 패키지 설치
 library() 또는 require()
 이미 설치된 애드온 패키지를 첨부하고 로드
 library()는 패키지를 찾을 수 없는 경우 오류 메시지 표시
# rgdal 패키지 설치
install.packages("rgdal")
# rgdal 패키지 로드
library(rgdal)
require(rgdal)
2.
R에서 공간데이터 다루기
-1. 기본 사용법
2.
 bear.csv 읽기
R에서 공간데이터 다루기
-2. CSV -> Shapefile 변환
# bear csv 읽기
bear <- read.csv("bear.csv", stringsAsFactors = FALSE)
names(bear) # 변수
## [1] "event.id" "visible"
## [3] "timestamp" "location.long"
## [5] "location.lat" "behavioural.classification"
## [7] "comments" "location.error.text"
## [9] "sensor.type" "individual.taxon.canonical.name"
## [11] "tag.local.identifier" "individual.local.identifier"
## [13] "study.name"
head(bear$location.long, 5) # 경도
## [1] 14.32837 14.37175 14.39852 14.41215 14.41260
head(bear$location.lat, 5) # 위도
## [1] 45.88914 45.87072 45.86659 45.88695 45.87476
2.
 Bear Shapefile로 변환
 coordinates()
 공간 좌표를 설정 하여 공간 객체를 생성
 공간 객체에서 공간 좌표 검색
 writeOGR()
 OGR을 이용하여 공간 벡터 데이터 생성
R에서 공간데이터 다루기
-2. CSV -> Shapefile 변환
# 공간 객체 생성을 위한 공간 좌표·좌표계 설정
coordinates(bear) <- ~location.long+location.lat # 공간 좌표 설정
proj4string(bear) <- CRS("+init=epsg:4326") # 좌표 체계 정의
bear <- spTransform(bear, CRS("+init=epsg:3857")) # 좌표 체계 변환
# Shapefile 생성
writeOGR(bear, ".", "Bear", "ESRI Shapefile")
2.
 Bear Shapefile 읽기
 readOGR()
 OGR 벡터 맵을 공간 객체(Spatial Objects)로 읽기
 OGR: GDAL/OGR 라이브러리에서 벡터 파트를 담당
 dsn: 데이터 소스 이름(data source name)
 plot()
 R 객체 플로팅
R에서 공간데이터 다루기
-2. CSV -> Shapefile 변환
# Bear Shapefile 읽기
bear <- readOGR(dsn = ".", layer = "Bear")
# R 객체 플로팅
plot(bear)
2.
 법정구역정보 Shapefile
R에서 공간데이터 다루기
-3. 공간데이터 표출
# 법정구역정보 Shapefile 읽기
adm <- readOGR("gadm36_SVN_0.shp")
# 법정구역정보 플로팅
plot(adm,
main = "Slovenia boundary", # 플롯의 전체 제목
axes=TRUE, # 축 표시
col="green") # 색상
2.
 웹 지도 열기
 bbox()
 점 객체 둘레에 경계 상자(bounding box) 생성
R에서 공간데이터 다루기
-3. 공간데이터 표출
install.packages("ggmap") # ggmap 패키지 설치
require(ggmap) # ggmap 패키지 로드
bbox(adm) # 법정구역정보 경계 상자 생성
mymap <- get_map(bbox(adm),
source="google",
maptype= "terrain", zoom = 8)
ggmap(mymap) # 구글 지형도 열기
mymap <- get_map(bbox(adm),
source="google",
maptype= "satellite",
zoom = 8)
ggmap(mymap)
mymap <- get_map(bbox(adm),
source="google",
maptype= "roadmap",
zoom = 8)
ggmap(mymap)
mymap <- get_map(bbox(adm),
source="google",
maptype= "hybrid",
zoom = 8)
ggmap(mymap)
 웹 지도와 법정 구역 중첩하기
ggmap(mymap) + geom_polygon(data = fortify(adm),
aes(long, lat, group = group),
fill = alpha("orange", .2), colour = "red")
2.
R에서 공간데이터 다루기
-3. 공간데이터 표출
 DSM 열기
 image()
 컬러 이미지(color image) 표시
install.packages("raster") # raster 패키지 설치
require(raster) # raster 패키지 로드
elev <- raster("SVN_DSM_EPSG3857.tif") # 수치표고모델(DSM)
bbox(elev) # 법정구역정보 경계 상자 생성
# DSM 플로팅
plot(elev)
# DSM 컬러 이미징
image(elev, col = terrain.colors(100), asp=1,
xlim=bbox(elev)[1,], ylim=bbox(elev)[2,], main="Elevation")
2.
R에서 공간데이터 다루기
-3. 공간데이터 표출
 좌표참조체계 확인
 projection()
 좌표참조체계(CRS) 확인
require(raster) # raster 패키지 로드
# 좌표참조체계(CRS) 확인
projection(bear) #epsg:3857
## [1] "+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +units=m +no_defs"
projection(adm) #epsg:4326
## [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
2.
R에서 공간데이터 다루기
-3. 공간데이터 표출
 좌표참조체계 변환
 spTransform()
 지도 투영 및 데이텀 변환
# epsg:4326을 epsg:3857로 변환
adm <- spTransform(adm, CRS(projection(bear)))
# CRS 확인
projection(adm)
## [1] "+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +units=m +no_defs"
2.
R에서 공간데이터 다루기
-3. 공간데이터 표출
 DSM과 법정 구역 중첩하기
 lines()
 좌표를 선분(line segments)으로 결합하는 일반 함수
# CRS 확인
projection(elev)
## [1] "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0
+k=1.0 +units=m +nadgrids=@null +no_defs“
projection(adm)
## [1] "+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +units=m
+no_defs“
# 법정구역정보 선분
lines(adm, col="red", lwd=2)
2.
R에서 공간데이터 다루기
-3. 공간데이터 표출
 R 객체의 구조 변경
 str()
 R 객체의 구조를 간단하게 표시
 as.data.frame()
 객체가 데이터 프레임인지 확인, 또는 가능한 경우 강제 변형
# bear 객체의 구조 표시
str(bear)
## Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
# SPDF를 data.frame으로 변경
bear.df <- as.data.frame(bear)
# bear.df 객체의 구조 표시
str(bear.df)
## 'data.frame': 1898 obs. of 13 variables:
2.
R에서 공간데이터 다루기
-4. R 객체 구조
 플롯 매개변수 설정
 par()
 mfrow=c(nrows, ncols)
 하나의 플롯에 nrows*ncols 그림 표시
 c는 연결(concatenate)을 의미
 mar, oma
 내부, 외부 마진 설정
 c(bottom, left, top, right) 형식
# 하나의 플롯에 5*5 그림 표시
# 마진 상단 3; 외부 하단 2, 좌측 2, 상단 4, 우측 2
par(mfrow = c(5,5),
mar = c(0,0,3,0),
oma = c(2,2,4,2))
2.
R에서 공간데이터 다루기
-5. 프레임 분할 플롯
 곰 개별 트랙 플로팅
 ddply()
 데이터 프레임 분할, 함수 적용, 데이터 프레임 내 결과 반환
require(plyr) # plyr 패키지 로드
require(scales) # scales 패키지 로드
# bear.df 개체 플로팅
ddply(bear.df, "tg_lcl_",
function(df){
# 법정구역정보
plot(adm, col="lightgreen", bor=NA,
xlim = range(df$coords.x1), ylim = range(df$coords.x2),
main = df$tg_lcl_[1]); box()
# 곰 좌표
points(df$coords.x1, df$coords.x2, col = alpha("black",.2),
type="o", pch = 19, cex = 0.5)})
2.
R에서 공간데이터 다루기
-5. 프레임 분할 플롯
title("Bear tracks", outer = TRUE)
 곰 전체 트랙 플로팅
# 곰 개체 수 확인
n.bear <- length(unique(bear.df$tg_lcl_))
n.bear
# 법정구역정보 플로팅
plot(adm, main = "Bear tracks", col="grey", bor="grey")
# bear.df 개체 플로팅
palette(rich.colors(n.bear, alpha = 0.5)) # 'col=' 인덱스 정의
ddply(bear.df, "tg_lcl_",
function(df)
lines(df$coords.x1, df$coords.x2, col=df$tg_lcl_[1]))
# 범례
legend("bottomleft", legend = unique(bear.df$tg_lcl_),
col = 1:n.bear, lty = 1, cex = 0.5, bty="n", ncol=2)
2.
R에서 공간데이터 다루기
-6. 프레임 단일 플롯
3.
 행동권 추정 기법
 최소 볼록 다각형
 Mohr, 1947
 커널 밀도 추정법
 전통적 커널 (Worton, 1989)
 Brownian bridge 커널 (Bullard, 1999, Horne et al. 2007)
 Biased random bridge 커널 (Benhamou and Cornelis, 2010, Benhamou, 2011)
 Product 커널 알고리듬 (Keating and Cherry, 2009)
 Single-linkage 군집 알고리듬 (Kenward et al., 2001)
 3종 LoCoH (Local Convex Hull)법 (Getz et al., 2007, Downs and Horner, 2009)
adehabitatHR 패키지 다루기
-1. adehabitatHR 패키지
3.
 DSM과 곰 좌표 중첩하기
 subset()
 조건을 만족하는 데이터 프레임의 하위 집합을 반환
adehabitatHR 패키지 다루기
-2. 구역 통계
# 곰 단일 개체 선택
mybear <- subset(bear.df, tg_lcl_ == "ancka")
# R 객체 구조를 SpatialPoints로 변환
xy.spatial <- SpatialPoints(mybear[,c("coords.x1","coords.x2")])
# DSM을 곰 좌표 크기로 자르기
myelev <- crop(elev, extent(xy.spatial))
# DSM과 곰 좌표 그리기
image(myelev, asp=1, col=terrain.colors(100))
with(mybear, points(coords.x1, coords.x2, type="o", pch = 19, cex = 0.5, col=rgb(0,0,0,.2)))
3.
 고도 값 히스토그램
 hist()
 주어진 값의 히스토그램 계산
 extract()
 좌표와 일치하는 화소값 추출
adehabitatHR 패키지 다루기
-2. 구역 통계
# 곰 좌표 영역의 고도 값 히스토그램
myelev
hist(myelev, col="grey", breaks = seq(200,1200,10),
freq=FALSE, bor="darkgrey", ylim = c(0,0.01))
# 곰 단일 개체의 고도 값 히스토그램
mybear$elev <- extract(myelev, xy.spatial)
hist(mybear$elev, col=rgb(1,0,0,.5), breaks = seq(200,1200,10),
freq=FALSE, bor = "red", add=TRUE)
 Mohr (1947)
 전체 좌표를 감싸는 최소 볼록 다각형
install.packages("adehabitatHR") # adehabitatHR 패키지 설치
require(adehabitatHR) # adehabitatHR 패키지 로드
# 100% MCP
mybear.mcp <- mcp(xy.spatial, 100)
lines(mybear.mcp, col = "red", lwd=2)
# MCP 면적 확인
mybear.mcp
## Object of class "SpatialPolygonsDataFrame" (package sp):
## Number of SpatialPolygons: 1
## Variables measured:
## id area
## a a 34240.29
3.
adehabitatHR 패키지 다루기
-3. 최소 볼록 다각형
# 50% MCP
mybear.mcp <- mcp(xy.spatial, 50)
lines(mybear.mcp, col = "black", lwd=2)
# 95% MCP
mybear.mcp <- mcp(xy.spatial, 95)
lines(mybear.mcp, col = "black", lwd=2)
 Worton (1989)
 전통적 커널
# KDE
mybear.kde <- kernelUD(xy.spatial, h="href")
# KDE 플로팅
plot(mybear.kde)
# KDE 컬러 이미징
image(mybear.kde)
3.
adehabitatHR 패키지 다루기
-4. 커널 밀도 추정법
 Bullard (1999), Horne et al. (2007)
 Brownian bridge 커널
 sig1: 야생동물 속도와 관련된 두번째 평활화 매개변수
 sig2: 위치 데이터의 부정확성과 관련된 첫번째 평활화 매개변수
3.
adehabitatHR 패키지 다루기
-4. 커널 밀도 추정법
감 사 합 니 다

More Related Content

What's hot

3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교
yoonhs306
 

What's hot (20)

공간정보 분야 드론 활용사례 및 오픈드론맵(OpenDroneMap) 소개
공간정보 분야 드론 활용사례 및 오픈드론맵(OpenDroneMap) 소개공간정보 분야 드론 활용사례 및 오픈드론맵(OpenDroneMap) 소개
공간정보 분야 드론 활용사례 및 오픈드론맵(OpenDroneMap) 소개
 
[공간정보시스템 개론] L12 공간정보분석
[공간정보시스템 개론] L12 공간정보분석[공간정보시스템 개론] L12 공간정보분석
[공간정보시스템 개론] L12 공간정보분석
 
QGIS를 활용한 공간분석 입문 ver.1.0
QGIS를 활용한 공간분석 입문 ver.1.0QGIS를 활용한 공간분석 입문 ver.1.0
QGIS를 활용한 공간분석 입문 ver.1.0
 
3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교3 d 그래픽 엔진 비교
3 d 그래픽 엔진 비교
 
[공간정보시스템 개론] L07 원격탐사의 개념과 활용
[공간정보시스템 개론] L07 원격탐사의 개념과 활용[공간정보시스템 개론] L07 원격탐사의 개념과 활용
[공간정보시스템 개론] L07 원격탐사의 개념과 활용
 
지리정보체계(GIS) - [2] 좌표계 이해하기
지리정보체계(GIS) - [2] 좌표계 이해하기지리정보체계(GIS) - [2] 좌표계 이해하기
지리정보체계(GIS) - [2] 좌표계 이해하기
 
공간정보아카데미 QGIS 기초 (2017.5)
공간정보아카데미 QGIS 기초 (2017.5)공간정보아카데미 QGIS 기초 (2017.5)
공간정보아카데미 QGIS 기초 (2017.5)
 
[공간정보시스템 개론] L09 공간 데이터 모델
[공간정보시스템 개론] L09 공간 데이터 모델[공간정보시스템 개론] L09 공간 데이터 모델
[공간정보시스템 개론] L09 공간 데이터 모델
 
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습 공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
공간정보 거점대학 - OpenLayers의 고급 기능 이해 및 실습
 
QGIS 활용
QGIS 활용QGIS 활용
QGIS 활용
 
QGIS 실습 (총 7차시)
QGIS 실습 (총 7차시)QGIS 실습 (총 7차시)
QGIS 실습 (총 7차시)
 
공간정보연구원 PostGIS 강의교재
공간정보연구원 PostGIS 강의교재공간정보연구원 PostGIS 강의교재
공간정보연구원 PostGIS 강의교재
 
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
게임엔진과 공간정보 3D 콘텐츠 융합 : Cesium for Unreal
 
[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해[공간정보시스템 개론] L06 GIS의 이해
[공간정보시스템 개론] L06 GIS의 이해
 
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
[FOSS4G Korea 2021]Workshop-QGIS-TIPS-20211028
 
QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현 QGIS 고급 및 PyQGIS - 김기웅, 임영현
QGIS 고급 및 PyQGIS - 김기웅, 임영현
 
오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초오픈소스GIS 개론 과정 - OpenLayers 기초
오픈소스GIS 개론 과정 - OpenLayers 기초
 
Open Source GIS 기초교육 4일차 - GeoServer 기초 2014년 7월판
Open Source GIS 기초교육 4일차 - GeoServer 기초 2014년 7월판Open Source GIS 기초교육 4일차 - GeoServer 기초 2014년 7월판
Open Source GIS 기초교육 4일차 - GeoServer 기초 2014년 7월판
 
QGIS 개요
QGIS 개요QGIS 개요
QGIS 개요
 
S07 파크랩 DSLab.1기: QGIS: Python 종 분포 모델링(SDM)
S07 파크랩 DSLab.1기: QGIS: Python 종 분포 모델링(SDM)S07 파크랩 DSLab.1기: QGIS: Python 종 분포 모델링(SDM)
S07 파크랩 DSLab.1기: QGIS: Python 종 분포 모델링(SDM)
 

Similar to R 프로그래밍을 이용한 야생동물 행동권(HR) 분석

Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
Sung Yub Kim
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2
KoChungWook
 

Similar to R 프로그래밍을 이용한 야생동물 행동권(HR) 분석 (20)

R 스터디 첫번째
R 스터디 첫번째R 스터디 첫번째
R 스터디 첫번째
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 
Python machine learning Ch.4
Python machine learning Ch.4Python machine learning Ch.4
Python machine learning Ch.4
 
R project_pt1
R project_pt1R project_pt1
R project_pt1
 
R intro
R introR intro
R intro
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 
osgeo 봄 세미나 -R
osgeo 봄 세미나 -Rosgeo 봄 세미나 -R
osgeo 봄 세미나 -R
 
R 스터디 두번째
R 스터디 두번째R 스터디 두번째
R 스터디 두번째
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째
 
3ds maxscript 튜토리얼_20151206_서진택
3ds maxscript 튜토리얼_20151206_서진택3ds maxscript 튜토리얼_20151206_서진택
3ds maxscript 튜토리얼_20151206_서진택
 
스플렁크 머신러닝 연동
스플렁크 머신러닝 연동스플렁크 머신러닝 연동
스플렁크 머신러닝 연동
 
스플렁크 Machine Learning Integration
스플렁크 Machine Learning Integration스플렁크 Machine Learning Integration
스플렁크 Machine Learning Integration
 
Python
PythonPython
Python
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
R 스터디 세번째
R 스터디 세번째R 스터디 세번째
R 스터디 세번째
 
Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약
 
bsSelector (GDG DevFest 2014)
bsSelector (GDG DevFest 2014)bsSelector (GDG DevFest 2014)
bsSelector (GDG DevFest 2014)
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 

More from Byeong-Hyeok Yu

QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑
QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑
QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑
Byeong-Hyeok Yu
 

More from Byeong-Hyeok Yu (20)

S04 파크랩 DSLab.1기: 카토그램 (Cartogram)
S04 파크랩 DSLab.1기: 카토그램 (Cartogram)S04 파크랩 DSLab.1기: 카토그램 (Cartogram)
S04 파크랩 DSLab.1기: 카토그램 (Cartogram)
 
S03 파크랩 DSLab.1기: 도형 속성 (Geometry attributes)
S03 파크랩 DSLab.1기: 도형 속성 (Geometry attributes)S03 파크랩 DSLab.1기: 도형 속성 (Geometry attributes)
S03 파크랩 DSLab.1기: 도형 속성 (Geometry attributes)
 
QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑
QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑
QGIS: 위성영상을 사용한 개벌지(clear-cut) 탐지 및 매핑
 
S02 파크랩 DSLab.1기: 벡터 데이터 모델(Vector data models)
S02 파크랩 DSLab.1기: 벡터 데이터 모델(Vector data models)S02 파크랩 DSLab.1기: 벡터 데이터 모델(Vector data models)
S02 파크랩 DSLab.1기: 벡터 데이터 모델(Vector data models)
 
S01 파크랩 DSLab.1기: 지리 데이터 모델(Geographic data models)
S01 파크랩 DSLab.1기: 지리 데이터 모델(Geographic data models)S01 파크랩 DSLab.1기: 지리 데이터 모델(Geographic data models)
S01 파크랩 DSLab.1기: 지리 데이터 모델(Geographic data models)
 
Resolutions and Sensors of Satellites
Resolutions and Sensors of SatellitesResolutions and Sensors of Satellites
Resolutions and Sensors of Satellites
 
공간정보 스터디 2주차
공간정보 스터디 2주차공간정보 스터디 2주차
공간정보 스터디 2주차
 
공간정보 스터디 1주차
공간정보 스터디 1주차공간정보 스터디 1주차
공간정보 스터디 1주차
 
오픈드론맵 한국어 사용자 지침서
오픈드론맵 한국어 사용자 지침서오픈드론맵 한국어 사용자 지침서
오픈드론맵 한국어 사용자 지침서
 
생태계서비스 가치평가를 위한 국립공원 경관 질 모형 개선 연구
생태계서비스 가치평가를 위한 국립공원 경관 질 모형 개선 연구생태계서비스 가치평가를 위한 국립공원 경관 질 모형 개선 연구
생태계서비스 가치평가를 위한 국립공원 경관 질 모형 개선 연구
 
오픈소스를 활용한 영상처리 세미나
오픈소스를 활용한 영상처리 세미나오픈소스를 활용한 영상처리 세미나
오픈소스를 활용한 영상처리 세미나
 
지리정보체계(GIS) - [3] Open GeoData 처리
지리정보체계(GIS) - [3] Open GeoData 처리지리정보체계(GIS) - [3] Open GeoData 처리
지리정보체계(GIS) - [3] Open GeoData 처리
 
PostGIS 시작하기
PostGIS 시작하기PostGIS 시작하기
PostGIS 시작하기
 
QGIS 3.0 새 기능 둘러보기
QGIS 3.0 새 기능 둘러보기QGIS 3.0 새 기능 둘러보기
QGIS 3.0 새 기능 둘러보기
 
오픈소스 GIS 실습 (5)
오픈소스 GIS 실습 (5)오픈소스 GIS 실습 (5)
오픈소스 GIS 실습 (5)
 
오픈소스 GIS 실습 (3)
오픈소스 GIS 실습 (3)오픈소스 GIS 실습 (3)
오픈소스 GIS 실습 (3)
 
오픈소스 GIS 실습 (2)
오픈소스 GIS 실습 (2)오픈소스 GIS 실습 (2)
오픈소스 GIS 실습 (2)
 
오픈소스 GIS 실습 (1)
오픈소스 GIS 실습 (1)오픈소스 GIS 실습 (1)
오픈소스 GIS 실습 (1)
 
OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개
OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개
OpenDroneMap과 QGIS를 이용한 드론 영상처리 소개
 
FOSS4G Korea 2016: 국립공원 훼손지 조사를 위한 UAV와 오픈소스 지리공간 소프트웨어 활용
FOSS4G Korea 2016: 국립공원 훼손지 조사를 위한 UAV와 오픈소스 지리공간 소프트웨어 활용FOSS4G Korea 2016: 국립공원 훼손지 조사를 위한 UAV와 오픈소스 지리공간 소프트웨어 활용
FOSS4G Korea 2016: 국립공원 훼손지 조사를 위한 UAV와 오픈소스 지리공간 소프트웨어 활용
 

R 프로그래밍을 이용한 야생동물 행동권(HR) 분석

  • 1. 한국환경생태학회 국보위 – 하계종합학술조사 [Part2] 국립공원관리공단 소백산국립공원북부사무소 유병혁 R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
  • 2. 강의 순서 1. R 설치하기 2. R에서 공간데이터 다루기 3. adehabitatHR 패키지 다루기
  • 4. 1.  R  통계와 데이터 과학에 쓰이는 오픈소스 프로그래밍 언어  1993년 로버트 젠틀맨(Robert Gentleman), 로스 이하카(Ross Ihaka) 개발  현재는 R 코어 팀이 개발(중)  2000년 2월 29일 R 1.0 출시  2004년 10월 4일 R 2.0 출시  2013년 4월 3일 R 3.0 출시 R 설치하기 -1. R
  • 5. 1.  R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)  공식 홈페이지: https://cran.r-project.org/bin/windows/base/ R 설치하기 -2. R 설치하기
  • 6. 1.  R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)  공식 홈페이지: https://cran.r-project.org/bin/windows/base/ R 설치하기 -2. R 설치하기
  • 7. 1.  R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)  구성 요소 설치 > ’64-bit 사용자 편의를 위한 쉬운 설치’ 선택 R 설치하기 -2. R 설치하기
  • 8. 1.  R 3.5.0 for Windows 다운로드 (62MB, 32/64 bit)  R x64 3.5.0 실행 화면 R 설치하기 -2. R 설치하기
  • 9. 2.  작업 디렉터리  getwd()  현재 디렉터리를 반환  setwd()  작업 디렉터리를 설정 R에서 공간데이터 다루기 -1. 기본 사용법 # 현재 디렉터리 반환 getwd() ## [1] "C:/Users/User/Documents" # 작업 디렉터리 변경 setwd("C:/GEODATA") getwd() ## [1] "C:/GEODATA"
  • 10.  R 패키지  Install.packages()  저장소 또는 로컬 파일에서 패키지 설치  library() 또는 require()  이미 설치된 애드온 패키지를 첨부하고 로드  library()는 패키지를 찾을 수 없는 경우 오류 메시지 표시 # rgdal 패키지 설치 install.packages("rgdal") # rgdal 패키지 로드 library(rgdal) require(rgdal) 2. R에서 공간데이터 다루기 -1. 기본 사용법
  • 11. 2.  bear.csv 읽기 R에서 공간데이터 다루기 -2. CSV -> Shapefile 변환 # bear csv 읽기 bear <- read.csv("bear.csv", stringsAsFactors = FALSE) names(bear) # 변수 ## [1] "event.id" "visible" ## [3] "timestamp" "location.long" ## [5] "location.lat" "behavioural.classification" ## [7] "comments" "location.error.text" ## [9] "sensor.type" "individual.taxon.canonical.name" ## [11] "tag.local.identifier" "individual.local.identifier" ## [13] "study.name" head(bear$location.long, 5) # 경도 ## [1] 14.32837 14.37175 14.39852 14.41215 14.41260 head(bear$location.lat, 5) # 위도 ## [1] 45.88914 45.87072 45.86659 45.88695 45.87476
  • 12. 2.  Bear Shapefile로 변환  coordinates()  공간 좌표를 설정 하여 공간 객체를 생성  공간 객체에서 공간 좌표 검색  writeOGR()  OGR을 이용하여 공간 벡터 데이터 생성 R에서 공간데이터 다루기 -2. CSV -> Shapefile 변환 # 공간 객체 생성을 위한 공간 좌표·좌표계 설정 coordinates(bear) <- ~location.long+location.lat # 공간 좌표 설정 proj4string(bear) <- CRS("+init=epsg:4326") # 좌표 체계 정의 bear <- spTransform(bear, CRS("+init=epsg:3857")) # 좌표 체계 변환 # Shapefile 생성 writeOGR(bear, ".", "Bear", "ESRI Shapefile")
  • 13. 2.  Bear Shapefile 읽기  readOGR()  OGR 벡터 맵을 공간 객체(Spatial Objects)로 읽기  OGR: GDAL/OGR 라이브러리에서 벡터 파트를 담당  dsn: 데이터 소스 이름(data source name)  plot()  R 객체 플로팅 R에서 공간데이터 다루기 -2. CSV -> Shapefile 변환 # Bear Shapefile 읽기 bear <- readOGR(dsn = ".", layer = "Bear") # R 객체 플로팅 plot(bear)
  • 14.
  • 15. 2.  법정구역정보 Shapefile R에서 공간데이터 다루기 -3. 공간데이터 표출 # 법정구역정보 Shapefile 읽기 adm <- readOGR("gadm36_SVN_0.shp") # 법정구역정보 플로팅 plot(adm, main = "Slovenia boundary", # 플롯의 전체 제목 axes=TRUE, # 축 표시 col="green") # 색상
  • 16.
  • 17. 2.  웹 지도 열기  bbox()  점 객체 둘레에 경계 상자(bounding box) 생성 R에서 공간데이터 다루기 -3. 공간데이터 표출 install.packages("ggmap") # ggmap 패키지 설치 require(ggmap) # ggmap 패키지 로드 bbox(adm) # 법정구역정보 경계 상자 생성 mymap <- get_map(bbox(adm), source="google", maptype= "terrain", zoom = 8) ggmap(mymap) # 구글 지형도 열기
  • 18.
  • 19. mymap <- get_map(bbox(adm), source="google", maptype= "satellite", zoom = 8) ggmap(mymap) mymap <- get_map(bbox(adm), source="google", maptype= "roadmap", zoom = 8) ggmap(mymap) mymap <- get_map(bbox(adm), source="google", maptype= "hybrid", zoom = 8) ggmap(mymap)
  • 20.  웹 지도와 법정 구역 중첩하기 ggmap(mymap) + geom_polygon(data = fortify(adm), aes(long, lat, group = group), fill = alpha("orange", .2), colour = "red") 2. R에서 공간데이터 다루기 -3. 공간데이터 표출
  • 21.
  • 22.  DSM 열기  image()  컬러 이미지(color image) 표시 install.packages("raster") # raster 패키지 설치 require(raster) # raster 패키지 로드 elev <- raster("SVN_DSM_EPSG3857.tif") # 수치표고모델(DSM) bbox(elev) # 법정구역정보 경계 상자 생성 # DSM 플로팅 plot(elev) # DSM 컬러 이미징 image(elev, col = terrain.colors(100), asp=1, xlim=bbox(elev)[1,], ylim=bbox(elev)[2,], main="Elevation") 2. R에서 공간데이터 다루기 -3. 공간데이터 표출
  • 23.
  • 24.  좌표참조체계 확인  projection()  좌표참조체계(CRS) 확인 require(raster) # raster 패키지 로드 # 좌표참조체계(CRS) 확인 projection(bear) #epsg:3857 ## [1] "+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +units=m +no_defs" projection(adm) #epsg:4326 ## [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0" 2. R에서 공간데이터 다루기 -3. 공간데이터 표출
  • 25.  좌표참조체계 변환  spTransform()  지도 투영 및 데이텀 변환 # epsg:4326을 epsg:3857로 변환 adm <- spTransform(adm, CRS(projection(bear))) # CRS 확인 projection(adm) ## [1] "+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +units=m +no_defs" 2. R에서 공간데이터 다루기 -3. 공간데이터 표출
  • 26.  DSM과 법정 구역 중첩하기  lines()  좌표를 선분(line segments)으로 결합하는 일반 함수 # CRS 확인 projection(elev) ## [1] "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs“ projection(adm) ## [1] "+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +units=m +no_defs“ # 법정구역정보 선분 lines(adm, col="red", lwd=2) 2. R에서 공간데이터 다루기 -3. 공간데이터 표출
  • 27.
  • 28.  R 객체의 구조 변경  str()  R 객체의 구조를 간단하게 표시  as.data.frame()  객체가 데이터 프레임인지 확인, 또는 가능한 경우 강제 변형 # bear 객체의 구조 표시 str(bear) ## Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots # SPDF를 data.frame으로 변경 bear.df <- as.data.frame(bear) # bear.df 객체의 구조 표시 str(bear.df) ## 'data.frame': 1898 obs. of 13 variables: 2. R에서 공간데이터 다루기 -4. R 객체 구조
  • 29.  플롯 매개변수 설정  par()  mfrow=c(nrows, ncols)  하나의 플롯에 nrows*ncols 그림 표시  c는 연결(concatenate)을 의미  mar, oma  내부, 외부 마진 설정  c(bottom, left, top, right) 형식 # 하나의 플롯에 5*5 그림 표시 # 마진 상단 3; 외부 하단 2, 좌측 2, 상단 4, 우측 2 par(mfrow = c(5,5), mar = c(0,0,3,0), oma = c(2,2,4,2)) 2. R에서 공간데이터 다루기 -5. 프레임 분할 플롯
  • 30.  곰 개별 트랙 플로팅  ddply()  데이터 프레임 분할, 함수 적용, 데이터 프레임 내 결과 반환 require(plyr) # plyr 패키지 로드 require(scales) # scales 패키지 로드 # bear.df 개체 플로팅 ddply(bear.df, "tg_lcl_", function(df){ # 법정구역정보 plot(adm, col="lightgreen", bor=NA, xlim = range(df$coords.x1), ylim = range(df$coords.x2), main = df$tg_lcl_[1]); box() # 곰 좌표 points(df$coords.x1, df$coords.x2, col = alpha("black",.2), type="o", pch = 19, cex = 0.5)}) 2. R에서 공간데이터 다루기 -5. 프레임 분할 플롯
  • 31.
  • 33.  곰 전체 트랙 플로팅 # 곰 개체 수 확인 n.bear <- length(unique(bear.df$tg_lcl_)) n.bear # 법정구역정보 플로팅 plot(adm, main = "Bear tracks", col="grey", bor="grey") # bear.df 개체 플로팅 palette(rich.colors(n.bear, alpha = 0.5)) # 'col=' 인덱스 정의 ddply(bear.df, "tg_lcl_", function(df) lines(df$coords.x1, df$coords.x2, col=df$tg_lcl_[1])) # 범례 legend("bottomleft", legend = unique(bear.df$tg_lcl_), col = 1:n.bear, lty = 1, cex = 0.5, bty="n", ncol=2) 2. R에서 공간데이터 다루기 -6. 프레임 단일 플롯
  • 34.
  • 35. 3.  행동권 추정 기법  최소 볼록 다각형  Mohr, 1947  커널 밀도 추정법  전통적 커널 (Worton, 1989)  Brownian bridge 커널 (Bullard, 1999, Horne et al. 2007)  Biased random bridge 커널 (Benhamou and Cornelis, 2010, Benhamou, 2011)  Product 커널 알고리듬 (Keating and Cherry, 2009)  Single-linkage 군집 알고리듬 (Kenward et al., 2001)  3종 LoCoH (Local Convex Hull)법 (Getz et al., 2007, Downs and Horner, 2009) adehabitatHR 패키지 다루기 -1. adehabitatHR 패키지
  • 36. 3.  DSM과 곰 좌표 중첩하기  subset()  조건을 만족하는 데이터 프레임의 하위 집합을 반환 adehabitatHR 패키지 다루기 -2. 구역 통계 # 곰 단일 개체 선택 mybear <- subset(bear.df, tg_lcl_ == "ancka") # R 객체 구조를 SpatialPoints로 변환 xy.spatial <- SpatialPoints(mybear[,c("coords.x1","coords.x2")]) # DSM을 곰 좌표 크기로 자르기 myelev <- crop(elev, extent(xy.spatial)) # DSM과 곰 좌표 그리기 image(myelev, asp=1, col=terrain.colors(100)) with(mybear, points(coords.x1, coords.x2, type="o", pch = 19, cex = 0.5, col=rgb(0,0,0,.2)))
  • 37.
  • 38. 3.  고도 값 히스토그램  hist()  주어진 값의 히스토그램 계산  extract()  좌표와 일치하는 화소값 추출 adehabitatHR 패키지 다루기 -2. 구역 통계 # 곰 좌표 영역의 고도 값 히스토그램 myelev hist(myelev, col="grey", breaks = seq(200,1200,10), freq=FALSE, bor="darkgrey", ylim = c(0,0.01)) # 곰 단일 개체의 고도 값 히스토그램 mybear$elev <- extract(myelev, xy.spatial) hist(mybear$elev, col=rgb(1,0,0,.5), breaks = seq(200,1200,10), freq=FALSE, bor = "red", add=TRUE)
  • 39.
  • 40.  Mohr (1947)  전체 좌표를 감싸는 최소 볼록 다각형 install.packages("adehabitatHR") # adehabitatHR 패키지 설치 require(adehabitatHR) # adehabitatHR 패키지 로드 # 100% MCP mybear.mcp <- mcp(xy.spatial, 100) lines(mybear.mcp, col = "red", lwd=2) # MCP 면적 확인 mybear.mcp ## Object of class "SpatialPolygonsDataFrame" (package sp): ## Number of SpatialPolygons: 1 ## Variables measured: ## id area ## a a 34240.29 3. adehabitatHR 패키지 다루기 -3. 최소 볼록 다각형
  • 41.
  • 42. # 50% MCP mybear.mcp <- mcp(xy.spatial, 50) lines(mybear.mcp, col = "black", lwd=2) # 95% MCP mybear.mcp <- mcp(xy.spatial, 95) lines(mybear.mcp, col = "black", lwd=2)
  • 43.  Worton (1989)  전통적 커널 # KDE mybear.kde <- kernelUD(xy.spatial, h="href") # KDE 플로팅 plot(mybear.kde) # KDE 컬러 이미징 image(mybear.kde) 3. adehabitatHR 패키지 다루기 -4. 커널 밀도 추정법
  • 44.
  • 45.  Bullard (1999), Horne et al. (2007)  Brownian bridge 커널  sig1: 야생동물 속도와 관련된 두번째 평활화 매개변수  sig2: 위치 데이터의 부정확성과 관련된 첫번째 평활화 매개변수 3. adehabitatHR 패키지 다루기 -4. 커널 밀도 추정법
  • 46. 감 사 합 니 다