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

使用R的terra包导入等高线时Z坐标被忽略,无法调用高程

解决terra包导入等高线时Z坐标未识别及contour调用报错问题

1. 把属性列转为Z坐标

terra的vect()默认忽略Z坐标,但会保留高程属性。可以用addZ()函数将指定的高程属性转为SpatVector的Z坐标:

# 导入等高线矢量(已保留高程属性)
sjre_bath = vect(sj_bath)
# 将指定属性列转为Z坐标(替换成你的高程属性名,比如Elevation或Elev_m)
sjre_bath_z = addZ(sjre_bath, field = "Elev_m")

验证Z坐标是否添加成功:

# 检查是否包含Z坐标
hasZ(sjre_bath_z)
# 查看Z值
zValues(sjre_bath_z)

2. 解决contour函数报错问题

contour()函数是针对栅格数据(SpatRaster)设计的,直接传入SpatVector会报错。你有两种选择:

选项1:直接绘制矢量等高线

用plot()直接绘制带Z值的矢量等高线,还能根据高程设置颜色:

# 按Z值分配颜色
elev_unique = unique(zValues(sjre_bath_z))
plot(sjre_bath_z, col = terrain.colors(length(elev_unique)))

选项2:转成栅格后用contour

如果一定要用contour(),先把等高线矢量栅格化:

# 创建与矢量范围匹配的空栅格(分辨率按需调整)
r = rast(sjre_bath_z, resolution = 10)
# 将高程属性栅格化到空栅格中
r = rasterize(sjre_bath_z, r, field = "Elev_m")
# 调用contour绘制
contour(r)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:33:11