爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6884|回复: 4

[求助] 哪位大神会把卫星数据写入AWX格式文件?急用

[复制链接]
发表于 2022-7-25 17:16:16 | 显示全部楼层 |阅读模式

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

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

x
请问哪位大神会用python写入AWX格式数据文件的?急用急用
感激不尽
求大神帮忙
密码修改失败请联系微信:mofangbao
发表于 2023-2-28 10:18:14 | 显示全部楼层
您好,请问您现在会了吗?想向您请教一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2023-2-28 15:02:18 | 显示全部楼层
有谁可以告诉我怎么计算AWX文件的投影坐标吗?把投影中心当作图像中心感觉不太靠谱啊

写入AWX感觉倒是不难
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2023-3-3 10:15:05 | 显示全部楼层
墨家大宝 发表于 2023-2-28 15:02
有谁可以告诉我怎么计算AWX文件的投影坐标吗?把投影中心当作图像中心感觉不太靠谱啊

写入AWX感觉倒是不 ...

这是一个插入到等经纬度网格的代码。
#-------------读辅助数据---------------------------
dim = 2748
data = np.fromfile(rawfile,dtype=float,count=dim*dim*2)
latlon = np.reshape(data,(dim, dim, 2))
lat = latlon[:,:,0]
lon = latlon[:,:,1]

#--Define partial domain of latitude and longitude for interpolation -----------------------
MaxLon = 150.0
MinLon = 70.0
MaxLat = 50.0
MinLat = 10.0
Resolution = 0.05
Center_Lon = (MaxLon+ MinLon)/2.0

#利用np.argmax()函数获取最大值所在索引,amax()获取最大值的值。
#LowLeftIJ = np.argmin(Distance_LowLeft )  return 1-dimensional array
#Indices of the minimum elements of a N-dimensional array:
Distance_LowLeft = abs(lat -MinLat) + abs(lon -MinLon)  ######2748*2748  纬向差+经向差
value1 = np.amin(Distance_LowLeft)     #####最小值
LowLeftIJ = np.unravel_index(np.argmin(Distance_LowLeft, axis=None), Distance_LowLeft.shape)   ######最小值得索引  (967,1248)  距离左下边界最近的一个点

Distance_UpRight = abs(lon-MaxLon) + abs(lat-MaxLat)
UpRightIJ = np.unravel_index(np.argmin(Distance_UpRight, axis=None), Distance_UpRight.shape)   ######最小值得索引  (349,2108)  距离右上边界最近的一个点

Distance_UpLeft = abs(lon-MinLon) + abs(lat-MaxLat)
UpLeftIJ = np.unravel_index(np.argmin(Distance_UpLeft, axis=None), Distance_UpLeft.shape)     ######最小值得索引  (***,***)  距离左上边界最近的一个点

Distance_UpCenter = abs(lon-Center_Lon) + abs(lat-MaxLat)
UpCenterIJ = np.unravel_index(np.argmin(Distance_UpCenter, axis=None), Distance_UpCenter.shape)  ######最小值得索引  (***,***)  距离上边界中间最近的一个点

Distance_LowRight = abs(lon-MaxLon) + abs(lat-MinLat)
LowRightIJ = np.unravel_index(np.argmin(Distance_LowRight, axis=None), Distance_LowRight.shape)  ######最小值得索引  (***,***)  距离右下边界最近的一个点

StartCol = min([LowLeftIJ[1], UpLeftIJ[1]])  #####开始的列
EndCol = max([LowRightIJ[1], UpRightIJ[1]])  #####结束的列
StartLine = min([UpLeftIJ[0], UpRightIJ[0], UpCenterIJ[0]])  ###开始的行
EndLine = max([LowLeftIJ[0], LowRightIJ[0]])  #####结束的行

Start = [StartLine, StartCol]  #####起始行列号
Count = [EndLine - StartLine + 1,
         EndCol - StartCol + 1, ]  ##行列数量 count  need not -1
Lon_cut = lon[StartLine:EndLine, StartCol:EndCol]  #### 截取的经度
Lat_cut = lat[StartLine:EndLine, StartCol:EndCol]  #### 截取的纬度

Sub_dataset1 = data2[StartLine:EndLine,StartCol:EndCol]    ####截取所选范围数据

###-------------------------------------插值到等经纬度格点  ----------------
Lon_cut_1D = np.array(Lon_cut).flatten()   ####将经度数据转换为1维  777988
Lat_cut_1D = np.array(Lat_cut).flatten()   ####将纬度数据转换为1维
Sub_dataset1_1D = np.array(Sub_dataset1).flatten()  ####将卫星数据转换为1维
points = np.array([Lon_cut_1D,Lat_cut_1D])     #####建立经度*纬度的新数组   2*777988
pointsT  =  points.transpose(1,0)   # [2,*] 转置为 [*,2]   777988*2   0为经度,1为纬度

lat = np.arange(MinLat, MaxLat + 0.01, Resolution)  # +0.01  为了包含右侧短点
lon = np.arange(MinLon, MaxLon + 0.01, Resolution)
lon_mesh, lat_mesh = np.meshgrid(lon, lat)   ### 601*1001

grid_Sub_dataset1 = griddata(pointsT, Sub_dataset1_1D, (lon_mesh, lat_mesh), method='nearest')
# grid_Sub_dataset1  =  np.flipud(grid_Sub_dataset1)  # 行互换 ,上下翻转 ######shape 601*1001
print(grid_Sub_dataset1.shape)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2023-3-4 16:44:11 | 显示全部楼层
1095404469 发表于 2023-3-3 10:15
这是一个插入到等经纬度网格的代码。
#-------------读辅助数据---------------------------
dim = 274 ...

官网提供的经纬度查找表为512*512,但有的数据是1200*1200甚至有的不是正方形,其次不同产品的投影中心不同,用同一个经纬度查找表不太合逻辑。

我写了个读取AWX的包,投影信息从头信息里提取后作为DataArray的coords保存,后续可以用pyproj任意投影转换:
https://github.com/Mo-Dabao/BiteAWX
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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