PyGMT中.grd文件显示失败求助:网格超出地图区域报错
解决PyGMT绘制笛卡尔网格.grd文件的区域不匹配问题
问题根源
你的网格是笛卡尔坐标系(Cartesian grid),但使用了针对经纬度的地理投影(M15c墨卡托投影),两者坐标系不匹配,导致PyGMT判定网格不在绘图域内,抛出警告。
解决方案
1. 使用笛卡尔投影替代地理投影
因为你的网格x、y是自定义笛卡尔坐标(非经纬度),需改用笛卡尔投影参数(如X15c,代表线性笛卡尔投影,宽度15cm):
import pygmt fig = pygmt.Figure() # 指定笛卡尔投影,加载网格 fig.grdimage( "/Users/jrtomer/Documents/Winter_Quarter2023/CAPSTONE_RESEARCH/xAlaska_Research_Cruise/QCT_2021+2022.grd", projection="X15c" ) # 添加颜色条展示数值范围 fig.colorbar() fig.show()
2. 自动适配网格区域
如果不确定网格的精确范围,可添加region="d"参数让PyGMT自动从网格读取区域范围:
fig.grdimage( grid="/Users/jrtomer/Documents/Winter_Quarter2023/CAPSTONE_RESEARCH/xAlaska_Research_Cruise/QCT_2021+2022.grd", projection="X15c", region="d" )
3. 验证网格属性(可选)
用pygmt.grdinfo再次确认网格的坐标系和范围,确保判断准确:
print(pygmt.grdinfo("/Users/jrtomer/Documents/Winter_Quarter2023/CAPSTONE_RESEARCH/xAlaska_Research_Cruise/QCT_2021+2022.grd"))
为什么之前的方法无效?
你使用的M15c是墨卡托地理投影,要求网格的x/y是经纬度(经度范围±180,纬度范围±90),但你的网格x为109575-365525、y为5714075-6040425,完全不符合地理坐标范围,因此PyGMT认为网格不在绘图区域内,触发警告。
内容的提问来源于stack exchange,提问作者Jacob Tomer
相关产品推荐
相关产品推荐

