如何使用 for 循环在传单中添加多个多边形和图层?

问题描述

我通过根据燃料类型将较大的数据集分解为较小的数据集,在带有多个多边形的传单中创建了一张地图。该地图效果很好,并且符合预期,但是,我想使用一个函数一个 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 向量。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...