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

使用terra::split拆分多边形时R会话崩溃的致命错误问题

terra::split拆分多边形导致R会话崩溃的解决方案

问题背景

调用terra::split拆分多边形时触发致命错误,直接导致R/R Studio会话崩溃。该代码在旧版本R的Mac设备上可正常运行,当前设备已尝试重装依赖包、更新R与R Studio,问题仍未解决,即使仅依赖terra的极简代码也会触发崩溃。

排查与修复步骤

  • 检查GDAL/GEOS依赖兼容性
    terra底层依赖GDAL和GEOS库,Mac系统中R二进制包可能与系统自带或brew安装的库冲突。执行以下命令查看当前绑定的库版本:
    terra::gdal()
    terra::geos_version()
    
    若版本不匹配,建议:
    1. 卸载brew安装的GDAL/GEOS(如有)
    2. 重新安装terra,强制使用R官方二进制依赖:
      install.packages("terra", type = "binary")
      
  • 降级terra版本
    新版本terra可能存在兼容性问题,安装与原正常运行环境一致的旧版本:
    install.packages("remotes")
    remotes::install_version("terra", version = "1.7-37") # 替换为原环境的实际版本号
    
  • 修复多边形拓扑错误
    无效几何(如自相交)可能触发崩溃,先检查并修复:
    poly <- terra::makeValid(poly)
    terra::split(poly, poly$group_col)
    
  • 干净环境测试
    启动R时添加--vanilla参数,禁用自定义配置和自动加载的包,排除第三方干扰:
    R --vanilla
    
    仅加载terra后运行复现代码测试。

临时替代方案

若以上方法无效,用sf包替代实现拆分逻辑:

library(sf)
# 转换为sf对象
sf_poly <- st_as_sf(poly)
# 拆分多边形
split_sf <- split(sf_poly, sf_poly$group_col)
# 转换回terra对象
split_terra <- lapply(split_sf, st_as_sf) |> terra::vctrs_list()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:26:03