awx文件解析,运用NCL处理风云卫星2E的AWX格式数据的总结
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 zly4814624 于 2016-10-27 10:39 编辑
小生不才,这段时间一直在处理FY2E的资料,因为接触NCL的时间不是很长,所以一路坎坷。
期间一直找寻各种方法,寻求各种帮助,也是弄的焦头烂额。
因为作为非nc、grid等类型的模式数据,这种二进制卫星数据在使用ncl处理起来本身就没有他们来的方便。
再加上卫星中心提供的这种数据本身没有经纬度的信息,而是单独形成了一个经纬度对照表,更是增加了一些难度。
好在。
功夫不负有心人。
我在众多好心人的帮助下。
初步完成了运用ncl处理FY2e的AWX格式数据的脚本。
情怀到此,话不多说。
运用到的数据:FY2E_SEC_IR1_LCN_20160917_1930.AWX,正式的数据的分辨率为512*512,但是AWX的卫星数据有一个特点,就是有头文件,这个数据的头文件的记录长度为6,所以头文件的字符占用个数为6*512,所以这个数据的总字符量为518*512。在读取数据的时候,必须要将头文件的字符给略去。除了这个数据,我们还需要再添加一个数据:land.dat,这是国家卫星中心提供的经纬度对照表,分辨率为512*512,正好与上面的数据完美配对。由于上面数据的特殊性,我们只能通过使用经纬度对照表来将经纬度信息加载进去。
begin
system("date")
configPath="$WORKDIR/config"
configName="awx.config"
inputfileName = getArgsPara(params,"FY2E_SEC_IR1_LCN_20160917_1930.AWX")
datafileName = getArgsPara(params,"land.dat")
;*************************************读取数据****************************
fl = getArgsPara(params,"inputfileName")
f = fbindirread(fl,0,(/518,512/),"byte") ;读取二进制数据文件
vaild = byte2flt(f(:,:)) ; [512] x [512]
tbb = new((/512,512/),float)
do i=6,517
do j=0,511
tbb(i-6,j) = vaild(i,j) ;跳过头文件数据,将正式数据存入数组
end do
end do
do i=0,511
do j=0,511
index=tbb(i,j)
if (index .lt. 0) then
tbb(i,j) = tbb(i,j)+255
else
tbb(i,j) = tbb(i,j)
end if
end do
end do
;********************************读取兰伯特经纬度对照表数据*************************
f2 = getArgsPara(params,"datafileName")
latlon2d = fbindirread(f2,-1,(/512,512,2/),"float")
dimlonlat=dimsizes(latlon2d) ;XLONG第一维时间,第二位纬度,第三维精度
nlat=dimlonlat(0)
mlon=dimlonlat(1)
lon2d = latlon2d(:,:,0)
lat2d = latlon2d(:,:,1)
;***********************************设置数据属性****************************
lat2d@units = "degrees_north"
lon2d@units = "degrees_east"
tbb@lat2d = lat2d
tbb@lon2d = lon2d
tbb@units = ""
tbb@long_name = ""
tbb@coordinates = "lat2d lon2d"
minvalue=min(tbb)
maxvalue=max(tbb)
tbb@_FillValue = -999.
;************************************设置配置文件****************************
configFile= configPath+"/"+configName
;等经纬投影经纬度配置
truelat1 = stringtofloat(readParamInfo(configFile,"TRUELAT1"))
truelat2 = stringtofloat(readParamInfo(configFile,"TRUELAT2"))
stdlon = stringtofloat(readParamInfo(configFile,"STDLON"))
; ; *************************************设置工作台****************************
res = True
res@gsnDraw = False
res@gsnFrame = False
res@gsnMaximize = True
res@gsnPaperOrientation = "portrait"
res@gsnAddCyclic = False
res@pmTickMarkDisplayMode = "Always"
;*************************************网格设置****************************
setMapProject(res,truelat1,truelat2,stdlon,lat2d,lon2d,mlon,nlat)
res@mpGridAndLimbOn = False
res@mpLimitMode = "LatLon"
res@mpMinLatF = 5.0
res@mpMaxLatF = 40.0
res@mpMinLonF = 89.01
res@mpMaxLonF = 129.025
res@trGridType = "TriangularMesh"
res@cnFillOn = True
res@cnFillMode = "RasterFill"
res@cnLinesOn = False
res@cnLineLabelsOn = False
; 坐标轴属性
res@tmXBOn = False ;坐标刻度隐藏
res@tmXTOn = False
res@tmYLOn = False
res@tmYROn = False
res@tmXBBorderOn = False ;四周边框
res@tmXTBorderOn = False
res@tmYLBorderOn = False
res@tmYRBorderOn = False
;色标显示
res@lbLabelBarOn = False
res@lbLabelAutoStride = False
; 垂直色标条
res@lbOrientation = "Vertical"
;自定义等值线
res@cnLevelSelectionMode = "ExplicitLevels"
; *************************************色标设置****************************
colors = (/(/255,255,255/),(/ 0, 0, 0/),(/33,33,33/),(/68,65,68/),(/132,128,134/),(/201,192,201/),(/230,222,232/),\
(/235,166,195/),(/239,142,160/),(/244,118,123/),(/245,73,73/),(/220,79,69/),(/153,118,78/),(/181,145,80/),\
(/224,187,89/),(/239,202,92/),(/219,207,130/),(/205,212,165/),(/191,217,199/),(/186,218,209/),(/163,213,234/),\
(/156,203,228/),(/146,190,220/),(/144,187,217/),(/140,182,214/),(/132,172,208/),(/130,169,206/),(/116,149,193/),\
(/108,139,186/),(/103,132,182/),(/103,132,182/),(/95,121,175/),(/95,121,175/), (/84,106,165/),(/74,93,157/),\
(/68,86,152/),(/65,82,149/),(/59,73,143/),(/49,60,133/),(/45,55,129/), (/43,52,127/),(/36,45,121/),(/34,43,120/),\
(/35,42,118/),(/33,39,116/),(/27,32,110/),(/22,25,104/),(/19,21,101/),(/17,18,98/),(/13,13,94/),(/11,11,92/),\
(/10,11,91/),(/10,11,91/),(/10,11,91/),(/10,11,91/),(/10,10,91/),(/11,12,92/),(/12,12,93/),(/12,12,93/),\
(/11,11,92/),(/10,10,91/),(/10,10,91/)/)*1.0 ; we multiply by 1 to make colors float
res@cnLevels = fspan(50,250,59)
res@cnFillColors = ispan(61,2,1)
res@cnConstFLabelTextDirection = "Down"
cmap = colors/255. ; normalize (required by NCL)
;*************************************绘制设置****************************
;图片输出目录
outputPath="/home/suzhou/AWX"
checkOrCreateDir(outputPath)
;产品文件名
outputfileName="FY2E_SEC_IR1_LCN_20160917_1930"
;创建工作台
wks_type = "png"
wks_type@wkWidth = 1000 ;工作台宽度
wks_type@wkHeight = 1000 ;工作台高度
wks = gsn_open_wks(wks_type,outputPath+"/"+outputfileName)
contour = gsn_csm_contour_map(wks,tbb,res)
gsn_define_colormap(wks,cmap)
;叠加shp底图
mapres=True
addEastChinaShpMap(mapres)
chinamap = add_china_map(wks,contour,mapres)
draw(contour)
frame(wks)
delete([/wks,res,contour/])
system("date")
end
绘制出来的效果如下图,通过使用micaps直接载入AWX数据绘制的结果进行对比,可以达到100%相同的效果。
FY2E_SEC_IR1_LCN_201609171930_AWX.png (889.87 KB, 下载次数: 1)
2016-10-27 09:50 上传
总结:
1、该数据的难点在于二进制的数据类型的辨析,和头文件的占用个数,一般只要知道头文件一共占有多少字符量和正式数据的数据量,就可以成功的读取数据文件,运用geosat.exe可以辨析数据文件的分辨率,而对于头文件的信息,可以运用fortran程序进行读取,本论坛有大神提供过这种方法,水友们可以去找找。
2、由于AWX格式数据有多重分辨率和多种投影方式,所以国家卫星中心只提供了512*512这一种分辨率的经纬度对照表,那么对于其他分辨率的数据就不能再使用经纬度对照表了,需要自己手动创建经纬度了。
这个脚本比较简陋,有些地方可能存在需要改进的地方,水友们如果有不明白的地方或者有需要改进的地方,请多多提出意见。
另外,这种帖子可以申精么,第一次发这种帖子,嘿嘿。
awx文件解析,运用NCL处理风云卫星2E的AWX格式数据的总结相关推荐
- awx文件解析_Android so(ELF)文件解析
一.前言 so文件是啥?so文件是elf文件,elf文件后缀名是.so,所以也被chang常称之为so文件,elf文件是linux底下二进制文件,可以理解为windows下的PE文件,在Android ...
- awx文件解析_气象卫星分发产品及其格式规范AWX2.1(数据格式C语言)
序号 字节序号 字节数 类型 描述字 备注 1 1 - 12 12 Char × 12 Sat96 文件名 [ 1 ] 2 13 - 14 2 Int16 整型数的字节顺序 [ 2 ] 3 15 - ...
- awx文件解析_9awx.com
Search Engine Optimization Title Tag ͰС˵_Ķ_С˵ Length: 10 character(s) Ideally, your title tag shou ...
- pcap文件格式及文件解析
pcap文件格式及文件解析 第一部分:PCAP包文件格式 一 基本格式: 文件头 数据包头数据报数据包头数据报...... 二.文件头: 文件头结构体 sturct pcap_file_header ...
- matlab segy文件,利用matlab实现segy格式数据的读写研究和分析.ppt
利用matlab实现segy格式数据的读写研究和分析 2.SEGY数据格式 地震数据一般以地震道为单位进行组织,采用SEG-Y文件格式存储.SEG-Y格式是由SEG (Society of Explo ...
- 基于Java的NetCDF文件解析
近期在做的项目中,需要使用Java语言进行NetCDF文件的解析. 然而,当在寻找资料时,发现基于Java语言的资料相较于Python少了很多,而且现有的基于Java解析NetCDF文件到CSV的资料 ...
- 风云卫星数据的正确解锁方式
如果你也想赚钱,实现财务自由,但接触不到优质的人脉和资源,可以到公June浩:成长home,发"资源" ,就会看到我吐血整理的168条保姆级零基础吸金秘籍,跟着我一起亲历毕业5年. ...
- 2021-02-06 如何批量下载风云卫星数据
注:本批量下载方案基于linux系统 操作系统: ubuntu 20 所需工具:风云卫星数据下载链接列表 目录: 1 获取风云卫星数据下载链接 2 批量下载 由于笔者研究工作需要用到风云卫星的数据,而 ...
- WGET批量下载风云卫星数据
1. 在风云卫星官网创建账号并提交订单.之后胡获取到下载链接,本来想这种下载链接可以直接由IE或者火狐的插件 down them all进行下载的,但是由于不知道是我的浏览器的设置还是系统设置的问题, ...
- Json文件解析(下
Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...
最新文章
- xp/2003开关3389指令
- c/c++获取文件大小的方法
- SpringBoot(二):设置springboot同一接口程序启动入口
- 在python中表白_Python 告白:除了你还是你
- IntelliJ IDEA使用记录
- openEuler系统配置yum镜像源
- 福大软工1816 · 第七次作业 - 需求分析报告之拖鞋旅游队
- java nifty_jme3与nifty gui1.3结合,修改使其支持中文的输入与显示
- MySQL错误:Specified key was too long; max key length is 767 bytes
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调...
- 【Excel】提取身份证信息
- java种子填充_种子填充实例运行出问题
- 华山论“件”:Kafka、RabbitMQ、RocketMQ技能大比拼
- 大数据workshop:《云数据·大计算:海量日志数据分析与应用》之《社交数据分析:好友推荐》篇...
- Android Studio的build.gradle里面的各种版本信息
- 【微波】【1】色散关系式与 TEM导波、TE导波、TM导波、混合波区别和特性
- 海思3516ev300+ imx335 原理图,其他PCB、软件资料齐全
- 360腾讯计算机比赛,巅峰对决 腾讯电脑管家VS360详尽评测
- 大数据挖掘与分析——用八爪鱼爬虫采集百度搜索内容
- html5摄像头手势识别,基于OpenCV的摄像头动态手势轨迹识别及其应用