多边形 Shapefile 在 Leaflet R 中无法渲染。

3

我正在尝试使用R语言中的leaflet包为地图添加一些边界。在RStudio中,我编写了以下内容:

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

为了把多边形添加到leaflet地图上,我写入以下代码:
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() 调用是否出现任何错误或警告? - SymbolixAU
你需要使用 rgdalsp 中的 spTransform 将你的数据投影到 longlat - Wolkuz
1个回答

4

我很惊讶你的readOGR没有发出任何警告,因为需要提供layer参数。

但你说得对,需要将形状转换为经纬度,因为这是leaflet所需的。

这里是一些可行的代码; 你需要确定要使用的确切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)

enter image description here


非常好,就像魔法一样。谢谢SymbolixAU! - joey c

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接