码迷,mamicode.com
首页 > 编程语言 > 详细

一个强大的Java开源遥感处理软件(库)---Beam

时间:2014-12-18 22:27:25      阅读:1681      评论:0      收藏:0      [点我收藏+]

标签:遥感   波段运算   重投影   java   图像处理   

1、Beam简介

为了在Hadoop中可以序列化HDF文件,在各种搜索之后,无意中发现了一个强大的Java开源软件,它就是Beam。

对于从事遥感的研究者来说,可以通过安装Beam,将它当成一个强大开源的遥感处理软件使用。虽然没有envi那么好用,还马马虎虎过得去。至少安装Beam,不用授权文件去破解~

对于遥感软件开发人员来说,Beam的库简直一大利器!!!

用Java实现什么重投影、波段运算、主成分分析、图像裁剪、图像镶嵌,创建直方图,五花八门、各式各样、繁简不一的遥感操作,对它来说都是一碟开胃小菜。

不用担心它支持的遥感数据格式不够多,GeoTiff,HDF4,HDF5,这些常见的遥感格式,都不在话下。

附上他的官方地址:http://www.brockmann-consult.de/cms/web/beam/,Java API地址在这:http://www.brockmann-consult.de/beam/doc/apidocs/index.html,源代码在这儿:https://github.com/bcdev/beam


2、Beam中几个重要的类和概念

Product类

遥感图像在内存中的表示形式就是Product,Product只是存放着遥感影像的元数据信息,并不包含实际的遥感图像。一个Product可以包含多个Band,而ProductManager类用来管理多个Product。例如,一景tif数据或HDF数据在内存中的表示形式,就是一个Product啦。


Band

Band包含了Product中的地理参数信息,Band中的图像信息存储在ProductData中,实际上Band只是存储着图像元数据信息的"容器";其包含的信息包括:
1、FlagCoding信息
2、其在所属Product中的位置(一个Product中可以包含多个Band)
3、该Band的中心波长
4、the solar spectral flux of the band(该Band的太阳光谱通量?)
5、Band的宽度和盖度

为什么Band中的影像数据要存放在ProductData中,而不是直接存放在该Band中呢?
原因:为了尽量减少内存的消耗,所以Band不会自动去读取ProductData,而是要通过执行Band的loadRasterData()方法显式的去获取到该Band对应的ProductData。(这么做也有道理,遥感图像动不动几十上百M的,如果都直接放内存,4G内存表示可能不够用啊)


3、Beam代码示例

将Product写入到本地硬盘,下面以GeoTiff格式的影像为例

Product testProduct = tifReader .readProductNodes("F:\\exp_data\\test5.tif" , null );

ProductWriterPlugIn tifWriterPlugin = new GeoTiffProductWriterPlugIn();
GeoTiffProductWriter tifProductWriter = new GeoTiffProductWriter( tifWriterPlugin );
File outFile = new File ("F:\\草原干旱指数实验数据\\test2.tif" );//写入绝对路径,即保存为本地文件;若只填入文件名,则该File保存为内存中

testProduct .setProductWriter(tifProductWriter );
tifProductWriter .writeProductNodes(testProduct , outFile );//writeProductNodes只将Product的头文件信息存放在outFile中,Product的Band并没有写入outFile
productBand =testProduct.getBand("band_1");
productBand .writeRasterDataFully();//将Band的信息全部写入到outFile中,此时outFile就包含了Product的全部信息

从本地硬盘读取Product

Product grassProduct = grassCovertifReader.readProductNodes(
				"F:\\草原干旱指数实验数据\\设置了ProductReader后的map输出\\MCD12Q1", null);



一个强大的Java开源遥感处理软件(库)---Beam

标签:遥感   波段运算   重投影   java   图像处理   

原文地址:http://blog.csdn.net/until_v/article/details/42010861

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!