爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 160|回复: 6

[经验总结] 画图投影冲突

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
晚上画水系shp的时候,发现加入水系后出图的比例会发生变化,检查之后原因在于其实是 matplotlib + cartopy 的投影和 geopandas 绘图叠加引起的。记录一下参考gpt回答原始画图是

  1. shp_path = "/data/usb0/DATA_obs/SHP/cnmap/river.shp"
  2. rivers = gpd.read_file(shp_path)
  3. rivers.plot(ax=geoax, color="blue", linewidth=1.8, zorder=3, transform=ccrs.PlateCarree())
复制代码
eopandas.plot() 默认是 matplotlib 坐标系,不完全理解 cartopy 的投影。
transform=ccrs.PlateCarree() 参数在 gpd.plot() 中其实不起作用,它只在 cartopy 的 ax.add_geometries() 中生效。
所以直接用 gpd.plot() 可能会让图像在 cartopy 坐标系里“被拉伸”,导致比例不对。


在 cartopy 的投影下,应该用 ax.add_geometries,而不是 gpd.plot:
  1. for geom in rivers.geometry:
  2.     geoax.add_geometries([geom], crs=ccrs.PlateCarree(),
  3.                          edgecolor="blue", facecolor="none", linewidth=1.8, zorder=3)
复制代码







密码修改失败请联系微信:mofangbao
发表于 4 天前 | 显示全部楼层
可以试试 gdf.to_crs(ax.projection).plot(ax=ax)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
灭火器 发表于 2025-9-29 09:09
可以试试 gdf.to_crs(ax.projection).plot(ax=ax)

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
大佬怎么会遇到问题,有啥问题都能摆平~!!~~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
VV09 发表于 2025-9-29 14:41
大佬怎么会遇到问题,有啥问题都能摆平~!!~~

好多不懂呀
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 前天 18:16 | 显示全部楼层
大佬怎么会遇到问题,有啥问题都能摆平!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 23:18 | 显示全部楼层
Lancelot 发表于 2025-10-1 18:16
大佬怎么会遇到问题,有啥问题都能摆平!!

经常摆不平
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表