【问题标题】:Can you switch from tmap to leaflet?您可以从 tmap 切换到传单吗?
【发布时间】:2020-10-09 20:31:39
【问题描述】:

我想看看你是否可以创建一个tmap地图,将其转换为传单地图,然后添加传单特征。

例如:


battle_dat<-read.csv("GeoBattleData_YZ.csv") # from https://doi.org/10.7910/DVN/1KCCX2


battle_dat<-battle_dat %>% select(war,atkr,defr,date,long,lat,dist_att,dist_def,duration) %>% 
  mutate(year=substr(date,1,4))


battle_dat<-battle_dat[!is.na(battle_dat$long),]
battle_dat<-SpatialPointsDataFrame(coords = battle_dat[,c(5:6)],data = battle_dat,proj4string=CRS("+init=EPSG:4326"))
tm<-tm_shape(dat) + tm_dots(col="duration") # make tmap

tm<-tmap_leaflet(tm) # convert to leaflet

tm %>%

addDrawToolbar(

targetGroup='draw',

polylineOptions=FALSE,

markerOptions = FALSE,

circleOptions = T,

polygonOptions=F,

singleFeature=T,

circleMarkerOptions=F)

我收到以下错误:

“调度错误(地图,方法,传单= {:无效的地图参数”

所以,我不确定这是否是我的问题,或者我根本无法做我想做的事情。这没什么大不了的,但我发现在 tmap 中做一些事情和在传单中做其他事情更容易。

【问题讨论】:

    标签: r leaflet tmap


    【解决方案1】:

    使用 tmap 包中的 qtm 我可以制作战斗站点的基本情节:

    library(tidyverse)
    library(tmap)
    library(leaflet)
    library(leaflet.extras)
    library(sp)
    
    GeoBattleData_YZ <- read.csv("GeoBattleData_YZ.csv") # from https://doi.org/10.7910/DVN/1KCCX2
    
    
    battle_dat<-GeoBattleData_YZ %>% 
      select(war,atkr,defr,date,long,lat,dist_att,dist_def,duration) %>% 
      mutate(year=substr(date,1,4))
    
    
    battle_dat<-battle_dat[!is.na(battle_dat$long),]
    
    battle_dat<-SpatialPointsDataFrame(coords = battle_dat[,c(5:6)],
                                       data = battle_dat,
                                       proj4string = CRS("+init=EPSG:4326"))
    
    tm <-qtm(battle_dat, 
             symbols.col = 'duration')
    
    tm
    
    map<-tmap_leaflet(tm) %>%
    
      addDrawToolbar(
        targetGroup='draw',
        polylineOptions=FALSE,
        markerOptions = FALSE,
        circleOptions = T,
        polygonOptions=F,
        singleFeature=T,
        circleMarkerOptions=F)
    map
    

    我认为,您的示例应该在您的初始 tm_shape(dat) 行中调用 Battle_dat 而不是 dat。

    【讨论】:

    • 这行得通!你知道为什么它适用于qtm 而不是我的例子吗? (忽略我的 dat 和 Battle_dat 的错字)
    • 我不确定,很抱歉。一个猜测:也许传递给 tm_shape 的更多参数会让你到达同一个地方。我总是从一个 qtm 开始,然后在 tmap 中或当我传递给传单时从那里构建层。
    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多