爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18373|回复: 20

[作图] NCL如何使用读取calipso数据?

[复制链接]
发表于 2013-6-7 11:32:39 | 显示全部楼层 |阅读模式

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

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

x
calipso中的VFM是关于气溶胶类别的数据。
我读取了calipso数据的信息,如下:
Copyright (C) 1995-2013 - All Rights Reserved
University Corporation for Atmospheric Research
NCAR Command Language Version 6.1.2
The use of this software is governed by a License Agreement.
See http://www.ncl.ucar.edu/ for more details.


Variable: fi
Type: file
filename:        CAL_LID_L2_VFM-ValStage1-V3-01.2007-02-06T16-29-28ZN
path:        ./DATA/CAL_LID_L2_VFM-ValStage1-V3-01.2007-02-06T16-29-28ZN.hdf
   file global attributes:
      coremetadata :
GROUP                  = INVENTORYMETADATA
  GROUPTYPE            = MASTERGROUP


  GROUP                  = GRANULE


    OBJECT                 = GRANULEID
      NUM_VAL              = 1
      VALUE                = "L2_LIDAR"
    END_OBJECT             = GRANULEID


    OBJECT                 = GRANULENAME
      NUM_VAL              = 1
      VALUE                = "CAL_LID_L2_VFM-ValStage1-V3-01.2007-02-06T16-29-28ZN.hdf"
    END_OBJECT             = GRANULENAME


    OBJECT                 = GRANULEVERSION
      NUM_VAL              = 1
      VALUE                = "V01"
    END_OBJECT             = GRANULEVERSION


    OBJECT                 = DAYNIGHT
      NUM_VAL              = 1
      VALUE                = "N"
    END_OBJECT             = DAYNIGHT


    OBJECT                 = BROWSE
      NUM_VAL              = 1
      VALUE                = "N"
    END_OBJECT             = BROWSE


    OBJECT                 = GRINGTYPE
      NUM_VAL              = 1
      VALUE                = "S"
    END_OBJECT             = GRINGTYPE


  END_GROUP              = GRANULE


  GROUP                  = METADATA


    OBJECT                 = METADATANAME
      NUM_VAL              = 1
      VALUE                = "CAL_LID_L2_VFM-ValStage1-V3-01.2007-02-06T16-29-28ZN.hdf.met"
    END_OBJECT             = METADATANAME


  END_GROUP              = METADATA


  GROUP                  = TEMPORALINFORMATION


    OBJECT                 = PRODUCTIONDATETIME
      NUM_VAL              = 1
      VALUE                = "2010-04-22T18:54:09Z"
    END_OBJECT             = PRODUCTIONDATETIME


    OBJECT                 = START_DATE
      NUM_VAL              = 1
      VALUE                = "2007-02-06T16:29:28Z"
    END_OBJECT             = START_DATE


    OBJECT                 = STOP_DATE
      NUM_VAL              = 1
      VALUE                = "2007-02-06T17:15:53Z"
    END_OBJECT             = STOP_DATE


  END_GROUP              = TEMPORALINFORMATION


  GROUP                  = QA


    OBJECT                 = QAFLAG
      NUM_VAL              = 1
      VALUE                = "Passed"
    END_OBJECT             = QAFLAG


    OBJECT                 = QAEXPLANATION
      NUM_VAL              = 1
      VALUE                = "All data passed during checkout"
    END_OBJECT             = QAEXPLANATION


  END_GROUP              = QA


  GROUP                  = GEOMINMAX


    OBJECT                 = MINLAT
      NUM_VAL              = 1
      VALUE                = -69.249451
    END_OBJECT             = MINLAT


    OBJECT                 = MINLON
      NUM_VAL              = 1
      VALUE                = -87.166557
    END_OBJECT             = MINLON


    OBJECT                 = MAXLAT
      NUM_VAL              = 1
      VALUE                = 78.674515
    END_OBJECT             = MAXLAT


    OBJECT                 = MAXLON
      NUM_VAL              = 1
      VALUE                = 174.131302
    END_OBJECT             = MAXLON


  END_GROUP              = GEOMINMAX


  GROUP                  = GRING


    OBJECT                 = GRINGCONTAINER
      CLASS                = "1"


      OBJECT                 = GRINGLATITUDE
        CLASS                = "1"
        NUM_VAL              = 21
        VALUE                = (78.674515, 76.476173, 59.492115, 41.245071, 22.711428, 4.070810, -14.575548, -33.135052, -51.485237, -69.249451, -69.249451, -51.485237, -33.135052, -14.575548, 4.070810, 22.711428, 41.245071, 59.492115, 76.476173, 78.674515, 78.674515)
      END_OBJECT             = GRINGLATITUDE


      OBJECT                 = GRINGLONGITUDE
        CLASS                = "1"
        NUM_VAL              = 21
        VALUE                = (-87.166557, 174.131302, 150.259125, 142.092224, 137.013870, 132.863770, 128.848969, 124.320244, 118.011978, 104.833435, 104.833435, 118.011978, 124.320244, 128.848969, 132.863770, 137.013870, 142.092224, 150.259125, 174.131302, -87.166557, -87.166557)
      END_OBJECT             = GRINGLONGITUDE


    END_OBJECT             = GRINGCONTAINER


  END_GROUP              = GRING


  GROUP                  = ORBITPATH


    OBJECT                 = STARTORBITNUMBER
      NUM_VAL              = 1
      VALUE                = 4141
    END_OBJECT             = STARTORBITNUMBER


    OBJECT                 = STOPORBITNUMBER
      NUM_VAL              = 1
      VALUE                = 4141
    END_OBJECT             = STOPORBITNUMBER


    OBJECT                 = ORBITCHANGETIME
      NUM_VAL              = 1
      VALUE                = -1000000.000000
    END_OBJECT             = ORBITCHANGETIME


    OBJECT                 = STARTPATHNUMBER
      NUM_VAL              = 1
      VALUE                = 91
    END_OBJECT             = STARTPATHNUMBER


    OBJECT                 = STOPPATHNUMBER
      NUM_VAL              = 1
      VALUE                = 107
    END_OBJECT             = STOPPATHNUMBER


    OBJECT                 = PATHCHANGETIME
      NUM_VAL              = 1
      VALUE                = 70206.688596
    END_OBJECT             = PATHCHANGETIME


  END_GROUP              = ORBITPATH


