朱宗奎,于雪涛,李金鸽,蒋之犇
(1.中国矿业大学资源与地球科学学院,江苏徐州 221116; 2.中国矿业大学安全工程学院,江苏徐州 221116;3.陕西师范大学旅游与环境学院,陕西西安 710062)
交通气象预报制作系统的设计与实现
朱宗奎1∗,于雪涛1,李金鸽2,蒋之犇3
(1.中国矿业大学资源与地球科学学院,江苏徐州 221116; 2.中国矿业大学安全工程学院,江苏徐州 221116;3.陕西师范大学旅游与环境学院,陕西西安 710062)
本文在指出当前交通气象预报中预报公路少和细节层次低的缺陷后,以包头市为例,结合ArcGIS Engine二次开发组件,设计并实现了针对包头市范围内公路的交通气象预报制作系统。本系统能够结合包头市下各旗县的天气,快速地生成交通气象预报图和公路气象文字描述,并且生成的交通气象预报图中自动地添加了图例比例尺指北针等辅助要素。生成的交通气象预报图和文字描述可直接地发布到互联网,供公众出行查询,填补了当前我国省级及地级市级气象单位没有发布交通气象预报的空白。
交通气象预报;ArcGIS Engine;交通气象预报图
中国气象局网站每天发布的“全国主要公路沿线气象条件预报”给人们的出行带来了很大方便,但是该预报也存在着缺陷,即它只是对国道及部分高速路段做了气象条件的标注,而对于省道等次级公路并没有做标注[1]。而且,我国大部分省级及地级市级的气象局也没有发布本区域内的交通气象条件预报情况。对于公众,其不只是只走国道,而且还要在省道等次一级的道路上经过,因此迫切地需要当地气象局能够发布本区域内的交通气象条件,指导公众的出行。
为了解决以上突出问题,作者采用ArcGIS Engine作为二次开发组件,以包头市为例,设计并实现了针对包头市范围内的旗县级公路、高速路和国道的交通气象预报制作系统。系统根据用户设定好各旗县的天气情况后,自动生成包头市范围内交通气象情况图,然后自动地添加标题、图例、比例尺和指北针等元素,并将生成的交通气象图根据用户选择的分辨率和保存的图片格式进行保存,同时也将区县天气描述和沿线公路描述等文字信息一并导出。
系统的总体目标是:根据包头市的公路网图和每天的天气预报信息,制作交通气象图并同时生成交通气象文字描述信息,然后将交通气象图导出为图片,对于文字描述部分导出为txt文档,便于后面的网络发布。系统在设计时遵循以下原则:①实用性;②可靠性;③开放性;④可扩充性。
2.1 系统研发平台
ArcGIS Engine(AE)是一组跨平台的嵌入式AO,它是ArcGIS软件产品的底层组件,用来构建定制的GIS和桌面制图应用程序,或是向原有的应用程序增加新功能,通过它,可以构建非GIS为中心的应用。开发者使用ArcGIS Engine开发包构建应用程序,并通过ArcGIS Engine Runtime的软件许可将这些程序发给最终用户。ArcGIS Engine开发包包括三个关键部分:控件、工具条和工具对象库。它的控件包括:MapControl、PageLayoutControl、ToolbarControl、TOCControl、Reader-Control、SceneControl和GlobeControl。其中前面4个控件用得比较多。由于ArcGIS Engine控件为嵌入式组件,故可以任意地添加到编译环境的窗口和对话框中去,而且开发者能够访问ArcGIS Engine控件的属性菜单项。每一个ArcGIS Engine控件既封装了粗粒度的ArcObject,同时又提供了对细粒度的ArcObject的访问。因此,采用ArcGIS Engine的控件、工具条和工具对象库,可轻松实现空间数据的存取、地图的表达及专业的空间分析[2]。所以,作者采用C#编程语言,结合ArcGIS Engine实现交通气象制作系统的研发。
2.2 功能设计
在实际的应用中,地级市中各旗县的天气预报可每天获得,而具体的云雨天气等情况的实际范围不易获得。由于预报的范围比较小,故可以大致认为旗县的天气情况就是该旗县范围内所有区域的天气情况。根据以上系统的总体目标及数据的处理流程图(图1)作出设计。系统共分为三大模块,即录入气象参数模块、添加图例比例尺指北针等辅助要素模块和导出交通气象预报图及预报文本模块。
录入气象参数模块,主要负责根据用户录入的各旗县的天气参数(包括小到中雨、大到暴雨、小到中雪、大到暴雪、冻雨、雾、沙尘、雷暴和未受影响,共9项),在录入完成后,则对地理底图中的公路图层中的图元根据所属旗县的天气情况更改图元的颜色。具体的颜色设置,参考中国气象局发布的“全国主要公路沿线气象条件预报”中的各种天气的颜色设置。同时还要保存旗县和道路的天气描述文字信息。添加图例比例尺等辅助要素的模块是在ArcGIS Engine的Pagelayout控件中添加比例尺、指北针等要素。导出模块则是负责把添加了辅助要素的交通气象预报图导出为图片,同时将保存的旗县和道路的天气描述文字信息导出到一个txt文件中。经过上述步骤得到的交通气象预报图和道路的天气描述文字信息,则可以直接发布到网络中,供公众出行时查询。
图1 数据处理流程图
系统选取的数据包括包头市行政区划图、包头市内的公路路线图和旗县点图层。采用行政区区划图的目的是为了说明只预报该区划范围内的交通气象条件,采用旗县点图层的目的是辅助用户在交通气象预报图中大致定位。
为了实现系统快捷方便地打开数据,作者首先采用ArcGIS Desktop软件建立一个mxd图层工程文件,将三个图层添加到该mxd地图中,并对这些图层的属性表和图层的显示方式做些设置。对于行政区划图,在其属性表中添加一个“TownName”字段,该字段记录了包头市内各个旗县的名称,然后设置不同旗县不同的显示颜色。在包头市内,包括市辖区、固阳县、土默特右旗、白云矿区和达尔罕茂明安联合旗。对于公路图,首先,采用公路图线图层和行政区划图面图层做叠加分析(Overlay)中的交集操作(Intersect),经叠加分析后,获得了新图层就是行政区划图中各个旗县范围内的公路图。并且该图层的属性表中,既有原公路图层中的字段,又有行政区划图层的字段,如“Town-Name”字段。为了便于后面的计算,在该图层的属性表中,添加“weather”字段,该字段临时保存该路段的气象条件信息。对于旗县点图层,仅设置它的显示方式即可。作者经过以上的设置后,得到的包头市交通气象制作底图如图2所示。
图2 包头市交通气象制作底图
4.1 生成交通气象图
生成交通气象图的实质就是首先根据各旗县的名称查找各旗县下的所有公路,因为道路图的属性表中有“TownName”字段,故可以找到,然后对道路图的“weather”字段进行赋值,赋的值即为录入的所在旗县的天气信息。然后采用ArcGIS Engine中的唯一值的渲染方法,对“weather”字段的所有值进行唯一值渲染,从而更改道路图层中各图元即各道路段的颜色,具体的每种天气对应的颜色设置则参考中国气象局的交通气象预报。同时,将预报的旗县天气描述信息和旗县内具体道路的天气信息保存到txt文件中,以待发布交通气象时使用。如图3所示,即为系统的录入各旗县天气的界面及系统的主界面。其中,道路图的渲染都是在MapControl控件中完成的。
图3 系统的录入各旗县天气的界面及系统的主界面
4.2 添加辅助要素
在ArcGIS Engine的MapControl控件中生成交通气象图后,还要添加图例比例尺等辅助要素,这些一般都是在PageLayoutControl控件中添加的。因为虽然PageLayoutControl控件和MapControl控件都是用于地图数据的可视化的显示,但是PageLayoutControl控件提供的显示类似ArcMap中的地图制图与输出窗口。因此,在系统的实现过程中,实现MapControl控件与PageLayoutControl控件的联动。
图4 添加了辅助要素的交通气象图
在ArcEngine对象模型中,图名、图例、指北针和比例尺辅助要素都是从IElement对象继承过来的。在系统的研发实现中,分别利用ArcGIS Engine中的ITextElement、ILegend、IMarkerNorthArrow和IScaleBar 4个接口实现创建图名、图例、指北针和比例尺的实例,然后利用IEnvelope接口实现各要素的位置和大小的锁定,具体各要素的位置和大小需经多次试验调节后才能找到比较合适的参数。从而,通过以上步骤就完成了各辅助要素的添加,如图4所示,即为添加了各辅助要素的交通气象图。
4.3 导出为图片
ArcGIS Engine支持地图视图以图形形式输出的格式常用的主要有:BMP格式、GIF格式、JPEG格式、PDF格式、PNG格式、TIFF格式等。对于每种格式,ArcGIS Engine都提供了该格式所对应的输出对象来管理图形的输出。如对于BMP格式,ArcGIS Engine提供了ExportBMPClass类来管理该格式的地图图形输出。所有这些格式输出对象都实现了IExport接口,该接口定义的属性和方法用于管理地图的图形输出。
将地图以图形文件形式输出通常包含4个步骤:
(1)创建一个某种格式的图形输出对象;
(2)定义地图图形显示源文件和目标文件的分辨率;
(3)定义屏幕显示目标矩形区域和地图打印范围的矩形区域;
(4)对输出对象发送输出指令,开始制定格式地图输出文件创建过程。
图5 系统输出的公路气象预报图
系统采用以上步骤,输出的包头市公路气象预报图如图5所示。将该图与先前输出的旗县天气和旗县内公路气象条件的文字描述部分综合起来,就可发布到互联网上,便于公众的出行查询。
作者结合交通气象预报资料,以包头市为例,设计并实现了基于ArcGIS Engine的交通气象预报制作系统。系统能够结合包头市公路和每天的天气预报数据,可直接生成带有比例尺图例等辅助要素的交通气象预报图和交通气象文字描述部分,并且这两部分可直接发布到互联网,方便地区公众的出行查询。系统生成的交通气象预报图,虽能部分地说明市域范围内的交通气象情况,但若是结合一手的气象数据,同时将研究区内更多公路添加进来,将能制作更为准确和全面的交通气象预报系统。
[1] 中国气象局.全国主要公路沿线气象条件预报.http:// www.cma.gov.cn/tqyb/v2/product/traffic.php,2010-7-26
[2] 吴玮,李小帅,张斌.基于ArcGIS Engine的GIS开发技术探讨[J].科学技术与工程,2006,6(2):176~178
[3] 韩鹏,王泉,王鹏等.地理信息系统开发—ArcEngine方法[M].武汉:武汉大学出版社,2008,222~265
Design and Realization of the Traffic Weather Making System
Zhu ZongKui1,Yu XueTao1,Li JinGe2,Jiang ZhiBen3
(1.School of Resources and Earth Science,China University of Mining&Technology,Xuzhou 221116,China;2.Faculty of Safety Engineering,China University of Mining&Technology,Xuzhou 221116,China;3.College of Tourism and Environment,Shaanxi Normal University,Xi’an 710062,China)
After pointing out the defects that these are only a few road lines in the current traffic weather forecast,selecting ArcGIS Engine as the secondary development components,this paper designs and releases the traffic weather making system for the Baotou city.Integrating the weather forecast data form the county in the Baotou city,this system can generate the traffic weather description and the traffic weather forecast maps quickly.Besides,the legend,north arrow,title and scale bar can be added to the map automatically.The description and the maps can be published to the Internet serving for the public directly.So this system fills the missing gaps in our country that provincial and city level meteorological offices do not publish the traffic weather forecast.
Traffic Weather Forecast;ArcGIS Engine;Traffic Weather Forecast Map
1672-8262(2011)01-16-04
P208
A
2010—08—02
朱宗奎(1981—),男,助教,从事学生行政管理工作。
国家自然科学基金资助(40972207)