爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4147|回复: 5

[求助] 【已解决】python画青藏高原阴影报错

[复制链接]

新浪微博达人勋

发表于 2023-4-5 23:39:52 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 又又又加零 于 2023-4-10 13:17 编辑

参考家园里这位老师的帖子青藏高原阴影教程,在中国地图基础上进行叠加青藏高原shp文件增加阴影时发生了报错:
  1. fea_country = cfeat.ShapelyFeature(shapereader.Reader(country_shp).geometries(),proj,edgecolor='k', facecolor='ivory')
  2. ax.add_feature(fea_country, linewidth=0.5, alpha=0.9)

  3. fea_pro = cfeat.ShapelyFeature(pro_shp.geometries(), proj,edgecolor='darkolivegreen', facecolor='white')
  4. ax.add_feature(fea_pro, linewidth=0.3, alpha=1)
复制代码
报错显示如下:
----> 4 fea_pro = cfeat.ShapelyFeature(pro_shp.geometries(), proj,edgecolor='darkolivegreen', facecolor='white')AttributeError: 'str' object has no attribute 'geometries'

看报错应该是shp文件的问题,但是用该shp文件是可以在ncl里进行添加青藏高原阴影的,实在不知道该怎么改,有好心人可以解答吗?不胜感激!使用的shp文件是该贴的文件青藏高原shp

【解决方法】按照上贴的链接教程的代码写即可,也不知为何我按照回复里的老师写的赋属性就不行,如果后续有老师能够解惑就好了~



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-4-6 00:20:19 | 显示全部楼层

回帖奖励 +2 金钱

这个错误是因为 pro_shp 是一个字符串对象(string),并不是一个具有 geometries 属性的对象。请检查代码,确保 pro_shp 是一个具有 geometries 属性的对象,比如 shapely.geometry.Polygon 或 MultiPolygon 对象。如果 pro_shp 是一个字符串对象,则需要将其转换成具有 geometries 属性的对象。常见的方法是使用 geopandas 库中的 read_file() 函数读取 shapefile 文件,并指定 geometry 列名,例如:

import geopandas as gpd

pro_shp = gpd.read_file('path/to/pro.shp')
pro_shp = pro_shp.set_geometry('geometry')
这将返回一个具有 geometries 属性的 GeoDataFrame 对象,可以直接传递给 cfeat.ShapelyFeature() 函数。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2023-4-6 09:42:06 | 显示全部楼层

回帖奖励 +2 金钱

谢谢分享!!!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-4-6 09:55:55 | 显示全部楼层
本帖最后由 又又又加零 于 2023-4-6 10:01 编辑
千与千叶 发表于 2023-4-6 00:20
这个错误是因为 pro_shp 是一个字符串对象(string),并不是一个具有 geometries 属性的对象。请检查代码, ...

非常感谢您的解答,原来是这样,但尝试用您的方法修改后,依旧报错了。报错依旧是这条,是否是因为我使用的shp文件属性不完整呢?
----> 4 fea_pro = cfeat.ShapelyFeature(pro_shp.geometries(), proj,edgecolor='darkolivegreen', facecolor='white')
-> 5902 return object.__getattribute__(self, name)AttributeError: 'GeoDataFrame' object has no attribute 'geometries'

查看shp文件,是下图的形式。
shp报错.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-4-7 15:21:12 | 显示全部楼层

回帖奖励 +2 金钱

又又又加零 发表于 2023-4-6 09:55
非常感谢您的解答,原来是这样,但尝试用您的方法修改后,依旧报错了。报错依旧是这条,是否是因为我使用 ...

如果已经进行了pro_shp = pro_shp.set_geometry('geometry')的操作,那直接cfeat.ShapelyFeature(pro_shp) 就好了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-4-7 21:58:34 | 显示全部楼层
清宵逝水 发表于 2023-4-7 15:21
如果已经进行了pro_shp = pro_shp.set_geometry('geometry')的操作,那直接cfeat.ShapelyFeature(pro_shp ...

已经解决了,感谢您的帮助
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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