赵生昊,刘恒毅,刘青松,余蜀豫
(1.重庆市防雷中心 重庆 401147;2.中国气象科学研究院 北京 100081)
基于ArcGIS Engine的闪电定位资料查询系统设计
赵生昊1,刘恒毅2,刘青松1,余蜀豫1
(1.重庆市防雷中心 重庆401147;2.中国气象科学研究院 北京100081)
为了更加有效的利用重庆市全闪电定位系统资源,基于ArcGIS Engine开发组件设计了全闪电定位资料查询系统。针对闪电资料的特点构造了定位信息空间数据库,通过监控以及批量方式将闪电定位资料存储在数据库中;针对闪电定位资料的应用场景,使用网络地图作为显示地图,结合属性及空间查询设计了完善的闪电信息查询方式,使用符号化及地图提示增加了应用的互动性及易用性。通过实际应用可知,该查询系统高效易用,能够很好的服务于防雷工作。关键词:闪电定位系统;地理数据库;ArcGIS Engine;GIS
随着信息化与数字化程度的不断提高,雷电灾害所波及的范围越来越广,引发的经济损失也越来越大,对雷电活动的监测及预报,是减少雷电灾害的有效手段。闪电探测定位系统作为雷电监测研究领域的核心,近年来在国内外发展迅速,在重庆市已经有两套闪电定位系统先后投入运行,即ADTD闪电定位系统和目前正在试运行的全闪电定位系统,其中全闪电定位系统[1]增加了对云闪的监测,在中小尺度灾害性天气过程的实时监测和预警预报方面具有重要的意义。
闪电定位信息数据量巨大且有着鲜明的时空特性,在实现有效的闪电监测手段的同时,通过GIS技术将定位资料地理信息化,并在此基础上进行闪电信息的数据管理、可视化、查询分析等[2-4],既是客观需求,也能更加有效的利用闪电定位资源,使其在研究雷电特征、雷电灾情评估、建筑物防雷设计方面发挥更大的作用。体系,如图1所示,分别为采集层、数据层及应用层。采集层即全闪电定位系统,包括一个中心站和诸多探测子站,之间通过气象内网连接,探测子站不间断地将采集数据传回中心站,中心站通过定位程序实时处理子站回传数据从而获得闪电的各项参数。应用层通过界面提供对闪电资料的查询、分析,并将结果以图形化展示出来。数据层包括一个标准的地理信息数据库,数据库承接采集层和应用层,可以为闪电信息的存储及查询提供接口,还包括一个用于显示地图的地图服务。本文中的开发主要针对数据层和应用层。
通过需求分析,可以将闪电资料查询系统分为3层结构
图1 系统架构图Fig.1 System architecture diagram
2.1定位资料数据库设计
目前,全闪电定位系统的定位数据采用TXT文本格式存储,定位程序每1分钟产生一个记录格式化闪电信息的txt文件,TXT文件虽然有着不错的兼容性,但其不利于高效的数据分析,管理不便且不支持网络并发读取,且闪电定位资料信息量巨大,在此基础上要进行特定时间段及特定区域的闪电信息查询基本上是不可能的。SQL Server是目前广泛应用的大型多线程关系型数据库,执行效率较高,硬件要求低,易于开发维护,在2008版本中更是提供了原生的对空间数据的全面支持,可以通过内置方法进行空间形状的构造、操作及关系查询。
使用ArcMap在SQL Server中建立企业地理数据库并建立一个点要素类 (表),要素表作为要素类可直接被ArcGIS读取,为加快加载速度,要素表只包含默认的OBJECTID、SHAPE以及用于渲染的放电类型字段。随后建立一个属性表,属性表包括定位结果中的闪电特征参数,如时间、经纬度、强度、陡度、误差等,两个表之间关系如图2所示。因为闪电资料分析中经常希望查询某一行政区划内的闪电,因此可以在入库时使用 SQL Server内建的几何关系函数STIntersects确定闪电所属的行政区划范围,可大大加快查询速度。
图2 闪电资料数据库表关系图Fig.2 Table relationships of lightning database
2.2闪电数据入库
闪电数据向数据库中的存储可以分为即时和批量两种方式,即时入库方式监控TXT定位文件的生成,生成后立即进行入库操作;批量入库是针对某些文件的一次性批量入库。每条闪电信息的各项参数是按格式逐行放置在TXT定位文件中,因此可以循环读取并解析出各项参数进行入库操作。
一般来讲,在ArcGIS Engine开发中,要素类的插入通过ICursor以及 IBuffer接口进行,但在实际使用中,由于ArcEngine的内存管理存在诸多不完善的地方,当进行大批量数据插入操作时,很容易耗尽系统资源导致运行迟缓,因此考虑使用SQL语句直接插入。其中要素表SHAPE字段使用geometry类型存储,可使用SQL Server内置方法geometry:: STGeomFromText()由经纬度生成,为保证OBJECTID字段唯一性,使用地理数据库内置存储过程next_newid获得每个要素ID;由于每条闪电数据的波形名称具有唯一性,属性表以波形名为主键并建立唯一索引,以对应的OBJECTID为外键,然后进行其他各项插入,并以此在数据库内建立一个存储过程。
C#中的FileSystemWatcher控件能够监控指定文件或目录的文件的创建、删除、改动、重命名等活动,可以动态地定义需要监控的文件类型及文件属性改动的类型,所以可使用FileSystemWatcher控件监控存放TXT定位数据的文件夹,如果有TXT定位文件被创建则读取解析调用存储过程进行插入操作,由于FileSystemWatcher在单独线程中进行事件处理,即便在多个TXT定位文件同时生成的情况下也能做到即时入库。入库成功的文件可以删除或者转移到其他文件夹,以方便对没有及时入库或是入库失败的文件进行后续处理。具体流程如图3所示。
图3 闪电资料存储流程图Fig.3 Flow chart of the lightning data storage
3.1底图选择
底图即地图中最基本的地物外形数据及一定的相关附加信息(例如道路名,河流名等),在闪电定位数据的显示使用底图可以增加直观性[5]。在以往的GIS应用中,一般采用包括地形(数字高程模型)、水系、交通、行政区划 (包括县界及市、县、乡镇 、村地理位置)等信息的矢量地图作为底图,但在实际应用中,往往希望知道闪电发生的确切位置,比如某市某区某小区,通过一般途径获得的矢量地图信息通常不能如此完善,或是比较滞后。而网络地图服务如百度地图、谷歌地图等信息全面,更新迅速,适合作为底图使用。涉及到商业授权因素,Arc Engine并不直接提供使用网络地图服务的接口。因此可以使用GIS服务器(如ArcGIS Server、GeoServer等)自建一个WMTS地图服务,通过解析网络地图服务的URL下载各层级下的地图切片来组织缓存,客户端通过ArcEngine的IWMTSLayer接口调用此地图服务并显示出来,效果如图4所示。
图4 定位资料显示界面Fig.4 The lightning data display interface
3.2查询功能实现
ArcGIS 10中引入了查询图层(QueryLayer)的新特性,查询图层是一个由 SQL查询定义的图层或独立表,可以通过定义SQL语句来创建查询图层,并将结果集以图层或独立表的形式 (取决于查询本身)添加到 ArcMap中。与以往的Definition Query方式比较,查询图层查询功能强大,可以随时修改查询条件,可以自定义感兴趣的字段。
闪电信息的查询总体上可以称为属性查询及空间查询两种方式的结合[6]。在使用查询图层的情况下,属性查询较为简单,直接构造SQL语句即可,空间查询则较复杂,如果是基于行政区划的查询可以依前文所叙,在入库时将获得闪电发生地点,可以转为属性查询;但在实际使用中,往往希望查询某个地点附近范围内的闪电或是一个小区区域内的闪电信息,如果使用ArcEngine中提供的接口,在属性查询的结果集中采用Spatial Filter(空间过滤),则效率比较低下,SQL Server中内置了空间关系方法可以进行空间查询,但需要将查询区域转换为 SQL Server可以识别的形状,因此可以在ArcEngine中将需查询的范围构造为Polygon,通过IWKB接口转为二进制流,最后在SQL Server中以STGeomFromWKB方法将查询区域还原并与闪电进行相交查询,这样就有效提高了查询效率。查询界面如图5所示。
3.3要素符号化及地图提示(Map Tips)
要素的符号化决定着要素以何种面目展现给使用者,具有重要意义。就本文所利用的全闪电定位系统定位数据举例,其可探测到闪电的类型有云闪(IC)、地闪(CG)以及窄脉冲袖珍放电(NBE)3种,每种闪电又具有正负两种极性,为便于观察分析,需要用不同的符号将其渲染出来[7],在此种种类明确的情况下,适合使用UniqueValueRenderer(唯一值渲染)进行查询图层符号化,指定闪电类型为渲染字段,通过IColor 与ICharacterMarkerSymbol接口设置每种闪电的颜色及符号;如果希望将闪电以不同的时间段、高度、强度进行符号化染,则适合使用ClassBreakRenderer(分级着色)。
图5 闪电资料查询界面Fig.5 The lightning data query interface
ArcEngine提供了Map Tips功能,即鼠标在地图控件上悬停时,对指定图层[8]在此位置要素的指定字段显示提示文本。默认情况下,仅支持指定一个字段的显示,对于定位信息来说显然是不够的。FeatureLayer实现的IDisplay Expression Properties接口支持VBScript和Jscript格式的文本显示,通过此接口,可以同时显示多个字段的信息,如图3所示,方便随时了解感兴趣的闪电的各种参数,增强了软件的互动性。
3.4属性表的显示及导出
通过属性表可以概览查询结果中各条闪电的属性信息[9],进行排序、筛选、导出等操作,导出的数据可以在其他软件中进行进一步的处理。属性表的显示比较容易实现,实际开发中,可以实例化一个DataTalble,添加需要显示的字段,需要注意的是应将各字段的数据类型与ArcEngine数据类型相匹配,利用ITable接口引出查询结果图层要素类,并使用游标将其属性循环插入,最后使用C#的DataGridViewer控件绑定DataTable并显示之。将DataGridViewer导出到Excel表格的方法有很多,在此不再赘述。
本文所实现的闪电定位资料查询系统,基于 ArcGIS Engine开发组件,从全局着眼,对闪电资料存储管理,图形化、分析等各环节,提出了解决思路,特别是在数据存储及空间查询方面,并没有完全依赖于ArcGIS Engine,而是兼顾兼容性与效率性做出了一些改进,能够快速实现大量数据的查询显示。在实际使用中,还可以此为基础,增加一些诸如动态实时显示、专题图表绘制等功能,最大化的利用闪电定位资料,使其更好地为防雷服务提供科学依据。
[1]董万胜,张义军,王涛,等.A New VLF-VHF Dual Band Lightning Detection and Location System in China and the Preliminary Results[C].第十一届中国科协年会中国国际防雷减灾论坛,2009.
[2]荆平.基于C#的地理信息系统设计与开发[M].北京:清华大学出版社,2013.
[3]樊荣,马金福,李京校,等.数据库技术在闪电定位系统中的应用[J].计算机应用,2013,33:115-117.
[4]石岚,关作正,徐丽娜,等.基于GIS技术的呼伦贝尔地区雷电监测及应用[J].内蒙古大学学报:自然科学版,2009,40(1):113-118.
[5]张澄铖,邱新法,何永健.基于Flex和Google Map的雷电数据可视化研究[J].地理空间信息,2012,10(5):67-69.
[6]兰小机,王飞,彭涛.基于ArcGIS Engine的查询信息系统的设计与实现[J].金属矿山,2008(2):112-114.
[7]王瑜,闫沫.基于LabWindows CVI的扭矩扳手数据处理系统的设计与实现[J].电子设计工程,2014(1):51-53.
[8]刘铎,黄晓燕.基于Direct3D技术的VTS雷达PPI显示优化设计[J].电子科技,2014(5):5-7,11.
[9]张伟昆,黄炜,张大伟.基于多信号属性表建模提高测试性设计方法[J].测控技术,2015(9):46-49.
Design of lighting position data query system based on ArcGIS Engine
ZHAO Sheng-hao1,LIU Heng-yi2,LIU Qing-song1,YU Shu-yu1
(1.Lightning Protection Center of Chongqing,Chongqing 401147,China;2.Chinese Academy of Meteorological Sciences,Beijing 100081,China)
In order to use of the lightning locating system resources more effective in Chongqing,based on ArcGIS Engine Developer components,launch the research from the application of three-dimensional lightning location data.According to the characteristics of location data to construct the lightning information spatial database,store location data in to the database by batch mode or monitor mode;for application scenarios of lightning location data,using the network map service as a display map,combined with attributes query and spatial query designing the complete lightning information query mode,use symbolic and map tips increase application's usability.Through the practical application,the query system is efficient and easy to use on lightning protection service.
lightning position system;geodatabase;ArcGIS Engine;GIS
TN915
A
1674-6236(2016)01-0016-03
2015-04-22稿件编号:201504249
国家公益性行业科研专项(GYHY201306069);重庆市气象局青年基金项目(QNJJ-201409)
赵生昊(1984—),男,重庆人,硕士,工程师。研究方向:雷电防护。