END_GROUP              = INVENTORYMETADATA


END
      archivemetadata :
GROUP                  = ARCHIVEDMETADATA
  GROUPTYPE            = MASTERGROUP


  OBJECT                 = NUMBEROFRECORDS
    NUM_VAL              = 1
    VALUE                = -1
  END_OBJECT             = NUMBEROFRECORDS


END_GROUP              = ARCHIVEDMETADATA


END
   dimensions:
      fakeDim0 = 3001
      fakeDim1 = 1
      fakeDim2 = 3001
      fakeDim3 = 1
      fakeDim4 = 3001
      fakeDim5 = 1
      fakeDim6 = 3001
      fakeDim7 = 1
      fakeDim8 = 3001
      fakeDim9 = 1
      fakeDim10 = 3001
      fakeDim11 = 1
      fakeDim12 = 3001
      fakeDim13 = 3
      fakeDim14 = 3001  // unlimited
      fakeDim15 = 5515
   variables:
      float Latitude ( fakeDim0, fakeDim1 )
         units :        deg
         format :        Float_32
         valid_range :        -90.0...90.0
         hdf_name :        Latitude


      float Longitude ( fakeDim2, fakeDim3 )
         units :        deg
         format :        Float_32
         valid_range :        -180.0...180.0
         hdf_name :        Longitude


      double Profile_Time ( fakeDim4, fakeDim5 )
         units :        sec
         format :        Float_64
         valid_range :        4.204E8...7.389E8
         hdf_name :        Profile_Time


      double Profile_UTC_Time ( fakeDim6, fakeDim7 )
         units :        NoUnits
         format :        Float_64
         valid_range :        60426...160601
         hdf_name :        Profile_UTC_Time


      ushort Day_Night_Flag ( fakeDim8, fakeDim9 )
         units :        NoUnits
         format :        Uint_16
         valid_range :        0...1
         hdf_name :        Day_Night_Flag


      byte Land_Water_Mask ( fakeDim10, fakeDim11 )
         units :        NoUnits
         format :        Int_8
         valid_range :        0...7
         hdf_name :        Land_Water_Mask


      double Spacecraft_Position ( fakeDim12, fakeDim13 )
         units :        km
         format :        Float_64
         valid_range :        -8000.0 ... 8000.0
         fillvalue :        -9999
         hdf_name :        Spacecraft_Position


      ushort Feature_Classification_Flags ( fakeDim14, fakeDim15 )
         units :        NoUnits
         format :        Uint_16
         valid_range :        1...49146
         hdf_name :        Feature_Classification_Flags


