Setup lat2d / lon2d from NDFD data

From: Mark <WxWizard1_at_nyahnyahspammersnyahnyah>
Date: Mon Jul 26 2010 - 14:02:43 MDT

Hi All,

I'm trying to plot some NDFD grib2 wind data and I am have difficulty
properly setting up the resulting NCL based lat2d / lon2d variables. It
seems like the resulting lat2d / lon2d variables are somehow one
dimensional whereas they should be two dimensional.

Here is the script:
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

begin

wdir_file =
addfile("/home/mark/Degrib/degrib/bin/WindDir_07231800.nc","r") ;
Created from degrib.
wspd_file =
addfile("/home/mark/Degrib/degrib/bin/WindSpd_07231800.nc","r") ; A
printVarSummary has some info on this below.
printVarSummary(wspd_file)

lon2d = wspd_file->longitude
lat2d = wspd_file->latitude
printVarSummary(lat2d)
printVarSummary(lon2d)

nlat = dimsizes(lat2d(:,0))
nlon = dimsizes(lon2d(0,:))
rad = 4.0*atan(1.0)/180.

U =
-wspd_file->WindSpd_SFC(0,:,:)*sin(rad*wdir_file->WindDir_SFC(0,:,:))
;U!0 = "lat2d"
;U!1 = "lon2d"
U@_FillValue = 9999
U@MapProjection = wspd_file->MapProjection
U@YCells = wspd_file->YCells
U@XCells = wspd_file->XCells
U@lat2d = lat2d
U@lon2d = lon2d
U@ProjectionHr = wspd_file->ProjectionHr
printVarSummary(U)

V =
-wspd_file->WindSpd_SFC(0,:,:)*cos(rad*wdir_file->WindDir_SFC(0,:,:))
;U!0 = "lat2d"
;U!1 = "lon2d"
V@_FillValue = 9999
V@MapProjection = wspd_file->MapProjection
V@YCells = wspd_file->YCells
V@XCells = wspd_file->XCells
V@lat2d = lat2d
V@lon2d = lon2d
V@ProjectionHr = wspd_file->ProjectionHr

;****************************************************************************
; PREPARE PLOT
;****************************************************************************

   wks = gsn_open_wks("X11","vector") ; open an X11 window

   res = True
   res@gsnLeftString = "Wind"
   res@tfDoNDCOverlay = True
   res@gsnAddCyclic = False ; regional data
   res@gsnMaximize = True ; Use full area
   res@vcRefMagnitudeF = 10.0 ; define vector
ref mag
   res@vcRefLengthF = 0.045 ; define length
of vec ref
   res@vcGlyphStyle = "CurlyVector" ; turn on curly
vectors
   res@vcMinDistanceF = 0.017
   res@pmTickMarkDisplayMode = "Always"
   res@mpFillOn = False ; turn off map fill
   res@mpOutlineDrawOrder = "PostDraw" ; draw
continental outline last
   res@mpOutlineBoundarySets = "GeophysicalAndUSStates" ; state boundaries

   
;****************************************************************************
   ; usually, when data is placed onto a map, it is TRANSFORMED to the
specified
   ; projection. Since this model is already on a native lambert
conformal grid,
   ; we want to turn OFF the tranformation.
   
;****************************************************************************
   res@tfDoNDCOverlay = True

   
;****************************************************************************
   ; The following 4 pieces of information are REQUIRED to properly display
   ; data on a native lambert conformal grid. This data should be specified
   ; somewhere in the model itself.
   
;****************************************************************************
   res@mpProjection = "LambertConformal"
   res@mpLambertParallel1F = 25.
   res@mpLambertParallel2F = 25.
   res@mpLambertMeridianF = -95.

   res@mpLimitMode = "Corners" ; choose range of map
   res@mpLeftCornerLatF = U@lat2d(0,0) ; ERROR HERE
[fatal:Attributes only have one dimension, 2 subscripts used]
   res@mpLeftCornerLonF = U@lon2d(0,0)
   res@mpRightCornerLatF = U@lat2d(nlat-1,nlon-1)
   res@mpRightCornerLonF = U@lon2d(nlat-1,nlon-1)

   vector = gsn_csm_vector_map_ce(wks,U(:,:),V(:,:),res)

end
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Here is some of the relevant output:

