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

rgeos包gDistance函数替代方案:sf/terra等包可用函数咨询

替代rgeos::gDistance的方案(sf/terra包)

使用sf包

sf是当前主流的空间数据处理包,可完全替代rgeos的相关功能。对应需求的实现代码如下:

# 将数据转换为sf对象
line_sf <- st_as_sf(l)
points_sf <- st_as_sf(p)

# 计算每个点到线的距离(对应原代码的byid=T逻辑)
distances <- st_distance(points_sf, line_sf, by_element = TRUE)
# 转换为数值类型并取最大值
max.dist <- max(as.numeric(distances))

说明:st_distance的by_element=TRUE参数会逐个计算每个点到线的距离,返回结果为带单位的向量,通过as.numeric()可转为纯数值方便后续计算。

使用terra包

terra是专注于栅格与矢量数据的高性能处理包,同样能轻松实现该需求:

# 将数据转换为terra的vect对象
line_vect <- vect(l)
points_vect <- vect(p)

# 计算每个点到线的距离
distances <- distance(points_vect, line_vect)
# 取最大值
max.dist <- max(distances)

说明:terra的distance()函数默认会计算每个点到最近线要素的距离,直接返回数值向量,无需额外单位转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:53:13