并且我的读取代码如下:

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/skewt_func.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/wind_rose.ncl"

begin
dir=("./DATA/")
fi=addfile(dir+"./CAL_LID_L2_VFM-ValStage1-V3-01.2007-02-06T16-29-28ZN.hdf","r")

lat = fi->Latitude(:,:)
lon = fi->Longitude(:,:)
time = fi->Profile_UTC_Time(:,:)
aerosol = fi->Feature_Classification_Flags(:,:)
aerosol@units ="categroy"

wks  = gsn_open_wks("png","gsn_contour")    ; open a ps file
gsn_define_colormap(wks,"rainbow")

res                       = True
  res@gsnMaximize         = True
  res@gsnLeftString       = "Vertical Feature Mask"
  res@tiYAxisString          = " Altitude (km)"
  res@tiYAxisFontHeightF  = 0.02
  res@cnLinesOn           = False
  res@cnFillOn            = True
  res@cnFillMode          = "RasterFill"    ; Much faster!
  res@gsnAddCyclic        = False
  res@cnLevelSelectionMode = "ExplicitLevels"
  res@cnLevels             = (/0,1,2,3,4,5,6/)
  res@gsnSpreadColors     = True
  res@gsnSpreadColorStart = 1
  res@gsnSpreadColorEnd   = -3  ; don't include gray or white at end
;---Tickmark resources
  latstep                  = 10
  res@tmXBMode             = "Explicit"
  res@tmXBValues           = lat(::latstep)
  res@tmXBLabels           = sprintf("%5.2f",lat(::latstep)) + "~C~" + \
                             sprintf("%5.2f",lon(::latstep))
;---Tickmark resources
  res@lbOrientation      = "Vertical"
  res@lbLabelAlignment   = "BoxCenters"     ; Default is "InteriorEdges"
  res@lbLabelAutoStride  = True
  res@lbLabelFontHeightF = 0.015
  res@lbLabelStrings     = (/"Not Determined","Clean Marine","Dust","Polluted Continental",\
                             "Clean Continental","Polluted Dust","Smoke","Other"/)
  plot = gsn_csm_contour(wks,aerosol(:,:),res)    ; Draw a contour plot.

end



但是我还是不太清除,如何把经纬度信息和数据匹配起来画图。

请处理过calipso数据或者cloudsat数据大神指点一下。
如何把元数据和变量联系起来呢?
密码修改失败请联系微信:mofangbao
发表于 2013-6-7 14:12:32 | 显示全部楼层
给数据加上经纬度属性
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-6-7 20:54:22 | 显示全部楼层

嗯。现在的问题是经纬度属性是和数据对不上。因为calipso是记录的不同高度中的气溶胶的类型的数据。
还有一个问题如何把元数据中的维度信息和变量的信息对应起来。这个和一般的hdf数据信息不一致。感觉有点奇怪。
密码修改失败请联系微信:mofangbao
发表于 2013-8-8 11:25:46 | 显示全部楼层
kongfeng0824 发表于 2013-6-7 20:54
嗯。现在的问题是经纬度属性是和数据对不上。因为calipso是记录的不同高度中的气溶胶的类型的数据。
还有 ...

有解决问题吗??能把做好的东西代码分享一下吗??
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-8-8 13:11:55 | 显示全部楼层
加多了个宝 发表于 2013-8-8 11:25
有解决问题吗??能把做好的东西代码分享一下吗??

不好意思,还没有做完,还在继续做。
密码修改失败请联系微信:mofangbao
发表于 2013-9-30 00:17:32 | 显示全部楼层
谢谢分享,谢谢
密码修改失败请联系微信:mofangbao
发表于 2013-11-27 12:46:48 | 显示全部楼层
请问楼主解决了么,我现在也遇到这个问题
密码修改失败请联系微信:mofangbao
发表于 2013-12-2 10:28:35 | 显示全部楼层
好啊,太感谢了!
密码修改失败请联系微信:mofangbao
发表于 2013-12-2 10:28:46 | 显示全部楼层
好啊,太感谢了!
密码修改失败请联系微信:mofangbao
发表于 2014-7-3 15:30:52 | 显示全部楼层
hi,我现在处理hdf数据也遇到了和你一样的问题,请问您最后是如何解决的?可否分享下?非常感谢!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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