爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 18960|回复: 13

[求助] 【求助】风云4数据绘图,出现经度-179 导致绘图拉伸

[复制链接]

新浪微博达人勋

发表于 2019-7-1 15:22:56 | 显示全部楼层 |阅读模式

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

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

x
小白最近画图中,出现了个问题,在经度超过180之后,经度数值变成了-179的值,导致图像拉伸,请问该怎么处理呢?

                               
登录/注册后可看大图
大概经度值就是这样

                               
登录/注册后可看大图

附上代码,求大佬们帮助。
#%%
filename =r"E:\data\FY4A-_AGRI--_N_DISK_1047E_L1-_FDI-_MULT_NOM_20190409114500_20190409115959_4000M_V0001.HDF"
with nc.Dataset(filename) as file:
        file.set_auto_mask(False)
        variables = {x: file[x][()] for x in file.variables}
ch01_old = variables['NOMChannel08']
ch01 = np.ma.masked_values(ch01_old,65535)

#%%
num = 2748
Lon = np.zeros((num,num))
Lat = np.zeros((num,num))
with gzip.open('E:\data\FullMask_Grid_4000.raw.gz', 'rb') as f:
    for i in range(num):
        for j in range(num*2):
            zuobiao = f.read(8)
            elem = struct.unpack("d", zuobiao)
            elem = np.float64(elem)
            if (j % 2 == 0):  #偶数
                p = int(j/2)
                Lat[i,p] = elem
            else:
                p = int((j-1)/2)
                Lon[i,p] = elem
lat =  np.ma.masked_values(Lat,999999.9999)
lon =  np.ma.masked_values(Lon,999999.9999)

#%%
#map=Basemap(projection='cyl',llcrnrlat=15,urcrnrlat=55,llcrnrlon=70,urcrnrlon=140,lon_0=100,lat_0=0)
map=Basemap(projection='cyl',lon_0=100,lat_0=0)      
x,y=map(lon,lat)
map.drawcoastlines()
pic = map.contourf(x,y,ch01,4)
plt.clabel(pic)
cbar = map.colorbar(pic ,location='bottom')
cbar.set_label('Brightness Temperature ( K )', fontsize=12, fontweight='roman')
plt.title('contour plot',size=20)
plt.show()



拉伸.png
经度末端.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-7-1 16:05:35 | 显示全部楼层
我个人感觉可能和投影设置有关系,但目前还不会解决,如果有大佬指导怎么处理就好了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-1 16:35:55 | 显示全部楼层
pic = map.contourf(x,y,ch01,4)
plt.clabel(pic)
请不要给contourf的上clabel!
请不要给contourf的上clabel!
请不要给contourf的上clabel!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-1 21:18:08 | 显示全部楼层
本帖最后由 墨青衫 于 2019-7-1 21:19 编辑
Masterpiece 发表于 2019-7-1 16:35
pic = map.contourf(x,y,ch01,4)
plt.clabel(pic)
请不要给contourf的上clabel!

朋友 我注释掉这行命令之后,并没有什么用啊 还是一样的问题

                               
登录/注册后可看大图
1.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-1 21:25:28 | 显示全部楼层
本帖最后由 墨青衫 于 2019-7-1 21:26 编辑

我找了个不是办法的办法 暂时解决了这个问题,希望大佬们能够帮助一下就是画图的时候把后面扫描超过180度的部分不画。。。不是办法的办法了
fig = plt.figure(figsize=(18.5, 10.5))
#map=Basemap(projection='cyl',llcrnrlat=15,urcrnrlat=55,llcrnrlon=70,urcrnrlon=140,lon_0=100,lat_0=0)
map=Basemap(projection='cyl',lon_0=100,lat_0=0)      
x,y=map(lon,lat)
map.drawcoastlines()
pic = map.contourf(x[0:2300,0:2300],y[0:2300,0:2300],ch01[0:2300,0:2300])
cbar = map.colorbar(pic ,location='bottom')
cbar.set_label('Brightness Temperature ( K )', fontsize=12, fontweight='roman')
plt.title('contour plot',size=20)
plt.show()

                               
登录/注册后可看大图


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

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-7-2 10:27:44 | 显示全部楼层
目前问题得到了初步的解决。
在使用投影中选择stere投影即可解决问题
map=Basemap(projection='stere',lat_0=20,lon_0=100,llcrnrlat=20,urcrnrlat=40,llcrnrlon=100,urcrnrlon=140,rsphere=6371200.,resolution='l',area_thresh=10000)
就可以了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-11 16:04:39 | 显示全部楼层
def fy4disk(rawfile, dim):
    sz = np.fromfile(rawfile, dtype=np.float, count=2*dim*dim)
    latlon = np.reshape(sz, (dim, dim, 2))
    lonn = latlon[:, :, 0]
    latt = latlon[:, :, 1]

    latt = np.ma.masked_values(latt, 999999.9999)
读取地图文件的可以用这个简写,请问为何
lonn[lonn < 0] = lonn[lonn < 0] + 360.
    lonn = np.ma.masked_values(lonn, 999999.9999)
处理一下导致连纬度都出现错误了呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-7-11 23:05:01 来自手机 | 显示全部楼层
https://basemaptutorial.readthedocs.io/en/latest/utilities.htm试试看shiftdatal
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-5 10:18:06 | 显示全部楼层
赋值缺省,由CARTOPY绘图提示缺省点冲突,专家有法没
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-10-11 01:30:05 | 显示全部楼层
您好,我最近也在用风云数据4km,但是没有下到经纬度信息
经纬度信息是另外下的吗?我看您是单独读取经纬度。
能否方面把您的4km全面盘的经纬度数据发我一份,感谢。499491828@qq.com
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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