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

在R中利用Leaflet绘制样方分析所需的象限网格

在Leaflet中绘制spatstat象限网格的完整方案

我来帮你把spatstat生成的象限网格顺利可视化到Leaflet地图上!你的代码已经有了不错的开头,接下来只需要把tessellation对象转换成Leaflet支持的格式,再配合颜色映射就能完成绘制了。

步骤1:将Tessellation转换为SF格式

Leaflet对**sf(Simple Features)**格式的空间数据支持最好,我们先把qc.tess转成sf对象,同时带上之前的计数数据:

library(sf)
# 把tessellation转换成sf几何对象
qc_sf <- st_as_sfc(qc.tess)
# 给sf对象添加计数属性,方便后续上色和弹窗
qc_sf <- st_sf(firm_count = qc.nu, geometry = qc_sf)

步骤2:优化颜色映射

你之前定义的颜色映射可以调整得更灵活,比如支持NA值、换个更直观的调色板:

colorpal4 <- colorNumeric(
  palette = "YlOrRd",  # 从黄到红的渐变,适合展示数量多少
  domain = qc_sf$firm_count,
  na.color = "transparent"  # 空网格透明显示
)

步骤3:用Leaflet绘制网格

不需要写循环!Leaflet的addPolygons可以直接批量处理整个sf对象,效率更高:

# 初始化地图,以cbd_points的中心为初始视角
leaflet() %>%
  addTiles() %>%  # 添加默认OpenStreetMap底图
  addPolygons(
    data = qc_sf,
    fillColor = ~colorpal4(firm_count),
    fillOpacity = 0.7,  # 填充透明度,避免遮挡底图
    color = "white",    # 网格边框颜色
    weight = 1,         # 边框粗细
    popup = ~paste("企业数量:", firm_count)  # 点击网格显示计数
  ) %>%
  addLegend(
    pal = colorpal4,
    values = qc_sf$firm_count,
    title = "企业数量",
    position = "bottomright"
  )

一些小提示

  • 如果你的cbd_points是SpatialPointsDataFrame,可以转成sf后用st_bbox或者st_centroid更精准地设置地图初始中心:
    cbd_sf <- st_as_sf(cbd_points)
    leaflet() %>%
      setView(lng = st_coordinates(st_centroid(cbd_sf))[1], 
              lat = st_coordinates(st_centroid(cbd_sf))[2], 
              zoom = 12) %>%
      # 后续添加底图和网格...
    
  • 调色板可以换成viridis系列(比如palette = "viridis"),对色弱用户更友好;
  • 如果需要调整网格的边框样式,直接修改color、weight、dashArray等参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:52:50