爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: 晋陵小生

[经验总结] python完美白化,去除区域外标签,去除区域外风矢量

  [复制链接]

新浪微博达人勋

发表于 2019-3-23 02:37:08 | 显示全部楼层
晋陵小生 发表于 2019-3-22 08:52
哈哈哈,很强。但是那个风场的问题我还没解决,我自己的fbar返回的是一个元组,而楼下那位返回的则是单个 ...

加油,再研究研究!后期我这一直没什么进步了。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-3-26 10:21:37 | 显示全部楼层
老师,你好,barbs画的图好像不行啊,返回值的时对象啊<matplotlib.quiver.Barbs object at 0x0000021BDDA46908>
因此出现了错误'Barbs' object has no attribute 'collections'
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-26 16:06:44 | 显示全部楼层
wolfwang 发表于 2019-3-26 10:21
老师,你好,barbs画的图好像不行啊,返回值的时对象啊
因此出现了错误'Barbs' object has no attribute ' ...

请参考附件下面的补充代码,将maskout.py对应代码段进行修改哈。barbs有时候返回的是单个图形对象,有时候是一个元组,我也没搞清楚为啥。后面有时间再研究研究
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-26 21:17:15 | 显示全部楼层
晋陵小生 发表于 2019-3-26 16:06
请参考附件下面的补充代码,将maskout.py对应代码段进行修改哈。barbs有时候返回的是单个图形对象,有时 ...

  好像还是有问题,谢谢啦!
originfig.set_clip_path(clip)

UnboundLocalError: local variable 'clip' referenced before assignment
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-27 12:08:25 | 显示全部楼层
wolfwang 发表于 2019-3-26 21:17
好像还是有问题,谢谢啦!
originfig.set_clip_path(clip)

脚本贴出来,兄弟
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-29 12:48:40 | 显示全部楼层

按您前面所的在maskout中修改了代码
程序中
clip = maskout2.shp2clip(barb,ax,m,r'D:\python\shp\China\bou2_4m\bou2_4l',['陕西'],vcplot=True)   
if vcplot:
        originfig.set_clip_path(clip)
    else:
        for contour in originfig.collections:
            contour.set_clip_path(clip)
    if  clabel:
        clip_map_shapely = ShapelyPolygon(vertices)
        for text_object in clabel:
            if not clip_map_shapely.contains(ShapelyPoint(text_object.get_position())):
                text_object.set_visible(False)   
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-29 12:57:45 | 显示全部楼层
wolfwang 发表于 2019-3-29 12:48
按您前面所的在maskout中修改了代码
程序中
clip = maskout2.shp2clip(barb,ax,m,r'D:\python\shp\Chin ...

clip = maskout2.shp2clip(barb,ax,m,r'D:\python\shp\China\bou2_4m\bou2_4l这里是不是应该是bou2_4p
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-30 10:45:37 | 显示全部楼层
海豚∩_∩浩 发表于 2019-3-29 12:57
clip = maskout2.shp2clip(barb,ax,m,r'D:\python\shp\China\bou2_4m\bou2_4l这里是不是应该是bou2_4p

嗯,也试过了,出现了个错误,所以试了试这个

  File "C:\Anaconda3\lib\site-packages\shapefile.py", line 104, in u
    return v.decode(encoding, encodingErrors)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-4-1 08:53:59 | 显示全部楼层
wolfwang 发表于 2019-3-30 10:45
嗯,也试过了,出现了个错误,所以试了试这个

  File "C:\Anaconda3\lib\site-packages\shapefile.py" ...

这个是新版本basemap的一个bug,还没有修复,指定编码格式也不行。建议使用utf-8编码的shp文件
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-4-1 09:45:21 | 显示全部楼层
晋陵小生 发表于 2019-4-1 08:53
这个是新版本basemap的一个bug,还没有修复,指定编码格式也不行。建议使用utf-8编码的shp文件

我把basemap的版本降低了下,还是有点问题,说是index超出范围
    clip = maskout2.shp2clip(barb,ax,m,r'D:\shp地图\China\bou2_4m\bou2_4p',[610000],vcplot=True)

    if shape_rec.record[7] in region:  #####在bou2_4p.shp上,对中国的某几个省份或地区之外的部分进行maskout

IndexError: list index out of range
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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