【问题标题】:Polygon shapefile doesn't render in leaflet R多边形 shapefile 不会在传单 R 中呈现
【发布时间】:2017-02-12 00:27:03
【问题描述】:

我正在尝试使用 R 中的传单包为传单地图添加一些边界。我在 RStudio 中写道:

library(rgdal)
fw<-readOGR("/local/path/to/FWC_UT_MASTER_0623_2016.shp",verbose=FALSE)`

要将多边形添加到传单,我写道:

library(leaflet)
  fw %>%
  leaflet() %>% 
  addTiles() %>%
  addPolygons(stroke = FALSE, fillOpacity = 0.5, smoothFactor = 0.5) 

看起来很直观。我一辈子都想不通为什么这些小家伙不会渲染。我认为 SpatialPolygonsDataFrame 需要在 WGS84 中。原文件不是。

..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
.. .. ..@ projargs: chr "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"

所以我尝试重新投影原始 shapefile

fw.proj<-spTransform(fw, CRS("+init=epsg:4326"))

然而,

fw.proj %>%
  leaflet() %>% 
  addTiles() %>%
  addPolygons(stroke = FALSE, fillOpacity = 0.5, smoothFactor = 0.5)

也渲染一个空白地图。我在这里保存了原始形状文件: https://github.com/uky994/firewise

任何帮助将不胜感激。

【问题讨论】:

  • 您的readOGR() 通话是否收到任何错误或警告?
  • 您需要使用来自 rgdalspspTransform 将数据投影到 longlat

标签: r leaflet rstudio


【解决方案1】:

我很惊讶您的 readOGR 没有发出任何警告,因为 layer 参数是必需的。

但是您是对的,您需要将形状转换为纬度/经度,因为这是传单所期望的。

这是一些工作代码;您必须弄清楚要使用的确切 CRS

library(leaflet)
library(rgdal)

setwd("~/Downloads/firewise-master/")
fw <- readOGR(dsn = ".",
              layer = "FWC_UT_MASTER_0623_2016",
              verbose = FALSE)

fw_latlon <- spTransform(fw, CRS("+proj=longlat +datum=WGS84"))

leaflet() %>%
  addTiles() %>%
  addPolygons(data = fw_latlon)

【讨论】:

  • 就像一个魅力。谢谢 SymbolixAU!
猜你喜欢
  • 1970-01-01
  • 2019-02-04
  • 2014-01-30
  • 1970-01-01
  • 2012-12-05
  • 2021-08-15
  • 2018-11-01
  • 1970-01-01
  • 2016-08-27
相关资源
最近更新 更多