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

在R中基于sf包为不同区域的坐标点集绘制外围多边形

R 基于sf包实现点簇外围多边形生成

需求背景

有多个来自不同地理区域的点簇数据集,需要为每个区域生成单个外围多边形,用于地图绘制空间范围,对几何计算精度要求低。

示例测试数据

以下代码可生成结构一致的测试数据,包含挪威、美国本土、阿拉斯加三个区域的点数据:

# 测试数据生成代码
nor_lat <- c(72.117, 71.05, 71.717, 71.167, 71.817, 72.333, 71.25, 70.917, 
  70.85, 70.933)
nor_lon <- c(33.217, 30.333, 26.3, 22.333, 22.333, 22.333, 18.517, 20.133, 
             21.333, 19.917)
us_lat <- c(41.283333, 41, 40.95, 40.95, 38.683333, 40.783333, 40.733333, 
            40.516667, 38.566667, 41.266667)
us_lon <- c(-71.116667, -70.733333, -70.583333, -70.483333, -74.816667, 
            -70.5, -70.566667, -70.266667, -74.85, -71.366667)
ak_lat <- c(58.015, 57.67167, 57.33833, 56.685, 56.99333, 57.31667, 57.65, 
            57.99667, 58.32167, 58.33333)
ak_lon <- c(-158.31667, -158.36, -158.41, -159.76, -159.72333, -159.66333, 
            -159.64167, -159.605, -159.54, -160.72167)
nor_dat <- data.frame(lat=nor_lat, lon=nor_lon)
us_dat <- data.frame(lat=us_lat, lon=us_lon)
ak_dat <- data.frame(lat=ak_lat, lon=ak_lon)
nor_dat$region <- "nor"
us_dat$region <- "us"
ak_dat$region <- "ak"
dat <- rbind(nor_dat, us_dat, ak_dat)

实现步骤

依赖包加载

需要用到sf做空间处理,dplyr做分组批量操作:

library(sf)
library(dplyr)

转换为空间点对象

将普通数据框转换为sf格式的空间点对象,指定WGS84坐标参考系(CRS:4326):

dat_sf <- st_as_sf(dat, coords = c("lon", "lat"), crs = 4326)

单组点生成外围多边形

以挪威区域为例,单组点生成外围轮廓的代码如下:

# 筛选挪威区域的点集
nor_points <- filter(dat_sf, region == "nor")
# 合并点集后生成凸包(即外围轮廓多边形)
nor_poly <- st_convex_hull(st_union(nor_points))

执行完成后直接运行plot(nor_poly)即可查看生成的多边形效果。

批量生成所有区域的外围多边形

无需循环,直接通过分组聚合即可一次性生成所有区域的外围多边形:

region_polys <- dat_sf %>%
  group_by(region) %>%
  summarise(geometry = st_union(geometry)) %>%
  st_convex_hull()

生成的region_polys是包含三个区域多边形的sf对象,可直接用于绘图,还可以叠加原始点验证轮廓正确性:

# 绘制分区域的外围多边形
plot(region_polys["region"], key.pos = 1)
# 叠加原始点
plot(st_geometry(dat_sf), pch = 16, col = "red", add = TRUE)

可选优化

如果需要更贴合点分布的平滑凹轮廓,可以替换st_convex_hull()为concaveman包的concaveman()函数,仅用于绘图的场景下默认的凸包方案已足够使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:36:03