如何使用 R 绘制 NASAGIBS.ViirsEarthAtNight2012 风格的自定义地图

问题描述 投票:0回答:1
  1. “NASAGIBS.ViirsEarthAtNight2012”是leaflet和leafletCN包中addProviderTiles函数下的可选图层参数。
  2. 我很喜欢这张地图的绘制效果。
  3. 如何绘制与此类似的地图,但具有更多自定义选项而不仅仅是一层?
  4. 这是图片NASAGIBS.ViirsEarthAtNight2012
# 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`
r ggplot2 r-leaflet
1个回答
0
投票

这个非常笼统代表假设你希望你的背景地图是:

  1. 基于您的示例地理坐标
  2. 像示例地图一样的连续(光栅)表面

您的示例 geo df 创建了 1,000 个相同的点,没有为每个单元格着色的值,但我已使用它作为创建栅格数据集的基础。您需要弄清楚如何将 geo df 转换为栅格。一些选项包括

terra::rasterize()
stars::st_rasterize()
。将 df 转换为栅格后,您可以使用
leaflet::addRasterImage()
来绘制数据。

加载所需包并创建示例数据:

library(terra)
library(sf)
library(dplyr)
library(leaflet)
library(leaflet.extras)
library(leafletCN)
library(ggplot2)

# Create a spatraster based on your example coordinates
set.seed(1)
geo <- rast(nrow = 32, ncol = 32, nlyrs = 1,
            xmin = 120, xmax = 124, 
            ymin = 30, ymax = 34, 
            names = "colour_var",
            crs = "EPSG:4326") %>%
  init("cell")

# Assign random values to geo
geo[] <- sample(1:20, nrow(geo) * ncol(geo), replace = TRUE)

根据 color_var 值将颜色值分配给 geo:

palcol <- colorNumeric(c("#020321", "#081138", "#c0965f" , "#faebb3", "#fef9d4"),
                       values(geo),
                       na.color = "transparent")

剧情:

map <- leaflet() %>%
  amap(group = "Gaode") %>% 
  addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012, 
                   group = "DarkBackground") %>%
  addRasterImage(geo, colors = palcol, opacity = 1) 
  
map

result

© www.soinside.com 2019 - 2024. All rights reserved.