阅读:3378回复:6
MODIS的HDF头文件读取
<P>请教:关于modis的HDF文档结构的读取,怎么通过编程来实现阿?</P>
<P>或者是哪位大虾那有关于HDF的库阿</P> <P>望能交流,<a href="mailtlianjian2001@163.com" target="_blank" >lianjian2001@163.com</A></P> |
|
1楼#
发布于:2009-06-10 09:33
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
|
|
2楼#
发布于:2009-02-09 16:44
IDL有一个pro能输出所有的属性值,google一下 "hdf_info filetype:pro"就找的到。<br><br>大致思路是<br>通过hdf_sd_attrinfo函数来读取属性。<br> hdf_sd_attrinfo函数需要两个参数,sd_id,属性的序号<br> sd_id从hdf_sd_select和hdf_sd_start获得。<br> 共有多少个属性可以用hdf_sd_fileinfo获得<br>然后for循环读取,输出每一个属性。<br><br>sd_id=HDF_SD_START(filename,/read)<br>HDF_SD_FILEINFO,sd_id,nmfsds,nglobatts<br>; Get the number of MFSDs in the file<br> printf,uid," # of MFSD = ",nmfsds,FORMAT=F1<br><br> if nmfsds gt 0 then begin<br> printf,uid<br> printf,uid,FORMAT=F80<br> printf,uid," Information about MFHDF DataSets "<br> printf,uid,FORMAT=F80<br> printf,uid," NAME IDL_Type HDF_Type Rank Dimensions"<br> printf,uid,"--------- -------- ---------- ---- ------------"<br> printf,uid," ------------- Atrribute Info -------------"<br> printf,uid<br> FSD='(A10," ",A8," ",I6," ",I6)'<br> for i=0,nmfsds-1 do begin<br> sds_id=HDF_SD_SELECT(sd_id,i)<br> HDF_SD_GETINFO,sds_id,name=n,ndims=r,type=t,natts=nats,$<br> hdf_type=h,unit=u<br> if r gt 0 then HDF_SD_GETINFO,sds_id,dims=dims else dims=0<br><br> if r le 1 then FSD='(A10," ",A8," ",A12,3X,I4,3X,"[",I6,"] ",A)' $<br> else FSD='(A10," ",A8," ",A12,3X,I4,3X,"["'+$<br> STRING(r-1)+'(I4,","),I6,"] ",A)'<br> <br> printf,uid,n,t,h,r,dims,u,FORMAT=FSD<br> for j=0,nats-1 do begin<br> HDF_SD_ATTRINFO,sds_id,j,name=n,type=t,count=c,data=d,$<br> hdf_type=h<br> <br> CASE t OF<br> 'FLOAT': FB='G)'<br> 'DOUBLE': FB='G)'<br> 'STRING': FB='A)'<br> ELSE: FB='I)'<br> ENDCASE<br> <br> printf,uid,j+1,n,d[0],$<br> FORMAT='(11X,"Attribute => ",I3,2X,A13," = ",'+FB<br><br> for k=1,n_elements(d)-1 do printf,uid,d[k],FORMAT='(45X,'+FB<br> endfor<br> HDF_SD_ENDACCESS,sds_id<br> printf,uid,FORMAT='(10X,70("_"))'<br> endfor<br> endif<br> printf,uid,FORMAT=F80E<br> printf,uid," # of Global Attributes ",nglobatts<br> if nglobatts gt 0 then begin<br> printf,uid<br> printf,uid,"------------------------------------------------"<br> printf,uid,'Name','Type','Elements','Value',FORMAT=F5L<br> printf,uid,FORMAT=F80<br> printf,uid<br> for i=0,nglobatts-1 do begin<br> HDF_SD_ATTRINFO,sd_id,i,name=n,type=t,count=c,data=d<br> if (t eq 'STRING' ) then printf,uid,strtrim(n),t,c,d[0,0],FORMAT=FS else $<br> if (t eq 'FLOAT' ) then printf,uid,strtrim(n),t,c,d[0,0],FORMAT=FF else $<br> if (t eq 'DOUBLE' ) then printf,uid,strtrim(n),t,c,d[0,0],FORMAT=FD else $<br> printf,uid,strtrim(n),t,c,d[0,0],FORMAT=FI<br> endfor<br> endif<br> HDF_SD_END,sd_id<br><br><img src="images/post/smile/dvbbs/em07.gif" />
|
|
3楼#
发布于:2009-01-01 03:57
<P>如果是采用MATLAB编程的话,可以用HDFSD函数来读取HDF文件的数据流。</P>
|
|
4楼#
发布于:2008-12-18 09:06
<P>idl语言有操作hdf文件的api接口</P>
<P>或者到nasa下idl库</P> |
|
5楼#
发布于:2008-12-13 19:42
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
|
|
6楼#
发布于:2007-04-23 17:28
嗯……我也碰到这样的问题,没人帮我解决!<br><br>
![]() |
|
|