2. Technology and Engineering Center for Space Utilization, Chinese Academy of Sciences, Beijing 100094, China
近年来,随着航空航天遥感软硬件技术快速发展,所获取的高分辨率遥感影像数据量极大丰富,数据来源也十分广泛。在海量数据面前,传统的遥感影像的文件系统管理分析方式效率较低,影像数据大多是以二维显示,无法满足目前所需的影像高效管理以及快速查询显示影像地形地貌和矢量等空间信息要求。伴随大规模地形渲染与全球网格等技术的成熟,地理信息系统等相关学科越来越多地应用需要直接体现在真实的三维地理环境中,遥感影像三维可视化已逐渐成为地理信息系统热门研究方向。
得益于开源软件在GIS领域的快速发展,对GIS领域软件的竞争格局产生了深远影响,出现了诸如空间数据库PostGIS、MySQL;GIS服务器产品GeoServer、MapServer;桌面软件UDIG、QGIS、GRASS;GIS类库GDAL、OGR、Proj.4、GeoAPI;三维浏览软件World Wind、OSSIMPlanet等一系列优秀的开源软件,并在国内外得到广泛应用[1, 2, 3, 4, 5]。与商业软件相比,开源软件具有费用低、源代码公开和易修复等优点,因此在开源框架下进行软件定制和开发非常灵活。
本文在分析开源GIS系统架构基础上,选择了目前流行的开源软件PostGIS、GeoServer以及World Wind等,设计了多光谱影像三维可视化系统,实现了空间数据的组织管理和还原影像数据三维真实地貌。通过TM影像三维可视化实验结果表明,该系统具有不但具有可拓展性强、开发灵活的特点,而且在大范围地形仿真、地质灾害分析等方面有着广泛的应用前景。
1 系统架构设计与实现 1.1 系统架构设计
系统采用3层结构框架,分为可视化层、服务层和数据层3部分。可视化层以World Wind作为客户端,实现数据的选择获取,快速显示以及人机交互;服务层的GIS请求和GIS相关功能的实现利用GeoServer来完成,并为客户端提供访问接口;数据层各类数据(栅格数据、矢量数据及其他文件数据)的管理通过PostgreSQL和PostGIS实现,系统架构如图 1所示。
1.2 系统流程
通过客户端查询检索影像时,客户端向GIS服务器发送Getcapabilities请求,GIS服务器对请求作出判断并转到WMS模块,将能提供WMS和WFS服务的信息(图层个数、名称、坐标范围等)返回给 客户端,当客户端根据返回的信息选择加载影像时,再向GIS服务器对应数据图层发送GetMap请求,GIS服务器从空间数据库中提取数据,返回给WMS服务模块,将绘制出的图像加载SLD(可自定义)渲染后在客户端显示,当客户端发送WFS请求时,GIS服务器将请求转到WFS服务处理模块,将数据从数据库中提取,以KML的格式返回客户端显示,流程如图 2所示。
1.3 系统架构实现 1.3.1 空间数据管理
空间数据管理包括分类组织、存储和管理各种空间数据。空间数据库在设计时,由于自身复杂的特性,除要符合一般数据库设计的理论方法,还要注重自身的属性,对各类空间数据进行存储。主要内容包括栅格数据(遥感影像数据,DEM高程数据)和矢量数据(基础地理数据)[6, 7, 8, 9]。PostGIS是对象-关系型数据库PostgreSQL的扩展模块,具备空间数据的存储管理能力,并且提供了丰富的查询函数应对空间数据査询,利用PostgreSQL和PostGIS完全能够满足对空间数据管理的要求。
构建数据库过程中,主要涉及矢量数据信息和栅格数据信息2类数据的存储问题,存放矢量数据信息时,postgis支持多种数据格式转换,在入库之前,将矢量数据进行格式转化,坐标转换并按比例尺或行政级别(省、市、县等)处理为分层数据,通过shp2pgsql函数将要导入的Shape文件转换为sql脚本文件,在SQL窗口执行可完成矢量数据入库。
栅格数据采用文件系统方式将数据文件在硬盘进行存储管理,在数据库创建元数据表来记录影像元数据信息,针对L2级数据,在元数据表中有唯一的记录与影像数据对应,达到通过元数据表就可以快速访问到影像基本信息的目的。目前建立的影像元数据结构中主要包括了影像xml文件的重要内容(如接收站、传感器类型、波段数、各角点的经纬度和存储路径等)。
字段名称 | 代码 | 数据类型 |
内部编码 | ID | INT |
产品级别 | ProductLevel | VARCHAR2(4) |
名称 | FileName | VARCHAR2(100) |
接收站代号 | StationID | VARCHAR2(10) |
飞行器名称 | Aricraft | VARCHAR2(10) |
传感器类型 | Sensor | VARCHAR2(10) |
数据接收时间 | DataReceive | VARCHAR2(30) |
数据处理时间 | Dataprocess | VARCHAR2(30) |
波段数目 | BandNum | INT |
地理参考系统 | ProjectionName | VARCHAR2(50) |
左上角纬度 | ULLatitude | NUMBER(21,6) |
左上角经度 | ULLongitude | NUMBER(21,6) |
右上角纬度 | URLatitude | NUMBER(21,6) |
右上角经度 | URLongitude | NUMBER(21,6) |
左下角纬度 | LLLatitude | NUMBER(21,6) |
左下角经度 | LLLongitude | NUMBER(21,6) |
右下角经度 | LRLongitude | NUMBER(21,6) |
右下角纬度 | LRLatitude | NUMBER(21,6) |
中心点纬度 | CenterPointLat | NUMBER(21,6) |
中心点经度 | CenterPointLon | NUMBER(21,6) |
数据存储路径 | DataLocation | VARCHAR2(50) |
缩略图存储路径 | PreviewLocation | VARCHAR2(50) |
如表 1结构图所示,以此来解决影像读取效率和数据库存储问题。由于DEM数据与影像数据格式的相似性,采用与影像数据相同的管理方式。 由于影像数据分辨率日益增高,数据量也越来越大,对于大数据文件直接进行显示对计算机软硬件要求很高,实际操作非常困难。为此,通过建立影像金字塔来解决此问题。构建金字塔时,以原始数据作为金字塔第0层,在此基础上,以“2”为参数进行循环重采样构成金字塔各数据层,单个瓦片大小采用512像素×512像素,如图 3所示。在数据库中,单个分块表用来存储单幅影像的金字塔数据,存贮时按照层、行、列的方式来存储,根据层号、行号、列号参数可唯一确定一个影像瓦片。
1.3.2 空间数据服务器
GeoServer是OpenGIS Web服务器规范的Java实现,具有可以灵活发布地图数据,兼容WMS、WFS等特性,支持PostGIS、ArcSDE等空间数据库,并且能够实现空间数据在线编辑等。利用GeoServer地图服务器作为三层通信架构的中间层,负责协调客户端与后台服务器之间的数据通信,实现了WMS规范,即GetCapabilities、GetMap、GetFeatureInfo这3种操作:
GetCapabilities返回元数据XML;GetMap返回地图影像来表现数据;GetFeatureinfo返回地图上特殊要素的信息。
通过这3种规范化操作为实现客户端通过统一的规范访问数据,避免了客户端直接与数据库数据交换所带来效率降低的问题,并且GeoServer的功能是基于Servlet组件实现的,支持大多数Web服务器,部署在服务器上十分方便。需要配置的主要有以下内容:
1)Server配置。包括地理要素数限制、异常显示、精度和编码等信息。
2)WFS配置。包括是否启用WFS服务、服务层次、以及WFS服务器描述等。
3)WMS配置。包括是否启用WMS服务、图形表现形式等。
4)Data配置。主要包括命名空间、数据、样式、地图要素配置等。
搭建过程中,通过http://localhost:8080/geoserver/连接并登录服务器,配置数据库连接参数,与对应数据库连接,添加数据图层并完成图层发布。地图样例文件通过Udig生成自定义.sld文件,在图层发布时进行验证提交,完成地图编辑处理。
1.3.3三维可视化
客户端是整个系统最直观的部分,地图选择、图像显示与交互式浏览等都由其实现,World Wind作为技术成熟的显示引擎,采用的技术主要包括实时重采样、基于OpenGL三维模型构建与纹理贴图、本地缓存的构建等,能够实现三维可视化的目的。
在三维显示方面,利用缓存和三维地形绘制算法,实现大规模地形的渲染,对于不同的球体有对应的预设数字高程模型(地球、月球、火星),地球使用的是SRTM(shuttle radar topography mission)数据,在浏览影像时,从服务器下载的影像数据与DEM结合在一起,生成三维影像,如图 4所示[10]。
在数据检索方面,提供多种检索器,通过统一接口调用,由检索服务总体对每个检索器进行管理和调度,各检索器使用单独的线程来获取数据,在不同地区、位置、视角等情况下根据瓦片请求调度机制加载数据库已有的DEM高程金字塔和影像金字塔中对应层次的DEM和纹理影像,实现影像快速调度显示。
在数据缓存方面,采用内存缓存和文件缓存2种方式支持,实际加载时优先内存缓存,而文件缓存由提供的缓存类接口实现,实现将数据保存为本地缓存方便数据读取。
在扩展开发方面,World Wind 源码项目种类繁多且各类间相互依赖关系复杂,在直接修改源码前需要有较深的研究,否则会严重影响客户端的使用。在实际开发过程中,对于一般应用不必对底层模型和显示机理的代码进行修改,可直接利用其提供的包和接口类调用进行功能定制,再对整个工程封装,简化整个开发过程并且利于集成。
2 实验结果与分析
本文实验所使用的影像数据是Landsat获取的北京地区的TM影像L1T级数据,成像时间为2010年8月24日,数据来源于马里兰大学地球数据中心FTP(ftp://ftp.glcf.umd.edu/),DEM数据采用的是USGS网站下载的SRTM3的90 m分辨率数据。
将下载的Mapinfo地图数据通过ogr2ogr函数转换为.shp格式数据,投影坐标转换为WGS84坐标系,作为背景矢量地图,利用shp2pgsql函数完成地图矢量文件入库,同时将影像数据信息和DEM高程数据信息导入空间数据库。选取TM影像的3、2、1三波段组合tiff图像作为快视图,如图 5所示。
将TM影像与行政区划矢量地图结合,得到二维可视化结果如图 6所示,图中可清晰看到北京各区县范围与地貌情况。
图 7为系统整体界面效果图,图中矩形框区域为实验影像,影像三维可视化结果如图 8所示,选取密云水库及周边山区,图中水库、农田、山脉位置清晰,三维效果明显,有利于图像解译,图中矢量线条及文字为行政矢量标识,将三维影像数据与矢量数据结合,实现从多尺度多视角三维浏览影像数据以及行政信息,符合人们直观感性的认知。
3 结束语
通过分析基于开源GIS的多光谱影像三维可视化方案,设计了系统架构,实现了多光谱影像的组织管理与三维显示。通过TM影像可视化实验结果表明,该系统具有显示效率高、三维可视化效果好等优点,满足光学遥感影像三维可视化管理服务的需要,具有较高的灵活性和扩展性。
[1] | DONLNELLY F P. Evaluating open source GIS for libraries[J]. Library Hi Tech, 2010, 28(l): 131-151. |
[2] | SCHWEIK C M, FERNANDEZ M T, HAMEL M P, et al. Reflections of an online geographic information systems course based on open source software[J]. Social Science Computer Review, 2009, 27(1): 118-129. |
[3] | 陈德鑫. 基于OpenLayers客户端的网络地图实现技术框架[J]. 现代测绘, 2010, 33(3): 48-49. |
[4] | 卢海滨, 郑文锋, 银正彤, 等. NASA World Wind Java SDK数字地球客户端开发[J]. 测绘科学, 2009, 34(3): 169-170. |
[5] | BELL D G, KUEHNE F, MAXWELL C, et al. NASA World Wind: opensource GIS for mission operations[C]// IEEE Aerospace Conference. Big Sky, USA, 2007: 1-9. |
[6] | FONSECA F, EGENHOFER M J, DAVIS C, et al. Ontologies and knowledge sharing in urban GIS[J]. Computers, Environment and Urban Systems, 2000, 24(3): 251-271. |
[7] | 龚健雅. 空间数据库管理系统的概念与发展趋势[J]. 测绘科学, 2001, 26: 4-9. |
[8] | 任美睿, 朱春晓, 郭龙江, 等. 空间数据库系统的数据模型、存储方法及实现策略[J]. 测绘工程, 2005, 14: 44-47. |
[9] | 郭菁, 周洞汝, 郭薇, 等. 空间数据库索引技术的研究[J]. 计算机应用研究, 2003, 12: 12-14. |
[10] | 李修滨, 章文毅. 地球影像浏览技术在卫星数据服务中的应用[J]. 科学技术与工程, 2008, 19(10): 5451-5455. |