Mary helped me with some of this code; getting me started with reading
an nc file, collecting a list array of all of the file's variables, and
making a loop where I tested each variable for its type and dimensions
(at least).
f=addfile... "r")
varNames=getfilevarnames(f)
varNamesSize=dimsizes(varNames)
StringOfVarNamesToInsert=""
do l=0, varNamesSize-1
tmp = f->$varNames(l)$
rank=dimsizes(dimsizes(tmp))
if (rank.ge.1 .and. isdimnamed(tmp,0) .and. (tmp!0 .eq. "recNum")
) then ; (B) ; skip this variable and go to the next in the
varNames array
if (l.eq.0)
StringOfVarNamesToInsert=varNames(l)
else
StringOfVarNamesToInsert=StringOfVarNamesToInsert+ ", "
+varNames(l)
end if
end if
delete(rank)
delete(tmp)
end do
What I have, so far, creates a string of variable names delimited with a
comma. Example below. I would rather have ncl create an array that is a
subset of the varNames array where the names in the new array have 1) a
rank of 1+, 2) a named dimension !0, and 3) the !0 dimension name
matching "recNum"
How is that for compliecated? I sort of imagine that I would come up
with a function which does these tests and returns True or False to
ind(); Maybe:
newVarNames = ind( myfunction(tmp).eq. True )
Am I on the right track? or what has someone found to work for them,
along these lines?
Example string of variable names:
rawMETAR, correction, maxTemp24HourQCD, maxTemp24HourQCR,
maxTemp24HourQCA, maxTemp24HourDD, maxTemp24Hour, minTemp24HourQCD,
minTemp24HourQCR, minTemp24HourQCA, minTemp24HourDD, minTemp24Hour,
altimeterQCD, altimeterQCR, altimeterQCA, altimeterDD, altimeter,
timeObs, elevation, longitude, latitude, locationName, stationName, wmoId
Thanks,
Donna
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Thu Apr 09 2009 - 17:37:13 MDT
This archive was generated by hypermail 2.2.0 : Sun Apr 12 2009 - 14:28:35 MDT