[ncl-talk] How to get the regional data of SMAP L4 *(HDF5 format)
Dennis Shea
shea at ucar.edu
Mon Dec 18 08:09:56 MST 2017
You are welcome.
It is best not to send direct emails.
Please send all emails to ncl-talk at ucar.edu (cc'd here)
==============
The original script had the comment:
;---Manually add a _FillValue to lat/lon;
* not sure why ;---_FillValue not associated with the variable*
lat2d at _FillValue = -9999.0
lon2d at _FillValue = -9999.0
;printMinMax(lat2d, 0)
;printMinMax(lon2d, 0)
The comment should have been:
;---Manually add an _FillValue attribute to lat/lon
*;---Not sure why but there is no _FillValue associated with the
;---'latitude' and 'longitude' variables on the file*Variable: lat2d
<===== printVarSummary(lat2d)
Type: float
Total Size: 1565536 bytes
391384 values
Number of Dimensions: 2
Dimensions and sizes: [DIM_000 | 406] x [DIM_001 | 964]
Coordinates:
*Number Of Attributes: 2 long_name : Latitude of the center of the Earth
based grid cell. units : degrees_north*
===
Note: There is no *_FillValue* attribute associated with lat2d ('latitude'
on the file).
However, if you use 'printMinMax(lat2d,0)', you will see a minimum value of
-9999.
This is why ncl-talk frequently states:
The most important rule in data processing is:
*Look at your data*Using
*printMinMax(lat2d,0) *yields
(0) Latitude of the center of the Earth based grid cell.
(degrees_north) :
*min=-9999 max=83.632*
*Obviously, -9999.0 is not a valid latitude.*
'We' had to manually attach the _FillValue in the script to assure correct
results.
Cheers
D
On Sun, Dec 17, 2017 at 2:56 AM, 易路 <dg1225033 at smail.nju.edu.cn> wrote:
> Dear Dennis Shea,
>
> Thanks very much for your such professional test to check whether the
> grids of SMAP L4 is rectilinear. This test result that the grids of SMAP L4
> belongs to rectilinear solved my confusion why I could successfully
> extracte the regional data by coordinate subscripting once the soil
> moisture variable was given the coordinate.
>
> Looking into the matrix of la2d and lon2d of the SMAP L4, I found that
> although they are two dimensional, but acturally they can be recorded only
> in one dimension, since each row of lon2d is the same, and each column of
> lat2d is the same. So, I wrote the script as follows to cordinate extract
> the regional data, and it worked.
>
> lat2d = f->cell_lat
> lon2d = f->cell_lon
> soilMoisture = f->sm_rootzone
> soilMoisture!1="lat"
> soilMoisture!2="lon"
> soilMoisture&lon=lon2d(0,:)
> soilMoisture&lat=lat2d(:,0)
> soilMoisture_region = soilMoisture({maxLatBoundary:minLatBoundary},{
> minLonBoundary:maxLonBoundary})
>
> It's very nice of you to correct my understanding about the relation ship
> between lat/lon dimension and the grid structure. Two dimensions are
> *'almost* *always*' but not absolutely curvilinear. This is very
> important for me!
>
> Greatly appreciate for your precious attention, time and professional help.
>
> with best regards!
> Sincerely,
> Yi Lu
>
>
>
>
>
> 易路
>
> 南大邮件系统/学生/博士生/12级博士生
>
> 南京市汉口路22号
> <https://maps.google.com/?q=%E5%8D%97%E4%BA%AC%E5%B8%82%E6%B1%89%E5%8F%A3%E8%B7%AF22%E5%8F%B7&entry=gmail&source=g>
>
>
>
>
> ------------------ Original ------------------
> *From: * "Dennis Shea"<shea at ucar.edu>;
> *Date: * Sat, Dec 16, 2017 01:03 AM
> *To: * "Mary Haley"<haley at ucar.edu>;
> *Cc: * "易路"<dg1225033 at smail.nju.edu.cn>; "ncl-talk"<ncl-talk at ucar.edu>;
> *Subject: * Re: [ncl-talk] How to get the regional data of SMAP L4 *(HDF5
> format)
>
> What Mary wrote is generally correct ... Specifically:
> ========================
> You are trying to extract the region from your HDF5 data by using
> coordinate subscripting.
>
> *Coordinate subscripting can only be done on rectilinear data*, *which is
> data represented by one-dimensional lat/lon arrays that are the same length
> as their corresponding dimension.*
>
> Your data is likely curvilinear, which means your data is represented by
> two-dimensional lat/lon arrays. I say this because in your code it looks
> like you are extracting 2D lat/lon arrays:
>
> lat2d = f->cell_lat
> lon2d = f->cell_lon
> nSmapLat = dimsizes(lat2d(:,0))
> nSmapLon = dimsizes(lon2d(0,:))
> ===========================
> Generally, when people see two dimensional latitude & longitude arrays (
> cell_lat[*][*] and cell_lon[*][*] ), the grid structure is *'almost*
> *always*' curvilinear. However, I noted that the file is a *L4* file (
> *SMAP_L4*). NASA Level-4 files are '*almost always*' on a 'nice' grid.
>
> I used an undocumented and unsupported function of mine to test if the
> grid is a rectilinear grid despite the two-dimensional latitude &
> longitude arrays. The function returns *True* if it is rectilinear and
> *False* otherwise.
>
> %> ncl tst.smap_rectilinear.ncl
>
>
> The grid is rectilinear. Hence, you can use the approach you originally
> used. (It did need a few improvements :-) )
>
> %> ncl smap_regional.ncl_YiLu
>
> Yes ... there are a fe locations over the water but if you use a higher
> resolution map that will not be the case.
>
> Good luck
>
> On Thu, Dec 14, 2017 at 9:21 AM, Mary Haley <haley at ucar.edu> wrote:
>
>> Dear Yi Lu,
>>
>> You are trying to extract the region from your HDF5 data by using
>> coordinate subscripting.
>>
>> Coordinate subscripting can only be done on rectilinear data, which is
>> data represented by one-dimensional lat/lon arrays that are the same length
>> as their corresponding dimension.
>>
>> Your data is likely curvilinear, which means your data is represented by
>> two-dimensional lat/lon arrays. I say this because in your code it looks
>> like you are extracting 2D lat/lon arrays:
>>
>> lat2d = f->cell_lat
>> lon2d = f->cell_lon
>> nSmapLat = dimsizes(lat2d(:,0))
>> nSmapLon = dimsizes(lon2d(0,:))
>>
>> Given this information, you cannot use coordinate subscripting to
>> subscript your data. Instead, you either need to use the function
>> *getind_latlon2d* or *region_ind* to get the indexes of the area of
>> interest. For example:
>>
>> lat_reg = (/minLatBoundary,maxLatBoundary/)
>> lon_reg = (/minLonBoundary,maxLonBoundary/)
>> ij = getind_latlon2d(lat2d,lon2d,lat_reg,lon_reg)
>> sm_regional = sm(ij(0,0):ij(1,0),ij(0,1):ij(1,1))
>>
>> Before plotting, you need to subset your lat2d / lon2d arrays using the
>> same indexing:
>>
>> res at sfXArray = lon2d(ij(0,0):ij(1,0),ij(0,1):ij(1,1))
>> res at sfYArray = lat2d(ij(0,0):ij(1,0),ij(0,1):ij(1,1))
>>
>> Please see our "Subsetting / extracting data based on lat / lon values"
>> example page:
>>
>> http://www.ncl.ucar.edu/Applications/latlon_subset.shtml
>>
>> and in particular, look at examples latlon_subset_2.ncl and
>> latlon_subset_3.ncl, which show the difference between getind_latlon2d and
>> region_ind.
>>
>> Also, to better understand the different types of data (rectilinear,
>> curvilinear, unstructured) and how to plot them, see:
>>
>> http://www.ncl.ucar.edu/Applications/plot_data_on_map.shtml
>>
>> Good luck,
>>
>> --Mary
>>
>>
>> On Wed, Dec 13, 2017 at 7:05 PM, 易路 <dg1225033 at smail.nju.edu.cn> wrote:
>>
>>> Hi, all
>>> Sorry to disturb you for technical help.
>>>
>>> I am trying to extract the regional data from the soil product SMAP L4
>>> which is stored in the format of HDF5. I wrote the ncl script taking
>>> referecnce to the example listed on the web of
>>> http://www.ncl.ucar.edu/Applications/HDF.shtml. But the extracted data
>>> were not in the demond region. So would you please help me to find the
>>> faults in my ncl script? The main part of this script is as follow, and
>>> the detail information can be downloaded from the accessory.
>>> ********main part of the script *********
>>> nFiles = dimsizes(iFiles)
>>> f = addfile(iFiles(0), "r")
>>> lat2d = f->cell_lat
>>> lon2d = f->cell_lon
>>>
>>> nSmapLat = dimsizes(lat2d(:,0))
>>> nSmapLon = dimsizes(lon2d(0,:))
>>> minSmapLat = min(lat2d)
>>> maxSmapLat = max(lat2d)
>>> minSmapLon = min(lon2d)
>>> maxSmapLon = max(lon2d)
>>>
>>> lat=fspan(minSmapLat, maxSmapLat, nSmapLat)
>>> lat!0="lat"
>>> lat&lat=lat
>>> lat at units="degrees_north"
>>> lat at long_name="Latitude"
>>> lon=fspan(minSmapLon,maxSmapLon, nSmapLon)
>>> lon!0="lon"
>>> lon&lon=lon
>>> lon at units="degrees_east"
>>> lon at long_name="Longitude"
>>>
>>> lat2d!0="lat"
>>> lat2d!1="lon"
>>> lat2d&lon=lon
>>> lat2d&lat=lat
>>>
>>> lon2d!0="lat"
>>> lon2d!1="lon"
>>> lon2d&lon=lon
>>> lon2d&lat=lat
>>>
>>> minLatBoundary = 25
>>> maxLatBoundary = 35
>>> minLonBoundary = 110
>>> maxLonBoundary = 120
>>>
>>> sm = f->sm_rootzone
>>> printVarSummary(sm)
>>> sm!0="lat"
>>> sm!1="lon"
>>> sm&lon=lon
>>> sm&lat=lat
>>> printVarSummary(sm)
>>>
>>> sm_regional = sm({minLatBoundary:maxLatBound
>>> ary},{minLonBoundary:maxLonBoundary})
>>> ***********************************
>>>
>>> Thanks a lot for your precious attentions and time!
>>>
>>> Yi Lu
>>>
>>>
>>>
>>>
>>>
>>> 易路
>>>
>>> 南大邮件系统/学生/博士生/12级博士生
>>>
>>> 南京市汉口路22号
>>> <https://maps.google.com/?q=%E5%8D%97%E4%BA%AC%E5%B8%82%E6%B1%89%E5%8F%A3%E8%B7%AF22%E5%8F%B7&entry=gmail&source=g>
>>>
>>> ------------------------------
>>> *从腾讯企业邮箱发来的超大附件*
>>>
>>> <http://exmail.qq.com/cgi-bin/ftnExs_download?k=523465623d8c4a92182f6ffe1038075719575c5a030c065706190304015b1d51000c504f0e0e55561b075257010c0452050d070051381e65657924326874043a65793a0547506f57060550520f0905310605565207086f334007555107670055181a4b4c5f0d3058&t=exs_ftn_download&code=64eb780e&s=email>
>>> SMAP_L4_SM_gph_20150815T013000_Vv3030_001.h5
>>> <http://exmail.qq.com/cgi-bin/ftnExs_download?k=523465623d8c4a92182f6ffe1038075719575c5a030c065706190304015b1d51000c504f0e0e55561b075257010c0452050d070051381e65657924326874043a65793a0547506f57060550520f0905310605565207086f334007555107670055181a4b4c5f0d3058&t=exs_ftn_download&code=64eb780e&s=email>
>>> (136.33M, 2018年01月12日 11:27 到期)
>>> 进入下载页面
>>> <http://exmail.qq.com/cgi-bin/ftnExs_download?k=523465623d8c4a92182f6ffe1038075719575c5a030c065706190304015b1d51000c504f0e0e55561b075257010c0452050d070051381e65657924326874043a65793a0547506f57060550520f0905310605565207086f334007555107670055181a4b4c5f0d3058&t=exs_ftn_download&code=64eb780e&s=email>
>>> :http://exmail.qq.com/cgi-bin/ftnExs_download?k=523465
>>> 623d8c4a92182f6ffe1038075719575c5a030c065706190304015b1d5100
>>> 0c504f0e0e55561b075257010c0452050d070051381e6565792432687404
>>> 3a65793a0547506f57060550520f0905310605565207086f334007555107
>>> 670055181a4b4c5f0d3058&t=exs_ftn_download&code=64eb780e&s=email
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20171218/8bf2536b/attachment.html>
More information about the ncl-talk
mailing list