- 积分
- 3508
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-6-1
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 lq_nuist 于 2018-1-26 19:17 编辑
哈~大前天为了解决一个月前发的提问帖(至今无人问津。。。)用Matlab提取三维二进制文件所需站点数据http://bbs.06climate.com/forum.p ... 58234&fromuid=72509(出处: 气象家园)
困扰我两个月的问题,从MATLAB小白到自己完整的编一个程序并且调试没有错误!(数据量不大,虽然用EXCEl两个小时也能解决,我还是强迫自己花了整整一天的时间用MALTAB算出来了,嘻)
小白上手很痛苦,基础知识都不懂,还好网上资源广,左拼右凑终成功,怕我过了一阵就忘了,资源再找起来又比较费事,所以把有用的经验资料啥的发在帖子里,以便今后查找用。两个月的烦恼终于撂了,激动的我关了电脑浪了整整两天没有学习,今日上线一看帖子咋地屏蔽了,唉,家园新人啥都不懂。。。怕我过一阵子又忘了当时咋编出来的,趁现在记得,总结一下过程(自己写的)。。。
———————————————————正经说事分割线———————————————————
问题:现有全国13年的GPP.dat和NPP.dat的二进制数据及其头文件,需要提取出指定16个站点及其周围九宫格上共9个点的数据。
ENVI头文件如下:
samples = 3080
lines = 2186
bands = 13
header offset = 0
file type = ENVI Standard
data type = 12
interleave = bsq
sensor type = Unknown
byte order = 0
map info = {Geographic Lat/Lon, 1.0000, 1.0000, 67.80228509, 54.67476805, 2.2305700000e-002, 1.8023360000e-002, WGS-84, units=Degrees}
coordinate system string = {GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]}
wavelength units = Unknown
从头文件中可以获知:该数据的排列方式为BSQ格式(PS:遥感影像的三种存储格式:BSQ是按波段保存,也就是一个波段保存后接着保存第二个波段;BIL是按行保存,就是保存第一个波段的第一行后接着保存第二个波段的第一行,依次类推;BIP是按像元保存,即先保存第一个波段的第一个像元,之后保存第二波段的第一个像元,依次保存。)地理坐标系为WGS-84,投影坐标系为经纬度,一共有13个波段,每个波段是处理后的年GPP或NPP值,13个波段即13年的数值,BSQ格式说明数据是按年排列的,每一个波段的图像上共有2186行,3080列,最左上角点的经纬度为 67.80228509°E,54.67476805°N,与经度平行方向的步长为2.2305700000e-002°,与纬度方向平行的步长为1.8023360000e-002°。
为了更清晰地描述数据结构,示意图如下:
图1
|
|