世界越來越發達,工業化以及汽機車或者焚燒垃圾等等都會使空氣品質下降,而影響人們的呼吸,因而產生許多呼吸道疾病。此主題將所收集到的空氣質量信息更簡單明瞭的在地圖上顯現,在出門前看一下,可以做好防護
| Column Name | Description |
|---|---|
| sitename | 測站名稱 |
| county | 縣市 |
| aqi | 空氣品質指標 |
| pollutant | 空氣污染指標物 |
| status | 狀態 |
| so2 | 二氧化硫(ppb) |
| co | 一氧化碳(ppm) |
| o3 | 臭氧(ppb) |
| o3_8hr | 臭氧8小時移動平均(ppb) |
| pm10 | 懸浮微粒(μg/m3) |
| pm2.5 | 細懸浮微粒(μg/m3) |
| no2 | 二氧化氮(ppb) |
| nox | 氮氧化物(ppb) |
| no | 一氧化氮(ppb) |
| wind_speed | 風速(m/sec) |
| wind_direc | 風向(degrees) |
| datacreationdate | 資料發布時間 |
| co_8hr | 一氧化碳8小時移動平均(ppm) |
| pm2.5_avg | 細懸浮微粒移動平均值(μg/m3) |
| pm10_avg | 懸浮微粒移動平均值(μg/m3) |
| so2_avg | 二氧化硫移動平均值(ppb) |
| longitude | 經度 |
| latitude | 緯度 |
| siteid | 測站編號 |
library(readr)
library(leaflet)
data = read_csv("https://data.epa.gov.tw/api/v2/aqx_p_432?api_key=e8dd42e6-9b8b-43f8-991e-b3dee723a52d&limit=1000&sort=ImportDate%20desc&format=CSV")
data = as.data.frame(data)
colnames(data)=c('測站名稱','縣市','空氣品質指標','空氣污染指標物','狀態','二氧化硫(ppb)',
'一氧化碳(ppm)','臭氧(ppb)','臭氧8小時移動平均(ppb)','pm10','pm2.5','二氧化氮(ppb)',
'氮氧化物(ppb)','一氧化氮(ppb)','風速(m/sec)',
'風向','資料發布時間','一氧化碳8小時移動平均(ppm)',
'pm2.5_avg','pm10_avg','二氧化硫移動平均值(ppb)',
'經度','緯度','測站編號')
cols=c('測站名稱','縣市','空氣品質指標','空氣污染指標物','狀態','二氧化硫(ppb)',
'一氧化碳(ppm)','臭氧(ppb)','pm10','pm2.5','二氧化氮(ppb)',
'氮氧化物(ppb)','一氧化氮(ppb)','風速(m/sec)',
'風向','資料發布時間','經度','緯度','測站編號')
data=data[cols]
data$popup = paste0("測站名稱:", data$測站名稱, "<br>",
"縣市:", data$縣市, "<br>",
"空氣品質指標:", data$空氣品質指標, "<br>",
"空氣汙染指標物:", data$空氣汙染指標物, "<br>",
"狀態:", data$狀態, "<br>",
"二氧化硫(ppb):", data$"二氧化硫(ppb)", "<br>",
"一氧化碳(ppm):", data$"一氧化碳(ppm)", "<br>",
"臭氧:", data$"臭氧(ppb)", "<br>",
"pm10:", data$pm10, "<br>",
"pm2.5:", data$"pm2.5", "<br>",
"二氧化氮(ppb):", data$"二氧化氮(ppb)", "<br>",
"氮氧化物(ppb):", data$"氮氧化物(ppb)", "<br>",
"一氧化氮(ppb):", data$"一氧化氮(ppb)", "<br>",
"風速(m/sec):", data$"風速(m/sec)", "<br>",
"風向:", data$"風向", "<br>",
"資料發布時間:", data$資料發布時間, "<br>",
"測站編號:", data$測站編號)
map1 = leaflet() %>%
addTiles() %>%
# 使用 addTiles() 函數添加 tiles,
# 並使用默認參數默認即是 OpenStreetMap,
# 即街區 Tiles。
addCircles(data=data,
lng=~經度,
lat=~緯度,
popup=~popup)
data$狀態_n <- factor(data$狀態, levels=c("良好", "普通", "對敏感族群不健康"), labels=c(1, 2, 3))
data$狀態_n <- as.numeric(data$狀態_n)
pal_狀態 = leaflet::colorBin(palette=c("yellow", "red", "darkgreen"),
domain=data$狀態_n,
bins=3)
map2 = leaflet() %>%
addTiles() %>%
addCircles(data=data,
lng=~經度,
lat=~緯度,
radius=2,
color=~pal_狀態(狀態_n),
fillOpacity=1,
popup=~popup)
alpha = 0.9
towns_color = data.frame("town"=unique(data$縣市),
"color"=topo.colors(length(unique(data$縣市)), alpha=alpha))
pal_地區 = leaflet::colorFactor(palette=towns_color$color,
domain=towns_color$town)
map3 = leaflet() %>%
addTiles() %>%
addCircles(data=data,
lng=~經度,
lat=~緯度,
color=~pal_地區(縣市),
radius=2,
fillOpacity=alpha,
popup=~popup) %>%
addLegend(position="topright", pal=pal_地區, values=data$縣市)
library(png)
logo="C:/Users/may/Desktop/r/1.png"
icon = leaflet::makeIcon(logo,
iconWidth=12,
iconHeight=12)
map4 = leaflet() %>%
addTiles() %>%
addMarkers(data=data,
lng=~經度,
lat=~緯度,
icon=icon,
popup=~popup)
logo = "C:/Users/may/Desktop/r/1.png"
icon = leaflet::makeIcon(logo,
iconWidth=12,
iconHeight=12)
map5 = leaflet() %>%
addTiles() %>%
addMarkers(data=data,
lng=~經度,
lat=~緯度,
icon=icon,
popup=~popup,
clusterOptions=markerClusterOptions())
map1
map2
map3
map4
map5