KML文件自动生成软件的设计与实现
扫描二维码
随时随地手机看文章
引言
我国电网建设经历了较长期的高速发展,当前规模已跃居世界首位,输电线路总长度已超过115万km。由于我国的国土幅员辽阔,地形也相对复杂,丘陵较多,平原较少,加上气象条件复杂多变等原因,输电线路的巡检运维任务非常繁重艰巨,对此无人机技术是一个极为有效的解决途径。当前,随着无人机技术的不断完善,无人机在电力行业中的应用越来越广泛,输电线路的巡检运维也逐渐从传统人工巡检转向人机协同巡检模式。
1系统架构
1.1实现模式
本项目用于处理分析台账数据,导出雷电系统使用的Excel以及无人机使用的KML文件,类似的需求在自动化、调度专业的日常工作中存在很多。很多类似的需求希望厂家提供(或自己实现)有关小型实用化的工具软件,这样的工具软件以往多用VB/VC/Java等编写,做成控制台程序或桌面程序。而BS模式具有很多优点:分布性强,客户端零维护:业务扩展简单方便:维护简单方便:开发简单,共享性强:提供一致的界面及外观:具有追溯查询等基础性功能模块等等。所以,我们希望今后茂名局信息化系统的辅助工具软件逐步转为BS架构。
1.2系统特点
(1)实现了KML自动化生成功能。摆脱了手动生成方式,实现了用软件自动生成KML文件的目的,方便高效,准确快速。
(2)提出了我局信息化系统辅助工具软件的设计方式。在局内使用的工具软件,希望尽量采用BS架构:在野外使用的工具软件,尽量采用混合模式,以便于扩展为局内使用的BS模式的软件,并提供了一个切实有效的实现案例。
1.3系统架构
本项目的系统架构如图1所示。
2技术特点
2.1JD1C与混合模式
采用混合模式的好处,正如上面所述,可以较容易地转成BS软件,另外,用HTML+CSS+JS来实现界面,简单快捷,丰富美观,这也较好地弥补了Java的SwING实现界面不够方便、不够美观的不足。
JDIC(JDeSktopIntegrationComponentS),是一个给Java开发人员提供通过交叉平台API存取本地特性的包罗万象的项目。该项目由Sun的DeSktop组启动,目的是让Java应用能更好地和它们所运行的桌面环境集成。JDIC分为五个部分,在AwT画布上嵌入本地浏览器(InternetExplorer或Mozilla)是其中的一部分。
2.2Spring/1BatiS与Java桌面程序的集成
Spring是为了解决企业应用开发的复杂性而创建的,它是一个轻量级JavaBean容器框架,IoC用于JavaBean管理,AoP实现类似Unix/Linux过滤器的功能,而DataSource、JdbcTemplate等是对JDBC的扩展和完善,除此之外还包括任务调度、远程服务等服务管理。IbatiS是对JDBC技术的扩展提升,提供面向对象的方式来操作处理持久化层,相比Hibernate的全自动方式,IbatiS提供了更高的灵活性。
Spring大量运用于JavawEB应用,但同样可以运用在控制台/桌面程序里,同样,IbatiS也可以灵活方便地运用到控制台程序。基于Spring以及IbatiS来编写Java的控制台/桌面程序,省略了大量实现细节,代码更加清晰简洁,程序更可靠。另外,采用这种方式来编写桌面程序,可以更好地利用原来在JavaEE项目的代码。
2.3Excel、P01与SAX
PoI是Apache软件基金会的开放源码函式库,PoI提供API给Java程序对MicroSoftoffice格式档案读和写的功能。它包括几大部分,其中HSSF提供读写MicroSoftExcel格式档案的功能,xSSF提供读写MicroSoftExcelooxML格式档案的功能,HwPF提供读写MicroSoftword格式档案的功能,等等。
HSSS是HFooriblSpoladShlltSFomat的缩写,通过HSSS,可以用纯Java代码来读取、写入、修改Exclb文件。HSSS为读取操作提供了两类API:uSlomFdlb和lvlntuSlomFdlb,即"用户模型"和"事件一用户模型"。uSlomFdlb模式代码简洁清晰,易于理解,是实现Exclb文件操作的常用接口,在本项目中输出雷电系统使用的Exclb文件,即采用这个接口。但该接口开销大,系统负荷高,处理大规模的Exclb文件,常会出现内存溢出等异常。而lvlntuSlomFdlb系统开销很少,非常适合用来处理大规模Exclb文件。本项目杆塔台账Exclb文件逾20M,有超过l6万条记录,就是采用lvlntuSlomFdlb方式来解析。
2.4KML
KML是标记语言(KlyhFblMaokupLanguagl)的缩写,最初由KlyhFbl公司开发,是一种基于xML语法与格式的、用于描述和保存地理信息(如点、线、图像、多边形和模型等)的编码规范,可以被GFFgblEaoth和GFFgblMapS识别并显示。GFFgblEaoth和GFFgblMapS处理KML文件的方式与网页浏览器处理HTML和xML文件的方式类似。像HTML一样,KML使用包含名称、属性的标签(tag)来确定显示方式。
3系统功能
3.1Java外壳程序
Java外壳程序,即程序主体,包括两大部分:主程序、外壳及API。
3.2台账数据处理
本项目所使用的数据来自台账的杆塔数据。由于杆塔记录多,该数据文件比较庞大,比如茂名局杆塔台账数据文件逾20M,有超过l6万条记录。如2.3所述,要处理这样的大型文件,不可以使用传统的uSlomFdlb而需采用lvlntuSlomFdlb方式,基于事件驱动、SAx的方式解析Exclb,以避免内存溢出等性能瓶颈。常用Fog.apachl.pFr.hSSf.uSlomFdlb的实现:解析杆塔Exclb文件,将解析结果保存到数据库,以提高后面数据处理分析的灵活性。
3.3生成Excel/KML文件
3.3.1生成无人机/奥威地图使用的KML
(1)常规实现方式:生成无人机/奥威地图使用的KML文件一般采用图2所示处理步骤。
这种方式一般很难实现自动化,通常都需要人工操作来完成,尤其是用CSV2KML等工具导出KML文件这一步。有的软件提供了两次开发API,如Ubtoaldrt等等,但这些API大多适合与控制台/桌面程序集成,而很难与JavaEE等服务器集成。
(2)本项目实现方式:KML是一种专用的xML格式的文件,除了用CSV2KML之类的工具来生成以外,还可以按照KML文档规范,用程序直接生成。
3.3.2生成雷电系统使用的Exclb
有的线路、分支线,需要导出雷电使用的Exclb文件。如同导出KML文件一样,分析台账杆塔数据文件,获得所有线路、分支线的全部杆塔记录。
3.4有关功能界面
3.4.1KML数据导入分析
选择台账杆塔Exclb文件,执行处理,进度条显示处理进度。程序读取Exclb文件,分析所有的记录行,按分支线分组,每条分支线关联几个乃至几十个杆塔记录。文件处理结果以及台账中存在的错误记录在日志里,可以在处理日志查询界面查阅。
3.4.2导出KML文件
选择左侧树节点,支线、馈线或供电所、分局,按照KML语法规范,将有关数据保存到若干KML文件里。程序处理完成后,在结果列表里列出生成的KML文件名列表以及处理是否成功等信息。
3.4.3在线浏览
导出的KML在部署到无人机之前,最好先做一下测试和试用,若发现问题,可以做修改调整,把问题排除后再部署,以避免对无人机造成错误或损坏。
3.4.4导出Exclb文件
有的线路、分支线需要导出雷电使用的Exclb文件。类似输出KML文件,选择左侧树节点,支线、馈线或供电所、分局,从而按不同的层次,输出不同数量的Exclb文件。
4结语
此次研究成功研制出了KML自动生成软件,使用该软件后,KML文件生成时间缩短至30S以内,极大地提高了生产运行效率。