问题描述
我通过根据燃料类型将较大的数据集分解为较小的数据集,在带有多个多边形的传单中创建了一张地图。该地图效果很好,并且符合预期,但是,我想使用一个函数或一个 for 循环来精简我的代码,以重现众多多边形层。
我在下面的地图中包含了我的代码,如您所见,代码很多。我找到了这篇文章,How to add multiple polygons in leaflet map using r loop?,但我仍然遇到这个特定问题的问题,因为我正在尝试从 total_ERCOT 创建多个多边形,头包括在下面,按燃料类型,而不必将数据子集到较小的数据集(ERCOT_gas, ERCOT_wind 等)。任何帮助将不胜感激!
head(total_ERCOT)
Simple feature collection with 6 features and 13 fields
geometry type: MULTIpolyGON
dimension: XY
bBox: xmin: -97.60523 ymin: 29.26259 xmax: -95.42412 ymax: 31.86308
geographic CRS: NAD83
# A tibble: 6 x 14
# Groups: NAME,FUEL [3]
GEOID NAME `UNIT NAME` `UNIT CODE` FUEL ZONE `IN SERVICE` CAPACITY county_capacity age geometry county_age county_fuel_cap~
<chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <MULTIpolyGON [°]> <dbl> <dbl>
1 48309 MCLE~ SANDY CREE~ SCES_UNIT1 COAL norTH 2013 933. 948. 8 (((-97.27726 31.74549,-~ 4.33 933.
2 48157 FORT~ W A PARISH~ WAP_WAP_G5 COAL HOUS~ 1977 664 4291 44 (((-96.01644 29.6271,-9~ 37.1 2514
3 48157 FORT~ W A PARISH~ WAP_WAP_G6 COAL HOUS~ 1978 663 4291 43 (((-96.01644 29.6271,-9~ 37.1 2514
4 48157 FORT~ W A PARISH~ WAP_WAP_G7 COAL HOUS~ 1980 577 4291 41 (((-96.01644 29.6271,-9~ 37.1 2514
5 48157 FORT~ W A PARISH~ WAP_WAP_G8 COAL HOUS~ 1982 610 4291 39 (((-96.01644 29.6271,-9~ 37.1 2514
6 48149 FAYE~ FAYETTE PO~ FPPYD1_FPP~ COAL SOUTH 1979 603 1841 42 (((-97.08646 29.9943,-9~ 23.4 1657
leaflet() %>%
addTiles() %>%
addpolygons(data = ERCOT_counties,stroke = FALSE,smoothFactor = 0.3,fillOpacity = 0.5,fillColor = ~pal(county_capacity),label = ~paste0(NAME,": ",format(round(as.numeric(county_capacity,0)),big.mark = ",")," MW "," Average Generation Facility Age: ",round(county_age,2)," Years"," Zone: ",ZONE),group = "Total Capacity") %>%
addpolygons(data = ERCOT_gas,fillColor = ~pal(county_gas_capacity),format(round(as.numeric(county_gas_capacity," Average Gas Facility Age: ",round(county_gas_age,group = "Gas Capacity") %>%
addpolygons(data = ERCOT_wind,fillColor = ~pal(county_wind_capacity),format(round(as.numeric(county_wind_capacity," Average Wind Facility Age: ",round(county_wind_age,group = "Wind Capacity") %>%
addpolygons(data = ERCOT_solar,fillColor = ~pal(county_solar_capacity),format(round(as.numeric(county_solar_capacity," Average Solar Facility Age: ",round(county_solar_age,group = "Solar Capacity") %>%
addpolygons(data = ERCOT_coal,fillColor = ~pal(county_coal_capacity),format(round(as.numeric(county_coal_capacity," Average Coal Facility Age: ",round(county_coal_age,group = "Coal Capacity") %>%
addpolygons(data = ERCOT_nuclear,fillColor = ~pal(county_nuclear_capacity),format(round(as.numeric(county_nuclear_capacity," Average Nuclear Facility Age: ",round(county_nuclear_age,group = "Nuclear Capacity") %>%
addLayersControl(
overlayGroups = c("Total Capacity","Gas Capacity","Wind Capacity","Solar Capacity","Coal Capacity","Nuclear Capacity"),options = layersControlOptions(collapsed = FALSE))
解决方法
这样做:
map <- leaflet %>%
addTiles()
for (...) {
map <- map %>%
addPolygons(...)
}
map %>%
addLayersControl(...)
您甚至可以在 for 循环内构建 overlayGroups
向量。