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

如何在R的terra包中为SpatRaster设置坐标系并映射采样点到IBCSO地图

解决Terra包绘制IBCSO地图时坐标点聚集问题

你的问题核心是坐标系不匹配:采样点是WGS84经纬度(EPSG:4326),而IBCSO地图采用的是WGS 84 / IBCSO极地投影(EPSG:9354),直接绘制会因为两种坐标系的数值范围差异过大,导致经纬度点聚集在地图中心。以下是具体解决步骤:

1. 将采样点转换为地图匹配的坐标系

首先把经纬度格式的采样点转换为IBCSO地图的投影坐标系:

假设你的采样点数据框为points_df,包含lon(经度)和lat(纬度)列:

library(terra)

# 读取IBCSO地图
ibcso <- rast("IBCSO.tif")

# 创建经纬度格式的矢量对象,指定坐标系为WGS84(EPSG:4326)
points_vec <- vect(points_df, geom = c("lon", "lat"), crs = "EPSG:4326")

# 转换到IBCSO地图的坐标系(EPSG:9354)
points_proj <- project(points_vec, crs(ibcso))

2. 绘制地图与转换后的点

无需手动调整范围,直接用Terra的绘图函数叠加即可:

# 绘制IBCSO彩色地图
plot(ibcso, rgb = 1:3, main = "物种分布点与采样站")

# 叠加转换后的采样点(红色圆点,可根据需求调整样式)
plot(points_proj, add = TRUE, col = "red", pch = 16, cex = 1.2)

3. 验证转换结果

可以检查转换后点的范围是否在地图范围内,确保没有异常:

# 查看转换后点的范围
ext(points_proj)
# 对比IBCSO地图的范围
ext(ibcso)

关键说明

经纬度的数值范围是经度-180180、纬度-9090,而IBCSO投影的范围是米制的-4800000~4800000,直接绘制经纬度点会因为数值过小,被缩放到地图中心区域。通过坐标系转换,就能让点匹配到地图的正确位置,避免扭曲或聚集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:54:18