FROM printVarSummary(wspd_file):

    Variable: wspd_file
    (0)
    filename: WindSpd_07231800
    path: /home/mark/Degrib/degrib/bin/WindSpd_07231800.nc
        file global attributes:
           title : GRIB Data translated to NetCDF
           Conventions : CF-1.0
           CreatedBy : degrib
           comment : Used degrib with: -NetCDF 3
           references : http://www.nws.noaa.gov/mdl/NDFD_GRIB2Decoder/
        dimensions:
           ncl_scalar = 1
           ProjectionHr = 1 // unlimited
           YCells = 689
           XCells = 1073
        variables:
           character MapProjection ( ncl_scalar )
              long_name : MapProjection
              grid_mapping_name : lambert_conformal_conic
              EarthShape : sphere
              EarthRadius_KM : 6371.2
              EarthRadius : 6371.200000 km
              standard_parallel : 25
              longitude_of_central_meridian : -95
              latitude_of_projection_origin : 25
              LowerLeftLatitude : 20.191999
              LowerLeftLongitude : -121.554001

           double YCells ( YCells )
              units : m
              long_name : y coordinate of projection
              standard_name : projection_y_coordinate
              grid_spacing : 5079.406000 m
              TrueGridLength_Latitude : 25
              _CoordinateAxisType : GeoY

           double XCells ( XCells )
              units : m
              long_name : x coordinate of projection
              standard_name : projection_x_coordinate
              grid_spacing : 5079.406000 m
              TrueGridLength_Latitude : 25
              _CoordinateAxisType : GeoX

           float longitude ( YCells, XCells )
              long_name : longitude coordinate
              units : degrees_east
              precision : 6
              grid_mapping : MapProjection
              standard_name : longitude
              _CoordinateAxisType : Lon

           float latitude ( YCells, XCells )
              long_name : latitude coordinate
              units : degrees_north
              precision : 6
              grid_mapping : MapProjection
              standard_name : latitude
              _CoordinateAxisType : Lat

           float WindSpd_SFC ( ProjectionHr, YCells, XCells )
              long_name : Wind speed
              units : knots
              coordinates : longitude latitude
              ReferenceTime : 1279897200
              ReferenceTimeString : 2010-07-23 15:00:00 00:00
              gridType : SCALAR
              level : SFC
              DescriptiveLevel : 0[-] SFC="Ground or water surface"
              OriginatingCenter : ( 8, 65535 )
              precision : 3
              valid_min : 0
              valid_max : 40.043
              NumMissing : 371047
              _FillValue : 9999
              missing_value : 9999
              grid_mapping : MapProjection
              GRIBMessageVersion : 2
              GRIBMessageUnits : m/s
              GRIB2_Discipline : 0
              GRIB2_Sect4TemplateNumber : 0
              GRIB2_Sect4ParameterCategory : 2
              GRIB2_Sect4ParameterNumber : 1
              GRIB2_GenerationProcess : 2
              GRIB2_FstFixedSurfaceType : 1
              GRIB2_FstFixedSurfaceValue : 0
              GRIB2_SndFixedSurfaceType : 255
              GRIB2_SndFixedSurfaceValue : 0

           short ProjectionHr ( ProjectionHr )
              long_name : Projection Hour After ReferenceTime
              units : hours since 2010-07-23 15:00:00 00:00
              _CoordinateAxisType : Time
              FirstValidTime : 1279908000
              FirstValidTimeString : 2010-07-23 18:00:00 00:00
              FirstProjectionHR : 3

FROM printVarSummary(lat2d):

    Variable: lat2d
    Type: float
    Total Size: 2957188 bytes
                 739297 values
    Number of Dimensions: 2
    Dimensions and sizes: [YCells | 689] x [XCells | 1073]
    Coordinates:
                 YCells: [-263789.4687076081..3230841.859292392]
                 XCells: [-2763204.499231992..2681918.732768008]
    Number Of Attributes: 6
       long_name : latitude coordinate
       units : degrees_north
       precision : 6
       grid_mapping : MapProjection
       standard_name : latitude
       _CoordinateAxisType : Lat

FROM printVarSummary(U):

    Variable: U
    Type: float
    Total Size: 2957188 bytes
                 739297 values
    Number of Dimensions: 2
    Dimensions and sizes: [689] x [1073]
    Coordinates:
    Number Of Attributes: 7
       ProjectionHr : 3
       lon2d : <ARRAY of 739297 elements>
       lat2d : <ARRAY of 739297 elements>
       XCells : <ARRAY of 1073 elements>
       YCells : <ARRAY of 689 elements>
       MapProjection : 0x00
       _FillValue : 9999

FINALLY, here is the error, which occurs at the line
"res@mpLeftCornerLatF = U@lat2d(0,0)"

    fatal:Attributes only have one dimension, 2 subscripts used
    fatal:Execute: Error occurred at or near line 86 in file
    Plot_NDFD_Wind_Vectors.ncl

In looking at the various printVarSummaries, it appears:
1) The original latitude and longitude start out as 2D.
2) The intermediate variables lat2d and lon2d are 2D
3) The final variables U@lat2d, U@lon2d (and V@lat2d, V@lon2d i assume)
appear to be 1d arrays.

Any ideas as to what I'm doing wrong? All help is greatly welcomed.

Thanks!

Mark

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Mon Jul 26 14:19:49 2010

This archive was generated by hypermail 2.1.8 : Wed Jul 28 2010 - 10:42:06 MDT