如何用R绘制NASAGIBS.ViirsEarthAtNight2012风格的可自定义地图
问题描述
- "NASAGIBS.ViirsEarthAtNight2012"是leaflet和leafletCN包中
addProviderTiles函数的可选图层参数。 - 我非常喜欢该地图的夜景绘制效果。
- 现寻求实现方法:如何绘制与该地图风格相似,但具备更多自定义选项(而非仅单一图层)的地图?
- 该地图效果为:深色背景搭配夜间城市灯光的全球夜景地图。
原始示例代码
# Required packages library(leaflet) # Load the leaflet package for interactive maps library(leaflet.extras) # Load additional leaflet extras library(leafletCN) # Load leaflet for Chinese maps # Generate data geo = data.frame(long = rep(121.44, 1000), lat = rep(31.22, 1000)) # Create a data frame with longitude and latitude # Plot map <- leaflet(geo) %>% # Create a leaflet map with the geo data amap(group = "Gaode") %>% # Add Gaode map as Layer 1 addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012, group = "DarkBackground") # Add DarkBackground NASA map as Layer 2 map # Display the map
自定义夜景风格地图的实现方案
要做出风格类似但自定义性更强的夜景地图,可以从以下几个方向入手:
1. 叠加组合不同瓦片源
通过叠加深色底图和灯光图层,实现更灵活的夜景效果,还能通过图层控制器切换显示组合:
library(leaflet) custom_night_map <- leaflet() %>% # 添加深色底图作为基础 addProviderTiles(providers$CartoDB.DarkMatter, group = "深色底图") %>% # 添加半透明的NASA夜景灯光层,可调整透明度控制效果 addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012, group = "夜景灯光层", options = providerTileOptions(opacity = 0.7)) %>% # 添加图层切换控制器 addLayersControl( baseGroups = c("深色底图"), overlayGroups = c("夜景灯光层"), position = "topright" ) custom_night_map
2. 调整瓦片样式参数
利用providerTileOptions可以修改灯光层的透明度、亮度、对比度,打造个性化夜景质感:
leaflet() %>% addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012, options = providerTileOptions( opacity = 0.8, # 控制图层透明度 brightness = 0.3, # 降低整体亮度,强化暗部氛围 contrast = 1.3 # 提高对比度,让城市灯光更突出 ))
3. 叠加自定义业务数据
如果需要添加专属数据(比如特定区域的灯光强度标注、自定义点位),可以结合leaflet的图层绘制函数:
# 模拟自定义灯光强度数据 custom_light_data <- data.frame( lon = c(121.44, 116.40, 120.16), lat = c(31.22, 39.90, 30.27), intensity = c(8, 9, 7) ) leaflet(custom_light_data) %>% addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012) %>% # 添加自定义灯光强度标记 addCircles( lng = ~lon, lat = ~lat, radius = ~intensity * 1200, color = "#ffd700", fillOpacity = 0.6, popup = ~paste("区域灯光强度:", intensity) )
4. 自定义专属瓦片样式(进阶)
如果需要完全掌控地图配色、元素显示逻辑,可以使用Mapbox Studio制作专属夜景样式,再通过leaflet调用:
leaflet() %>% addTiles( urlTemplate = "https://api.mapbox.com/styles/v1/你的用户名/自定义样式ID/tiles/{z}/{x}/{y}?access_token=你的MapboxToken", attribution = "Mapbox" )
内容的提问来源于stack exchange,提问作者HighSE
相关产品推荐
相关产品推荐

