일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 링크타운
- R프로그램
- python 기초
- 얀겔
- 얀겔의 위대한 실험
- FUJIx100f
- 일본
- R통계
- FUJIJILM
- 타지리초
- x100f
- 정선 가볼만한 곳
- 산업연관분석
- 오타루
- 산업연관표
- 건담프라모델
- 다시장인인다
- 지구정치학담론
- 트랜지션타운
- 지속가능한개발
- 통계
- 일본연구
- 사북 석탄
- 짱구는 못말려 15기
- 문화
- nofilter
- python
- 오사카생활
- #협력적계획이론 #패치힐리 #도시계획이론
- Greeen
- Today
- Total
우리가 살아가는 도시
[R programming] R에서 Spatial 본문
library(GISTools)
# GISTools 패키지의 데이터 탐색
data(newhaven)
ls() #ls() : 현재 워크스페이스에서 사용하는 변수 객체들의 리스트를 검색한다.
#변수들을 검색하여 찾을 경우 pattern인수에 값을 regular expression으로 넣어주면 찾을 수 있다.
#object()함수를 사용해서 ls()와 같은 결과를 도출할 수 있다.
#변수들이 상세한 구조를 확인하기 위해서는 ls.str()함수를 이용하여 세부적인 내용을 확인할 수 있다.
ls.str()
head(data.frame(blocks)) #data.frame : 자료 객체들을 결합하여 데이터 프레임을 생성
#head() 데이터세트중의 일부 데이터를 호출한다. 첫 5줄만 출력하기 위해 head명령어를 사용
#data(mtcars)
#mode(mtcars)
#head(mtcars)
#head(data.frame(mtcars$mpg))
#x<-data.frame(mtcars)
#x
colnames(data.frame(blocks))
class(blocks)
write.csv(blocks,"blocks.csv") #데이터 내보내기
# Connecticut의 New Haven의 센서스 블럭에 도로 겹쳐 그리기
par(mar = c(0,0,0,0))
plot(blocks)
plot(roads, add=TRUE, col="red")
# Connecticut의 New Haven의 센서스 블럭에 범죄 발생 현장 표시
plot(blocks, lwd = 0.5, border = "grey50")
plot(breach, col = "red", pch = 1, add = TRUE)
#지도에 스케일 표시
map.scale(534750,152000,miles2ft(2),"Miles",4,0.5)
# 화살표 표시
north.arrow(534750,154000,miles2ft(0.25),col= "lightblue")
title('New Haven, CT.' )
getwd() #현재 설정된 워킹 디렉토리 확인하기
setwd() #새로운 워킹 디렉토리 지정하기
#2. 공간 객체 매핑
rm(list=ls())
library(GISTools)
data(georgia)
write.csv(georgia,"georgia.csv")
# Georgia
par(mar=c(5,4,4,2))
georgia.outline <- gUnaryUnion(georgia, id = NULL) # 주 경계선 추출
georgia.outline
plot(georgia, col = "yellow", bg = "wheat", lty = 5, border = "red")
plot(georgia.outline, lwd = 3, add = TRUE) # 경계선 표시
title(main = "The State of Georgia", font.main = 2, cex.main = 3.5,sub = "and its counties", font.sub = 6, col.sub = "blue") # 제목 추가
# 좌표지정
Lat <- data.frame(georgia)[,1] #Y or North/South
Lon <- data.frame(georgia)[,2] #X or East/West
# county명을 라벨로 지정
Names <- data.frame(georgia)[,13]
# 지도에 라벨 표시
par(mar = c(0,0,0,0)) #plot영역의 마진을 설정
plot(georgia, col = NA)
pl <- pointLabel(Lon, Lat, Names, offset = 0, cex =.5)
######################################################################################################################################
# 일부의 county 추출
county.tmp <- c(81, 82, 83, 150, 62, 53, 21, 16, 124, 121, 17)
county.tmp
georgia.sub <- georgia[county.tmp,]
georgia.sub
write.csv(georgia.sub,"sub.csv")
# 추출된 county들만 지도에 표시
par(mar = c(0,0,3,0))
plot(georgia.sub, col = "gold1", border = "grey")
plot(georgia.outline, add = TRUE, lwd = 2)
title("A subset of Georgia", cex.main = 2, font.main = 1)
pl <- pointLabel(Lon[county.tmp], Lat[county.tmp],Names[county.tmp], offset = 3, cex = 1.5)
# Georgia 전체 지도에서 추출된 county 표시
plot(georgia, border = "grey", lwd = 0.5)
plot(georgia.sub, add = TRUE, col = "lightblue")
plot(georgia.outline, lwd = 2, add = TRUE)
title("Georgia with a subset of counties")
## OpenStreetMap 패키지
library(OpenStreetMap)
# 왼쪽 위와 오른쪽 아래 모서리 지정
ul <- as.vector(cbind(bbox(georgia.sub)[2,2], bbox(georgia.sub)[1,1]))
lr <- as.vector(cbind(bbox(georgia.sub)[2,1], bbox(georgia.sub)[1,2]))
# 오픈맵 내려받기
MyMap <- openmap(ul,lr,9,'mapquest')
par(mar = c(0,0,0,0))
plot(MyMap, removeMargin=FALSE) # 배경 그리기
plot(spTransform(georgia.sub, osm()), add = TRUE, lwd = 2) # 주 경계선 그리기
## RgoogleMaps 패키지
library(RgoogleMaps)
library(maptools)
# 추출된 county들을 PolySet 형식으로 변환
shp <- SpatialPolygons2PolySet(georgia.sub)
# 추출된 county들을 범위
bb <- qbbox(lat = shp[,"Y"], lon = shp[,"X"])
# 지도 데이터를 내려받아 DC.jpg로 저장
MyMap <- GetMap.bbox(bb$lonR, bb$latR, destfile = "DC.jpg")
par(mar = c(0,0,0,0))
PlotPolysOnStaticMap(MyMap, shp, lwd=2,col = rgb(0.25,0.25,0.25,0.025), add = F)
출처: 서울시립대학교 통계학과 박창이 교수님(http://http://statlearn.uos.ac.kr/)
'내가 알아가는 도시 > R programming' 카테고리의 다른 글
[R programming] 결측값 (0) | 2017.01.26 |
---|---|
[R programming] 역행렬, 행렬식 구하기 (0) | 2017.01.26 |
[R programming] 미분 (0) | 2017.01.26 |