【问题标题】:Manually creating points for Leaflet map手动为 Leaflet 地图创建点
【发布时间】:2018-07-15 21:57:02
【问题描述】:

我正在创建一些点来绘制在 Leaflet-R 地图上。 但是,当尝试使用 addCircles 绘制点时出现错误:

Warning: Error in derivePoints: Point data not found; please provide addCircles with data and/or lng/lat arguments

关于空间数据框的信息如下:

Simple feature collection with 3 features and 4 fields
geometry type:  POINT
dimension:      XY
bbox:           xmin: -79.48837 ymin: 43.66537 xmax: -79.29187 ymax: 43.71345
epsg (SRID):    4326
proj4string:    +proj=longlat +datum=WGS84 +no_defs

我有另一个可用的空间数据框,所有信息都相同,只是 +datum=WGS84 被替换为 +ellps=WGS84。会是这样吗?如果是这样,我该如何进行此更改?

示例代码

library(shiny)
library(leaflet)

ui <- fluidPage(
  leafletOutput("mymap")
)

server <- function(input, output, session) {

  # Create tree geometries
  tree_1g <- st_point(c(-79.2918671415814, 43.6760766531298))
  tree_2g <- st_point(c(-79.4883669334101, 43.6653747165064))
  tree_3g <- st_point(c(-79.2964680812039, 43.7134458013647))

  # Create sfc object with multiple sfg objects
  points_sfc <- st_sfc(tree_1g, tree_2g, tree_3g, crs = 4326)

  # Create tree attributes
  data <- data.frame (
    id = c(1, 2, 3),
    address = c(10, 20, 30),
    street = c("first", "second", "third"),
    tname = c("oak", "elm", "birch")
)

  tree_data <- st_sf(data, geometry = points_sfc)

  output$mymap <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$Stamen.Watercolor) %>%

      # Centre the map in the middle of Toronto
      setView(lng = -79.384293, 
              lat = 43.685, #43.653908, 
              zoom = 11) %>% 

      addCircles(tree_data)
  })
}

shinyApp(ui, server)

【问题讨论】:

    标签: r geospatial r-leaflet


    【解决方案1】:

    解决方案

    您需要指定data = tree_data,因为在addCircles() 调用中data 参数是最后一个。

    leaflet() %>%
        addProviderTiles(providers$Stamen.Watercolor) %>%
        setView(lng = -79.384293, 
                        lat = 43.685,
                        zoom = 11) %>% 
    
        addCircles(data = tree_data)
    

    说明

    addCircles() 调用中的第一个参数是map,它通过%&gt;% 运算符传入。第二个参数是lng,所以你在调用中所做的相当于

    addCircles(lng = tree_data)
    

    另类

    将数据发送到addCircles() 函数的另一种方法是通过leaflet() 调用

    leaflet(tree_data) %>%
        addProviderTiles(providers$Stamen.Watercolor) %>%
        setView(lng = -79.384293, 
                        lat = 43.685,
                        zoom = 11) %>% 
        addCircles()
    

    【讨论】:

    • 糟糕!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 2015-06-24
    • 2020-03-27
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    相关资源
    最近更新 更多