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

绘制SpatVector时出现node stack overflow错误求助

解决SpatVector子集绘图时的"node stack overflow"错误

这个错误通常是因为空间数据存在无效拓扑结构(比如自相交多边形、重复节点等),ggplot2/tidyterra解析这些几何对象时会陷入递归循环,最终触发栈溢出。结合你的代码,可通过以下步骤修复:

解决方案步骤

  1. 修复空间数据的拓扑问题
  2. 简化子集筛选逻辑
  3. 验证数据后重新绘图

修改后的完整代码

library(tidyverse)
library(geodata)
library(terra)
library(tidyterra)
library(ggplot2)

# 获取数据并立即修复拓扑结构
IT2 <- gadm(country = "ITA", level=2, path = tempdir()) %>%
  terra::makeValid()

# 查看目标大区名称
unique(IT2[["NAME_1"]])

# 用%in%简化多条件筛选,同时保留指定字段
target_regions <- c("Liguria", "Piemonte", "Valle d'Aosta")
NW <- subset(IT2, NAME_1 %in% target_regions, select = c("NAME_1", "NAME_2")) 

# 先用terra自带plot测试数据是否正常(快速验证)
plot(NW, col = NA, border = "black")

# 再用ggplot2绘图
ggplot() + 
  geom_spatvector(data = NW, fill = NA, col = "black") +
  theme_void()

额外排查方案

如果上述方法仍无效,可尝试:

  • 转换为sf对象再绘图:
NW_sf <- sf::st_as_sf(NW)
ggplot() +
  geom_sf(data = NW_sf, fill = NA, color = "black") +
  theme_void()
  • 强制垃圾回收释放内存:
gc()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:31:02