R의 deckgl 패키지로 3D 맵 플롯을 플로팅하는 방법에 대한 예제를 제공하려고합니다. Mapbox에서 맵 레이아웃에 막대 플롯을 생성합니다.
먼저 datascienceplus.com에있는 Open Street Map 지오 코딩 기능을 정의합니다. OSM-API (Open Street Map API)를 사용하여 주소 문자열을 경도 및 위도 좌표로 지오 코딩합니다.
## 선적 서류 비치: http://wiki.openstreetmap.org/wiki/Nominatim
# 출처: https://datascienceplus.com/osm-nominatim-with-r-getting-locations-geo-coordinates-by-its-address/
osm_geocoder <- function(address = NULL)
{
if(suppressWarnings(is.null(address)))
return(data.frame())
tryCatch(
d <- jsonlite::fromJSON(
gsub('\\@addr\\@', gsub('\\s+', '\\%20', address),
'http://nominatim.openstreetmap.org/search/@addr@?format=json&addressdetails=0&limit=1')
), error = function(c) return(data.frame())
)
if(length(d) == 0)
return(data.frame())
return(data.frame(lon = as.numeric(d$lon), lat = as.numeric(d$lat)))
}
그런 다음 도시 이름으로 목록을 작성합니다. 이 목록을 지오 코딩 기능에 공급하여 지오 코딩 된 데이터 프레임을 생성합니다.
city_list <- c("Frankfurt, Germany",
"Dortmund, Germany",
"Berlin, Germany",
"Stuttgart, Germany",
"Karlsruhe, Germany",
"Zurich, Switzerland",
"Wien, Austria",
"Bern, Switzerland",
"Munich, Germany",
"Marburg, Germany",
"Giessen, Germany",
"Pforzheim, Germany",
"Cologne, Germany",
"Essen, Germany",
"Heidelberg, Germany",
"Kassel, Germany",
"Paderborn, Germany",
"Leipzig, Germany",
"Dresden, Germany",
"Nuremberg, Germany",
"Augsburg, Germany",
"Regensburg, Germany",
"Pilsen, Czech Republic",
"Linz, Austria",
"Innsbruck, Austria",
"Bamberg, Germany",
"Fulda, Germany",
"Hanover, Germany",
"Wolfsburg, Germany",
"Magdeburg, Germany",
"Jena, Germany",
"Chemnitz, Germany",
"Zwickau, Germany",
"Cottbus, Germany",
"Bautzen, Germany",
"Mainz, Germany",
"Bonn, Germany",
"Duesseldorf, Germany",
"Trier, Germany",
"Mannheim, Germany",
"Aachen, Germany",
"Freiburg, Germany",
"Ulm, Germany",
"Kempten, Germany",
"Ingolstadt, Germany")
# add_grid_layer 함수에 사용할 수있는 데이터 프레임을 생성 할 수 있습니다
data_df_columns <- data.frame(matrix(nrow=3500*length(city_list),ncol=4))
colnames(data_df_columns) <- c("ADDRESS","RACKS","SPACES","COORDINATES")
data_df_columns$RACKS <- 2
data_df_columns$SPACES <- 4
for(i in 1:length(city_list)){
print(i)
dum_coord <- osm_geocoder(city_list[i])
for(j in 1:3500){
data_df_columns$ADDRESS <- paste0(city_list[i]," : ",j)
dum_long <- rnorm(1, mean=as.numeric(dum_coord[1]),sd=0.75)
dum_lat <- rnorm(1,mean=as.numeric(dum_coord[2]),sd=0.75)
data_df_columns$COORDINATES[(i-1)*3500+j] <- list(c(dum_long, dum_lat))
}
}
properties_grid <- list(
pickable = TRUE,
extruded = TRUE,
cellSize = 1600,
elevationScale = 8,
coverage = 0.5,
colorRange = list(c(0,255,255),
c(0,204,255),
c(0,153,255),
c(0,51,255),
c(0,0,255),
c(0,0,204)),
getPosition = JS("data => data.COORDINATES"),
getTooltip = JS("object => object.count")
)
지오 코딩 기능으로 지오 코딩 된 인공적으로 생성 된 공간 데이터 점이있는 데이터 세트가 있으면 R의 deckgl 패키지를 사용하여 플롯 할 수 있습니다.베이스 맵은 Mapbox에서 생성됩니다.
deckgl(zoom = 10, pitch = 120, longitude = 8.682092, latitude = 50.11064) %>%
add_grid_layer(data = data_df_columns,properties = properties_grid) %>%
add_mapbox_basemap(style = "mapbox://styles/linnartsf/cjq6p9q8f8zwf2rp74qf2o3d5")

R에서 공간 데이터 시각화에 대한 다른 게시물을 게시했습니다.

최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply