一种在Android系统上浏览大型遥感影像的方法_2

文档序号:9709122阅读:来源:国知局
获得影像的显示范围;步骤2)为在鹰眼上标注出显示范围在整个 影像中的位置,便于使用者能快速定位到当前所在的大概位置;步骤3)为显示步骤1范围内 的影像。
[0045] 步骤一中,所述的图片的属性信息包括Driver驱动信息、GCP地面控制点信息、 Projection投影信息、Band波段信息、映射的地理空间范围、图像的宽度和高度。
[0046] 步骤二中,所述的图片的压缩信息包括影像的图像宽度和高度、左上角的地理坐 标、影像上每个像素宽度和高度、影像在X轴和Y轴上的偏移量、瓦片的宽度和高度、压缩倍 数。
[0047] 本发明通过将C#的开源GDAL(Geospatial Data Abstraction Library)地理空间 数据抽象库,跨平台编译成JAVA语言的jar包。首先在Windows系统上,使用GDAL库读取遥感 影像,按行列分块的思想,将遥感影像切割成固定大小的影像瓦片,并将所有瓦片的文件以 流的方式写入瓦片流集文件(后缀为.ltt)并建立瓦片索引文件(后缀为.ltx)。其次,在 Android系统上,根据屏幕显示影像的范围计算出需显示的瓦片的行号和列号,使用拼图游 戏的思想,以多线程技术、相交块缩放后加载的方法,借助瓦片索引表读取瓦片并将瓦片影 像按规则拼接起来,实现影像在Android系统上的加载。最后,添加影像的浏览事件,包括影 像的放大、缩小、移动等,实现遥感影像在Android系统上的浏览。
[0048]接下来以加载湖南省郴州市东江湖地区的多波段高分一号影像为例,分辨率2米, 文件大小12.9GB,像素大小65968*69847,tif格式;Android移动设备采用3&111811叫61'-N5100,Android4.1操作系统,四核1.6GHz处理器,8寸屏幕,1831MB内存,1280*800的分辨 率。
[0049] 将影像转换成瓦片的文件流集文件和索引文件的步骤是:第一步,注册已编译好 的GDAL库,以支持对影像栅格数据的操作。第二步,以GA_Readonly只读方式打开影像并从 D a t a s e t对象中获得影像自带的属性信息,包括D r i v e r驱动信息、G C P地面控制点信息、 Projection投影信息、Band波段信息、映射的地理空间范围、图像的宽度和高度。第三步,把 影像的图像宽度和高度、左上角的地理坐标、影像上每个像素宽度和高度、影像在X轴和Y轴 上的偏移量、瓦片的宽度和高度、压缩倍数写入瓦片流集文件的文件头(如表1所示),文件 结构如图2所示。第四步,把影像按行列各间隔420个像素划分块,计算出各块左上角的坐 标。第五步,使用GDAL提供读取某范围内的影像可映射成指定大小的图像的函数,从影像上 读取指定波段的信息,选取三个波段为红色、绿色、蓝色的颜色值,生成24位的真彩色。第六 步,将每块中颜色值生成一个420*420大小、png格式的瓦片文件。第七步,将瓦片文件流依 次写入瓦片流集文件。第八步,将每块瓦片文件流在瓦片流集文件中的开始位置写入瓦片 索引文件,建立瓦片索引表,文件结构如图2、图3所示。第九步,注销GDAL库。
[0050] 表1瓦片文件流文件的文件头
[0051]
[0052] 拼接影像的效果如图4所示,实现的步骤是:第一步,从瓦片索引文件中读取出瓦 片索引表,即所有瓦片在瓦片文件流集文件中的起始位置。第二步,从瓦片文件流集文件的 文件头读取出影像的图像宽度和高度、左上角的地理坐标、影像上每个像素宽度和高度、影 像在X轴和Y轴上的偏移量、瓦片的宽度和高度、压缩倍数。第三步,计算出瓦片对应的影像 块大小、左上角的地理坐标、影像分割成瓦片后的行数和列数。第四步,获取当前屏幕显示 影像的范围并计算出瓦片的行号和列号,根据屏幕范围计算出各瓦片在屏幕上映射区域的 大小、左上角坐标(屏幕坐标与图像坐标的转换公式如式1和式2所示)。第五步,在 ImageView控件中,以一个瓦片开启一个线程加载的多线程技术加载瓦片,将各瓦片按指定 大小画在指定的位置上,实现在Android系统上加载遥感影像。
[0053]
1图像坐标转屏幕坐标
[0054]
:式2屏坐标转图像坐标
[0055] (LnTd表示当前显示的影像区域左上角的图像坐标,(Ls,Ts)为屏幕显示区左上 角的坐标;pixel slze为屏幕像素点的大小,即屏幕上一个像素点代表影像中pixelslze个像素 点。
[0056]浏览影像的步骤是:第一步,通过缩放、移动操作,改变影像的显示范围。第二步, 改变鹰眼中当前显示区域的标注。第三步,计算当前显示区域与上次显示区域的影像交集 区域和非交集区域。若有影像交集,则根据上次的影像、屏幕显示区域计算出影像交集的屏 幕区域和映射范围,从屏幕上显示的图像中截取此区域的图像信息,再映射到屏幕上;非交 集区域使用拼接影像的方法加载影像;清除空白区域内的影像。
[0057]使用本发明,影像按1:1的比例无损分块后,将试例影像转换成了一个7.68GB的瓦 片流集文件和206KB的瓦片索引文件,转换后的文件大小占原影像文件的59.535%,比影像 节省40.465 %的存储空间;按1:1.1的比例有损9.091 %的压缩后,生成的瓦片文件流文件 大小为6.37GB,索引文件为169KB,比原影像节省50.62%的空间。此方法对其它卫星影像的 压缩如表2所示。在常用的显示比例中,加载遥感影像的平均响应时间、最大的Heap Size堆 大小和Allocated已分配内存如表3所示。
[0058]表2无损压缩影像的比较
[0059] -
[0060]
[0061 ]表3影像的加载时间和消耗内存
[0062]
【主权项】
1. 一种在Android系统上浏览大型遥感影像的方法,其特征在于,包括以下步骤: 影像转换成瓦片文件流集文件和索引文件步骤,包括: 步骤一:读取需要进行处理的遥感影像,并获得影像中图片的属性信息; 步骤二:将图片的属性信息及压缩信息写入到瓦片流集文件的文件头中; 步骤三:将图片按预设的大小进行划分,划分出的每个分块均计算左上角相对于图片 的坐标; 步骤四:读取步骤三中的分块,将分块映射成指定大小的图像,从遥感影像上读取指定 波段的信息,选取三个波段赋予红色、绿色、蓝色的颜色值,生成24位的真彩色,将步骤三中 每个分块中的颜色值生成一个预设的大小的瓦片文件,将瓦片文件依次写入瓦片流集文 件,将每块瓦片文件在瓦片流集文件中的开始位置写入瓦片索引文件,建立瓦片索引表; 从瓦片文件流集文件和索引文件拼接影像步骤,包括: 步骤1:从瓦片索引文件中读取出瓦片索引表,即所有瓦片在瓦片文件流集文件中的起 始位置; 步骤2:从瓦片文件流集文件的文件头读取出图片的属性信息及压缩信息,计算出瓦片 对应的影像块大小、左上角的地理坐标、影像分割成瓦片后的行数和列数;获取当前屏幕显 示影像的范围并计算出瓦片的行号和列号,根据屏幕范围计算出各瓦片在屏幕上映射区域 的大小、左上角坐标; 步骤3:加载瓦片文件,将各瓦片文件按指定大小排列在指定的位置上。 浏览影像步骤,包括: 步骤1)通过缩放、移动操作,改变影像的显示范围; 步骤2)根据步骤1)中显示范围的变化,改变鹰眼中当前显示区域的标注; 步骤3)计算当前显示区域与上次显示区域的影像交集区域和非交集区域,若有影像交 集,则根据上次的影像、屏幕显示区域计算出影像交集的屏幕区域和映射范围,从屏幕上显 示的图像中截取此区域的图像信息,再映射到屏幕上;非交集区域使用从瓦片文件流集文 件和索引文件拼接影像步骤进行加载影像;清除空白区域内的影像。2. 根据权利要求1所述的一种在Android系统上浏览大型遥感影像的方法,其特征在 于,步骤一中,所述的图片的属性信息包括Driver驱动信息、GCP地面控制点信息、 Projection投影信息、Band波段信息、映射的地理空间范围、图像的宽度和高度。3. 根据权利要求1所述的一种在Android系统上浏览大型遥感影像的方法,其特征在 于,步骤二中,所述的图片的压缩信息包括影像的图像宽度和高度、左上角的地理坐标、影 像上每个像素宽度和高度、影像在X轴和Y轴上的偏移量、瓦片的宽度和高度、压缩倍数。
【专利摘要】本发明公开了一种在Android系统上浏览大型遥感影像的方法,属于遥感影像处理技术的领域。包括影像转换成瓦片文件流集文件和索引文件步骤、从瓦片文件流集文件和索引文件拼接影像步骤和浏览影像步骤,本发明为移动GIS在Android系统中的自主开发提供了可行性,可广泛应用于森林资源一类、二类、三类调查、野外辅助定位、遥感判图等野外作业中。可在Android系统上离线加载的大型遥感影像(已支持25.6GB的高分一号影像和12.9G的普莱达SPOT影像),节省磁盘空间,减少了瓦片导入移动平台的时间,为后续移动GIS在Android上的开发提供了可行性,将极大地推动移动GIS在森林资源信息采集、遥感判图等方面的应用。
【IPC分类】G06T9/00, G06T3/40, G06F3/14
【公开号】CN105469434
【申请号】CN201511029106
【发明人】林辉, 阳德志, 臧卓, 王广兴
【申请人】中南林业科技大学
【公开日】2016年4月6日
【申请日】2015年12月31日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1