Web系统中影像底图制作方案

0
分享 2016-05-29
目前,越来越多的Web 地图服务、LBS位置服务等广泛使用高分辨率影像数据作为底图,影像数据是航拍或者高分辨率的卫星影像。这些影像数据主要来源于制作好的DOM产品,这些DOM产品以分幅的形式存在,存储格式主要是GeoTiff。
如图1为一个制作流程,这个流程是基于以下背景制定的:
(1) 分幅影像,数量成千上万
(2) 地方坐标系,或者缺失坐标
(3) 空间分辨率高,数据量数百G


图1:影像底图生产流程图
 
  • 影像镶嵌

为了方便后面的处理,一般按照行政区(如地级市)为单位进行分幅图像的镶嵌,同时也为了减少后面发布服务和切图的出错概率。
注:ArcGIS中可以不用镶嵌使用 .mxd工程文件方式发布服务和切图。
  • 定义投影

地方坐标系是非标准坐标参考,为了让软件识别而指定相应的投影信息,为后面的处理做好准备。
  • 脱分辨率处理

由于航片空间分辨率比较高(甚至达到0.1米),根据有关部门规定,发布到web上的影像数据空间分辨率不能太高,需要将高分辨率影像数据降低到一定分辨率下。
  • 重投影

DOM数据一般使用地方坐标系或者北京54、西安80等坐标系,Web地图采用的是web mercator、CGS2000等坐标系,需要做投影转换。
  • 偏移

有关部门规定web底图需要做位置的偏移。
  • 发布缓存服务和切图

在ArcGIS中发布服务和贴图。
上述的流程图,并不完全适用于所有的web底图制作,仅作为一个较为通用的流程。不同地区、不同单位会根据自身需要和自身情况增加或减少一些流程,或者调整流程顺序等。下面以这个通用流程为例,介绍在底图生产中经常遇到的一些问题以及在ENVI中的解决方法。
ENVI中的解决方案
对上述步骤中问题的解决方法进行总结,如下图2所示。提供了一个完整的利用DOM数据进行底图制作的解决方案。图2中ENVI所提供的功能均可以根据用户需要进行定制开发,实现批处理操作。

图2:ENVI在底图生产中的应用

1. 影像镶嵌
(1)图像镶嵌
由于航拍数据空间分辨率较高,数据量较大,分幅数据的数量也多,影像镶嵌需要大量的时间。为了提高生产效率,我们推荐使用ENVI的批量镶嵌工具。工具下载:http://blog.sina.com.cn/s/blog ... .html
下面是我们的效率测试结果:
Ÿ 系统: Windows 7 64位
Ÿ 内存: 16GB
Ÿ 航片景数: 1675景
Ÿ 空间分辨率: 0.25米
Ÿ 数据总量: 200多GB
Ÿ 镶嵌所用时间: 低于4小时

(2)坏点修补
在有些情况下,DOM影像本身都会存在一些黑点或者白点,尤其是航空影像。当透明显示或者PNG格式切片时候就会出现图3现象。


图3 :将0值透明显示

为了修复原始数据中的“坏点”,我们专门编写了ENVI扩展工具(Fix White Black),可以利用“坏点”邻域像元的均值进行“坏点”修复,并且可以根据用户需求定制坏点修复批处理功能。工具下载:http://blog.sina.com.cn/s/blog_764b1e9d010195d5.html


图4:坏点修复工具


图5:修复后的结果

注:这个步骤可以放到“脱分辨率”后。
2. 定义投影
由于航拍数据只有影像左上角地理坐标信息,需要对数据进行投影定义。可以使用ENVI提供的投影定义功能。主要有以下几个优势:
Ÿ 根据自身需要进行投影坐标系定义;
Ÿ 可以定制批量定义投影工具;
Ÿ 可以与后续的重投影操作结合。
如下为ENVI中定义2000地理坐标系的方法:
(1) 定义基准面和椭球体
找到路径:C:\Program Files\Exelis\ENVI50\classic\map_proj
Ÿ 修改datum.txt文件:在最下边添加:D_China_2000, CGCS2000, 0, 0, 0
Ÿ 修改ellipse.txt文件:在最下边添加:CGCS2000, 6378137.0, 6356752.314140356
(2) 添加坐标
1) 启动ENVI Classic;
2) 打开Map – >Customize Map Projections


图6:自定义坐标2000投影坐标(2000坐标系应该只有地理坐标,2000投影坐标第一次从客户那里听到)

3) 定义之后,选择Projection –> Add New Projection…
4) 然后选择File – >Save Projections,覆盖map_info.txt文件即可。

本地化坐标工具包:http://blog.sina.com.cn/s/blog_764b1e9d010195oq.html
(3) 使用坐标系
在ENVI5或者ENVI classic中都可以使用前面定义的坐标系。如下是在ENVI5中给数据指定坐标信息。
1) 在ENVI 5中打开镶嵌完的结果文件,在工具箱选择/Raster Management/Edit ENVI Header工具,选择镶嵌结果文件,在弹出的对话框中选择Edit Attributes –> Map Info…;
2) 选择“Change Proj…”按钮,如下图7所示,选择之前定义的“CGCS2000”坐标系。点击OK即可。
3) 这个数据有了投影信息了,可以做投影转换等处理。


图7:指定坐标系

3. 脱分辨率
脱分辨率处理的本质就是对影像进行重采样,获取不同空间分辨率的底图,从而可以满足不同级别的瓦片需求。而脱分辨率处理同样有可能会导致坏点的出现,ENVI提供了四种重采样方法:最近邻域法、双线性内插法、三次卷积、Pixel Aggregte(降低分辨率时候可选择)。在处理中,我们可以选择最近邻域法,能最大程度避免坏点的重新出现。并且可以定制批处理工具,从而提高生产效率,减少人工投入量。


图8:Resize data工具参数设置面板

我们将一个150g大小,0.000009度分辨率的数据降低到0.000018度分辨率,共花费2个多小时。
4. 重投影
由于不同地区、不同单位都有自身的投影标准,在底图制作中,需要对航片数据进行重投影操作,如下图所示为ENVI 5.0提供的重投影工具(/Raster Management/Reproject Raster),采用ArcGIS的投影转换引擎,直接可以选择使用ArcGIS中的投影种类。
注:在处理结果中,会将backgroud设定的值变成Nodata值(ArcGIS中),默认是0,当原图像中存在0值(未修复)的情况下会出现图3。为了避免这种情况的发生,可以采用如下两种方法避免:
1) 利用ENVI提供的API进行重投影工具的定制与开发,并且可以实现批处理操作。
2) 利用ENVI Classic的投影转换工具(Map – >Convert Map Projection,如图所示)


图9:ENVI重投影工具


图10:ENVI Classic的投影转换工具

5. 偏移
栅格数据的坐标通过两个值就可以确定:左上角第一个点坐标和图像空间分辨率。因此对栅格数据进行偏移可以直接修改左上角第一个点坐标,三种方法可以实现:
(1) 打开ENVI栅格数据的hdr头文件中的坐标信息。如下图所示,修改横标识的起始点坐标。

 
图11:Hdr头文件中的坐标信息

(2) 打开edit header->Edit Map Information,修改下图中红框部分。


图12:编辑地图坐标信息 为了减少工作量、提高工作效率,可以使用 IDL 进行偏移工具的定制开发,实现自动化地、批量的操作。

文章来源:http://blog.sina.com.cn/s/blog_764b1e9d010196a9.html

0 个评论

要回复文章请先登录注册