You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R Leaflet中用无临时文件的菱形/方形标记实现温度连续覆盖可视化

解决方案

核心思路

无需生成临时PNG文件,直接利用Leaflet的自定义SVG标记实现菱形/方形覆盖,既满足边边相连的区域全覆盖需求,又能基于连续温度值完成颜色编码,同时大幅提升渲染速度。

实现步骤

1. 匹配标记与点间距

你的点按100米间隔生成,需根据地图缩放级别调整标记像素尺寸,确保标记刚好相邻覆盖(UTM 100米在常用缩放级别如16级时,对应约100像素左右,可根据实际区域校准)。

2. 自定义SVG标记函数

通过makeIcon生成内联SVG的base64编码标记,避免文件IO操作,直接映射温度颜色。

完整代码示例

library(dplyr)
library(sf)
library(leaflet)
library(viridis)
library(base64enc)

# 创建100米间隔的温度点数据
df <- expand.grid(X = seq(706832, 707832, 100), Y = seq(4344683, 4345683, 100)) %>%
  mutate(Temp = rnorm(n(), 10, 3))
df_sf <- st_as_sf(x = df, coords = c("X", "Y"), crs = "+proj=utm +zone=11") %>%
  st_transform(crs = "+proj=longlat +datum=WGS84")

# 生成连续温度颜色映射
palette <- colorNumeric(palette = viridis(100), domain = range(df$Temp))

# 自定义菱形SVG标记函数
rhombusIcon <- function(color, size = 100) {
  svg <- sprintf(
    '<svg width="%d" height="%d" viewBox="0 0 %d %d">
       <polygon points="%d,%d %d,%d %d,%d %d,%d" fill="%s" stroke="%s" stroke-width="1"/>
     </svg>',
    size, size, size, size,
    size/2, 0, size, size/2, size/2, size, 0, size/2,
    color, color
  )
  makeIcon(
    iconUrl = sprintf("data:image/svg+xml;base64,%s", base64encode(charToRaw(svg))),
    iconWidth = size, iconHeight = size,
    iconAnchorX = size/2, iconAnchorY = size/2
  )
}

# 自定义方形SVG标记函数(可选替换)
squareIcon <- function(color, size = 100) {
  svg <- sprintf(
    '<svg width="%d" height="%d" viewBox="0 0 %d %d">
       <rect width="%d" height="%d" fill="%s" stroke="%s" stroke-width="1"/>
     </svg>',
    size, size, size, size,
    size, size, color, color
  )
  makeIcon(
    iconUrl = sprintf("data:image/svg+xml;base64,%s", base64encode(charToRaw(svg))),
    iconWidth = size, iconHeight = size,
    iconAnchorX = size/2, iconAnchorY = size/2
  )
}

# 渲染Leaflet地图
leaflet(df_sf) %>%
  addTiles() %>%
  addMarkers(
    icon = ~rhombusIcon(palette(Temp), size = 100), # 替换为squareIcon即可切换方形
    clusterOptions = NULL
  )

关键说明

  • SVG标记优势:直接生成内联编码,无临时文件开销,渲染速度远快于多边形图层,完美适配连续温度变量的颜色映射。
  • 尺寸校准:size参数需匹配点间距,可通过调整缩放级别和size值,确保标记无缝覆盖研究区域。

内容的提问来源于stack exchange,提问作者user2602640

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:11:13