传单地图'polygonData.default(data)中的错误:不知道如何从类data.frame的对象中获取路径数据'

Posted

技术标签:

【中文标题】传单地图\'polygonData.default(data)中的错误:不知道如何从类data.frame的对象中获取路径数据\'【英文标题】:Leaflet map 'Error in polygonData.default(data) : Don't know how to get path data from object of class data.frame'传单地图'polygonData.default(data)中的错误:不知道如何从类data.frame的对象中获取路径数据' 【发布时间】:2021-10-14 02:19:53 【问题描述】:

我正在尝试创建人口普查数据的传单地图。

我有一个 csv 文件,其中包含爱尔兰的死亡人数。数据包括年份($Year)、性别($Sex)、地点($NAME_1)和死亡年龄($Age.at.Death)

同样,我有一个 dbf 文件,其中包含位置 ($NAME_1) 和多边形创建地图所​​需的几何形状。

所有数据都正确合并到 DEATHS1 中,但是一旦我将其传递给传单,我就会收到错误 'polygonData.default(data) 中的错误: 不知道如何从类data.frame'的对象中获取路径数据

library(leaflet)
library(sf)
library(dplyr)

DEATHS <- read.csv("VSA07.csv")

Shape <- read_sf("gadm36_IRL_1.dbf")


MergedData = inner_join(DEATHS,Shape) #inner joins by NAME_1 column, works okay.

DEATHS1 <- filter(MergedData, Year == "2007", Age.at.Death == "All ages", Sex == "Both sexes")
# Want a map satisfying the above conditions only for the moment, also works as intended

DEATHS1


bins <- c(0, 500, 1000, 2000, 3000, 4000, Inf)
pal <- colorBin("YlOrRd", domain = DEATHS1$VALUE, bins = bins)


m <-leaflet() %>%
  addProviderTiles(providers$Stamen.TonerHybrid) %>% 
  addPolygons(data = DEATHS1)
m

奇怪的是,leaflet 可以根据 MergedData 绘制地图 但是一旦我通过 dplyr 应用任何类型的过滤器,即 DEATHS1,我就会收到错误消息。 所以我认为这与它是一个数据框没有任何关系,因为 MergedData 就是这样。

非常感谢任何帮助。

数据快照 死亡

     ï..Statistic Year      NAME_1        Sex      Age.at.Death   UNIT VALUE
1   Deaths Occurring 2007       State Both sexes      Under 1 year Number   230
2   Deaths Occurring 2007       State Both sexes       1 - 4 years Number    54

形状

A tibble: 26 x 11
   GID_0 NAME_0  GID_1  NAME_1  VARNAME_1     NL_NAME_1 TYPE_1     ENGTYPE_1 CC_1  HASC_1                                    geometry
   <chr> <chr>   <chr>  <chr>   <chr>         <chr>     <chr>      <chr>     <chr> <chr>                           <MULTIPOLYGON [°]>
 1 IRL   Ireland IRL.1~ Carlow  Ceatharlach   NA        Administr~ County    NA    IE.CW  (((-6.592422 52.7081, -6.592915 52.7073, -~
 2 IRL   Ireland IRL.2~ Cavan   An Cabhán     NA        Administr~ County    NA    IE.CN  (((-7.275174 53.78388, -7.275377 53.78377,~
 3 IRL   Ireland IRL.3~ Clare   An Clár       NA        Administr~ County    NA    IE.CE  (((-9.731943 52.64875, -9.731943 52.64903,~

死亡1

       ï..Statistic Year    NAME_1        Sex Age.at.Death   UNIT VALUE GID_0  NAME_0    GID_1              VARNAME_1 NL_NAME_1            TYPE_1 ENGTYPE_1 CC_1 HASC_1                       geometry
1  Deaths Occurring 2007   Wicklow Both sexes     All ages Number   819   IRL Ireland IRL.26_1  Administrative County    County <NA>  IE.WW MULTIPOLYGON (((-6.109166 5...

非常感谢任何帮助/

【问题讨论】:

【参考方案1】:

问题是在将 sf 文件(.dbf 文件)与 csv 文件数据合并时, R 偷偷地将输出转换为 tibble,因此小册子失去了能力 在没有帮助的情况下识别“几何”列。

要修复它,您必须明确告诉传单几何列的位置,如下所示 %>% addPolygons(data = MergedDataFilter$geometry)

m <-leaflet() %>%
  addProviderTiles(providers$Stamen.TonerHybrid) %>% 
  setView(lng = -7.4653, lat = 53.5345, zoom = 6.95) %>%
  addPolygons(data = DEATHS1$geometry,
              weight = 1,
              color = "#660000",
              fillColor = pal(DEATHS$VALUE))
#m

【讨论】:

以上是关于传单地图'polygonData.default(data)中的错误:不知道如何从类data.frame的对象中获取路径数据'的主要内容,如果未能解决你的问题,请参考以下文章

如何免费使用传单地图?

传单不显示地图

传单地图双标问题

带传单的地图:地图上的两个点,在同一位置

传单地图宽度(以米为单位)

如何在 R 的传单地图中删除属性