物数据采集包括的气象数据是目前24小时不间断产出数据的重要部分。当前自动气象观测包括地面气候观测、高空气候观测、卫星气象观测、海洋观测、移动观测以及其他特殊行业的气象观测。相应的就有高空气象资料、地面气象资料、海洋气象资料、水文气象资料、土壤植被资料、雷达资料、卫星资料等。这些资料格式主要有属性数据、常见栅格数据、矢量数据、DEM高程数据、遥感影像数据等,而保存的方式也不尽相同,有的保存在本地文件中,有的保存在关系型数据库或空间数据库中。将这些属性和空间数据以空间化的方式进行展示和分析就需要借助于GIS软件。
按照不同的分类方式GIS软件可以分为多种:
按照是否开源,可以分为商用软件和开源软件。商用版软件常见的有Arcgis、ERDAS、mapinfo、supermap、topmap、mapgis等;开源软件常见的有grass、mapserver、sharpmap、geoserver和geotools等。
按照平台划分,可以分为跨平台的GIS软件和不可跨平台的GIS软件。可以跨平台的软件有arcgis、supermap、qtgis、openmap、mapwindow等,不可跨平台的gis软件主要有sharpmap、WorldWind等仅可以运行在windows上的软件。
按照应用的场景可以分为桌面版GIS软件、WEBGIS、移动GIS软件。商用GIS软件一般都包含这三种类型的gis系统开发,开源项目中也有同时支持这三种系统的gis软件如grass,也有许多可以同时支持桌面gis和webgis的开发,如sharpmap、mapwindow等,也有只支持webgis的软件如mapguid、geoserver等。
此外在用来存储空间数据的空间数据库引擎上,也分为开源和商用版数据库。如商用的DB2、oracle、ArcSDE,开源的如postgis、mssqlspatial、mysqlspatial等。
GIS开发方式主要有独立开发、基于开源GIS开发、单纯二次开发、集成二次开发四种。
独立开发方式:不依赖任何GIS软件,独立进行应用系统开发。选用某种程序设计语言,如C++、VB、C#等,在一定的操作系统平台上编程实现。
优点:自主产权,拓展方便。
缺点:开发时间长,成本高,对程序员要求高
基于开源GIS开发方式:借助于开源GIS软件,如GRASS、OSSIM、Sharpmap等软件、Python语言加一些图形库进行开发。公司的WEB版软件就是采用该方法实现的GIS系统。
优点:自主产权,拓展容易,不依赖商用GIS软件,基本无部署成本。
缺点:大部分开源软件入手难,开发周期相对长。
单纯二次开发方式:完全借助于GIS软件提供的开发语言进行应用系统开发。常见二次开发的宏语言:ArcView提供了Avenue语言;MapInfo提供了MapBasic语言等。
优点:开发时间较短。
缺点:开发出的程序,界面单一,功能上难以满足不同GIS应用的需要。
集成二次开发方式:利用GIS软件实现GIS的基本功能。它有俩种集成方式:一种是采用OLEAutomation(对象连接嵌入自动化)技术启动GIS工具软件在后台运行,实现应用程序中的GIS功能,另一种是利用GIS软件提供的OCX组件,如Arcgis的MapObjects、MapInfo公司的MapX等。
优点:开发效率高,系统界面和功能都能满足用户需求,维护成本低。
缺点:前期投入比较大,部署安装成本高。
从GIS开发方式章节知道,GIS平台的选择取决于开发周期、开发和部署成本、产品功能、产品性能等多个方面。
商用的GIS软件,使用人数多,教程和现有Demo资源比较丰富,因此入门比较快,开发周期短。当然如果需要实现的GIS功能简单的话也可以采用开源的OCXGIS控件快速地开发出需要的产品。
自动站监控软件所需要的GIS系统的基本功能比较简单,GIS的操作主要是基本的地图操作,标注的使用,tab/shp图层的加载,图层的控制,等值线的绘制和填充。使用开源的GIS软件如.NET下可以选用的sharpmap,mapwindowDLL操作库已经完全可以实现;Java开发环境下使用UDig、GeoTool等开源GIS系统也可以很快实现。
由于商用GIS软件功能强大,性能卓越且稳定,目前市场占有率达到80%以上,而arcgis又占了其中的80%以上,其他使用较多的是mapinfo公司的mapx,国产的supermap、topmap、mapgis等。有这么一种趋势,占有率越高的软件其开发成本和部署成本也越高。下表列出了常见的几种商用软件的开发部署成本:
从以上报价来看可以得到以下分析结果:功能越强大的GIS软件越贵。arcgis软件的各种产品都非常贵,mapxtreme和supermap也比较贵。无论是桌面应用程序,GIS系统的二次桌面和WEB开发都需要购买版权。程序发布后在客户机器上要运行需要安装运行时环境或SDK,也需要购买版权。无论开发桌面的还是WEBGIS系统至少需要花费几十万。
当公司和客户不能认同花费高额的代价来实现仅有的一些基本GIS功能时,采用开源的GIS软件就是一个很好的方案。
开源gis虽然发展时间不长,但造就了Grass,OSSIM这样功能突出,性能优异不亚于Arcgis软件。还有前台显示较好的Mapguid、QTGIS、wordwind等桌面应用程序。目前开源GIS软件已经涵盖桌面应用程序、GIS组件、服务器端、空间数据库4个方面,有很多GIS开源系统比较稳定,因此采用开源GIS系统在技术上已经可行。
产品功能需求,当采用Arcgis+oracle这样的豪华组合来实现一个基本的GIS系统时就会显得杀鸡使用牛刀的现象。对于简单的GIS系统需求完全可以采用低档次的国产GIS系统,开源系统来完成。并且还不需要学习arcgis、mapxtreme那样内容繁多的开发帮助手册。
根据气象观测的种类和数据,我们可以预见到未来的GIS系统功能主要包括:
基本GIS操作,如:放大、缩小、平移等。图层操作,加载,关闭,叠加,隐藏,标注、图元定位,天气符号库显示,天气填图。气象站点监测,数据查询。空间数据分析,如:等值线,等值面,专题图。用户自定义制图,如增加图例、比例尺、指北针、标题文字、注释性文字、经纬网、边框、以及图片等图饰信息。服务产品输出,可以所见所得的预览、打印、以及矢量、栅格图片方式高质量输出,EXCEL或文本格式的导出。
空间数据的存储SDE,Micaps、栅格、遥感影像、卫星、云等多种气象格式的加载。
三维表面化显示,将二维数据加载到三维视图内显示,如降水落区、台风路径、云图、雷达等。
自动制图和动画显示,要素填图,产品叠加显示(天气雷达/自动站/探空系统/卫星云图)、自动站要素填图。极端天气情况监测:将自动站气温值介于某一区间范围内的,划分成不同级别,用不同的图标标绘。同时,还可以将其与雷达拼图/卫星云图叠加显示。超极值数据监控:超历史极值的自动站标绘在地图上,并在提示信息中描述超极值的详细信息。图层分级管理,并实现站点快速定位。
危险天气的填图与报警:大于35度、小于-10度的极端示。温度、2分钟平均大于8m/s的大风、阵风大于17.1m/s的大风、大雨以上分级降雨等灾害性天气用不同颜色闪烁显示并提供声音报警。栅格图像加减运算,栅格面积统计。气象模型的建立。如,通过影响范围分析、缓冲区分析等建立灾害性天气损失模型。移动GIS的应用,在android,ios等移动设备上的应用。地图站点分级显示避免拥挤。
以上这些功能都集中在数据处理中查询和监控,数据处理后查询和评估,对于数据前期预报暂时不需要引入到我们的系统中。
开源软件中Grass、OSSIM功能比较强大,能够处理栅格,矢量和遥感卫星等多种格式,其他开源的软件功能相对欠缺或独立,但是通过再加上一些开源的GIS组件包如geotool,GDAL(栅格处理包)/OGR(矢量包)也能处理更加复杂的分析和运算功能。
当前商用软件Arcgis和mapinfo的加载和数据分析性能已经比较好,当然一些采用C和C++开发的开源GIS软件,在数据处理性能上也和商用的软件差不多。性能需求不大的话自由选择的范围也比较多。
商用GIS软件一般都提供VB,VC,NET,JAVA二次开发组件包。同时开源软件也可分为C,C++,JAVA,NET,脚本阵营,因此使用JAVA和NET语言可以相应的选择所需要的开源软件。而C,C++开源软件提供的库,当然也可以使用NET,JAVA调用,可能会存在接口调用困难的问题。
使用C,C++,JAVA开发出的GIS系统跨平台比较好,当然NET下通过mono也可以实现跨平台功能,只是稳定性需要进一步的测试。当不需要跨windows,linux,os等平台时可选择的开发余地也比较大。
为了实现空间数据的查询和存储,需要将生成的多种栅格,矢量图形保存到空间数据库中。目前空间数据库引擎比较多,oraclespatial,DB2,开源mssqlspatial,开源mysqlspatial,开源postgis(PostgreSQL的空间数据库),每一种数据库引擎需要安装对应的数据库。当然在一个项目中采用oracle数据库存储属性数据,再使用postgis存储空间数据也可以实现,只是性能略差,部署复杂。
通过以上影响数据库选择的因素分析后,可以总结出对于GIS工具的选择可以采用以下方案:
不考虑成本,单纯采用商用软件。
考虑一定成本和丰富功能,采用低档的国产商用软件。
完全考虑成本和功能,采用各种开源GIS组合。开源GIS软件或控件+ 开源GIS空间数据库 +开源GIS组件。