대학원 일기

7장: 지도 활용 코드 본문

School/Data Mining and Statistics

7장: 지도 활용 코드

대학원생(노예) 2023. 10. 16. 01:29
# 7.3 구글맵 출력

# 서울 세종문화회관 중심의 지도 출력
install.packages("ggmap")
library(ggmap)

register_google(key = "AIzaSyArvHGLtU8GiCRPk03Rg9GYImfDNt91gzo")

map <- get_googlemap(center=c(126.975684, 37.572752))
ggmap(map)

# 지도 유형 변경: maptype
map <- get_googlemap(center=c(126.975684, 37.572752), maptype="roadmap")
ggmap(map)

# 지도 확대 및 축소: zoom
map <- get_googlemap(center=c(126.975684, 37.572752),
                     maptype="roadmap",
                     zoom=17)
ggmap(map)

# 지도 해상도 size
map <- get_googlemap(center=c(126.975684, 37.572752),
                     maptype="roadmap",
                     zoom=17,
                     size=c(320, 320))
ggmap(map)

# 지도 여백: extent
map <- get_googlemap(center=c(126.975684, 37.572752),
                     maptype="roadmap",
                     zoom=17,
                     size=c(320, 320))
ggmap(map, extent="device")

# 주소 이용 지도 출력: geocode()
gc <- geocode(enc2utf8("호미곶"))
gc

lonlat <- c(gc$lon, gc$lat)
lonlat

map <- get_googlemap(center=lonlat)
ggmap(map)

# 마커 출력: marker
gc <- geocode(enc2utf8("호미곶"))
lonlat <- c(gc$lon, gc$lat)
map <- get_googlemap(center=lonlat, marker=gc) 
ggmap(map)

# 7.4 단양팔경을 지도 위에

# 단양팔경 위치의 마커 출력
# install.packages("extrafont")
# library(extrafont)
# font_import()

# par(family="AppleGothic")

# install.packages("ggmap")
install.packages("ggplot2")
library(ggmap)
library(ggplot2)

register_google(key = "AIzaSyArvHGLtU8GiCRPk03Rg9GYImfDNt91gzo")
names <- c("도담삼봉/석문", 
           "구담/옥순봉", 
           "사인암", 
           "하선암", 
           "중선암", 
           "상선암")
addr <- c("충청북도 단양군 매포읍 삼봉로 644-33",
          "충청북도 단양군 단성면 월악로 3827",
          "충청북도 단양군 대강면 사인암2길 42",
          "충청북도 단양군 단성면 선암계곡로 1337",
          "충청북도 단양군 단성면 선암계곡로 868-2",
          "충청북도 단양군 단성면 선암계곡로 790")
# 주소를 위도 경도로
gc <- geocode(enc2utf8(addr))
gc

df <- data.frame(name=names, lon=gc$lon, lat=gc$lat)
df

# 가운데 지점
cen <- c((max(df$lon)+min(df$lon))/2,
         (max(df$lat)+min(df$lat))/2)
cen

map <- get_googlemap(center=cen,
                     maptype="roadmap",
                     zoom=12,
                     marker=gc)
ggmap(map)

# 단양 팔경 이름 출력: geom_t
gmap <- ggmap(map)
gmap + geom_text(data=df,
                 aes(x=lon, y=lat),
                 size=5,
                 label=df$name)

# 7.5 지진 발생 지역 분포
# 지진데이터 다운로드 
# 기상청 (www.weather.go.kr) -> "지진.화산"
# 발생기간 선택 (2017.01.01 ~ 2021.11.08, 3.0이상)

# 지진 지역 출력
# install.packages("ggmap")
# install.packages("ggplot2")
install.packages("readxl")
install.packages("openxlsx")
library(ggmap)
library(ggplot2)
library(readxl)
library(openxlsx)

register_google(key = "AIzaSyArvHGLtU8GiCRPk03Rg9GYImfDNt91gzo")
df <- read.xlsx(file.choose(), sheet = 1, startRow = 4)
# df <- read_excel(file.choose(), sheet = 1, range = 4)
head(df)

tail(df)

df[,6] <- gsub(" N", "", df[,6])
df[,7] <- gsub(" E", "", df[,7])
df2 <- data.frame(lon=df[,7], lat=df[,6], mag=df[,3])
str(df2)

df2[,1] <- as.numeric(as.character(df2[,1]))
df2[,2] <- as.numeric(as.character(df2[,2]))
df2[,3] <- as.numeric(as.character(df2[,3]))
str(df2)

cen <- c((max(df2$lon)+min(df2$lon))/2,
         (max(df2$lat)+min(df2$lat))/2)
cen

map <- get_googlemap(center=cen, zoom=6)
gmap <- ggmap(map)
gmap + geom_point(data=df2,
                  aes(x=lon, y=lat),
                  color="red",
                  size=df2$mag,
                  alpha=0.5)

'School > Data Mining and Statistics' 카테고리의 다른 글

9장: OPEN API  (0) 2023.10.16
8장: 웹 스크래핑 코드  (0) 2023.10.16
연속 확률 분포  (0) 2023.10.16
이산형 확률 분포  (0) 2023.10.16
데이터마이닝과 통계  (0) 2023.04.19
Comments