2020.27科学技术创新基于Spring 的开源GIS 城市管网的系统设计
李冬
(长江大学地球科学学院,
湖北武汉430100)城市发展加速,需要大量的物质介质传输,城市管路空间的合理规划利用已经成为城市基础设施规划的重要研究部分。目前,Java 语言平台实现管道主题的GIS 应用中,多数为使用JavaApplet 实现C/S 客户端模式,缺乏灵活性和跨平台能力不足。随着计算机网络技术的发展,轻量化的WebGIS 城市管网系统逐渐成为主流。
当前国内外学者对Spring 框架同GeoTools 工具整合开发GIS 应用的研究并不多,注重研究管网系统设计更是风毛鳞角。其中冯亦参[1]于2006年提出基于GeoTools 实现WebGIS 应用读取shp 数据的解决方案;张咏新[2]等提出基于Spring 框架的WebGIS 应用整
合研究;
赵卫平[3]等在2017年实现基于GeoTools 的地图服务快速发布系统研究;
本文以解决中小型城市间管道网路应用为出发点,使用开源GIS 工具包GeoTools 基于成熟SSM 架构
实现高效开发。GeoTools 代码库迭代多年,
功能丰富,并支持OGIS 接口规范,
而SSM 框架稳定成熟,两者的结合是顺应GIS 应用开发的潮流。
1系统设计
1.1软硬件平台配置
本系统使用Java 语言开发,
采用Spring+Mybatis+SpringMVC 的框架进行分布式开发;调用GeoTools 的jar 包来实现对地图服务层的模块化开发。前端地图的显示服务由openlayers 提供支持,web 端服务器由Nginx+Tomcat 来实现管道数据的发布与展示。服务器端部署在Liunx 系统下,通过docker 容器统一管理,而客户端可通过浏览器实现全平台兼容运行;
1.2系统架构
整个架构由下至上分别为表现层、逻辑层和数据层。在逻辑
层的内三层体系中:持久层联系数据库的数据编辑、
读取以及并发操作;服务层指明数据的组织管理模式,
是控制层和持久层联系的枢纽;控制层则说明功能划分,提供接口同时进行命令分配。用户将请求传递给逻辑层,逻辑层完成的结果通过表现层进行展示。
表现层即为客户端(浏览器端),
是用户操作的实际界面,也是功能发起方,也是最终结果的显示平台。
数据层是由数据库为主体的数据持久化存储的平台,也是
对逻辑层的功能发起的反馈数据处理层(图1)。
在此体系架构下,数据层包含管线数据的读存编辑功能,
负责对数据库的增删查改与维护;
逻辑层则服务整个系统应用功能的处理;表现层通过Ajax 实现同客户端的通信,并启用地图服务的调用。典型的三层结构设计实现系统的低耦合性,高可用性和高维护性,实现组件式开发。
1.3数据库设计
数据库使用开源的MySQL 数据库,数据层中所需要的空间
数据放置于网络服务器中,通过GeoTools 来调用;属性数据资源包括像管道编号,时间,
坐标等数据存放在MySQL 属性库中;管线专题数据主要分为测区数据、
管线数据和节点数据这三大类型,其中线结构设计主要由管线编号、
物探号、起终点坐标、控制点,流向、旋转角、材质和日期等属性组成,
并通过外键或非空约束来保证数据完整性。
1.4空间分析模块设计1.4.1覆土深度的分析功能
可以对地图上的任意管线进行覆土深度的探测,并且将探测结果与国家规范对比,将不符合标准的管线进行预警标注。
1.4.2道路扩建分析
通过对某一条道路进行扩建的宽度值的设置预见可能受到影响的管线的情况,使用缓冲区分析可以较好实现(图2)。
1.4.3碰撞检测分析功能
可以对管线和其周围的管线进行水平和垂直方向的净距分析,出存在安全隐患的地下管线或者避免在设计阶段的不合理施工。在进行碰撞分析时,首先需要确定管线间的空间关系,
摘要:采用开源GeoTools 代码库和Spring 框架作为开发平台,构建高度模块化的城市管网信息的展示和处理系统。以
Mysql 数据库为基础结合空间数据为基础,阐述了管网系统的总体设计流程和功能实现,
阐述城市管网系统的设计需求,实现空间属性检索以及复杂的管道空间分析功能算法,可满足绝大多数城市地表地下循环管道的管理需求。本文介绍了使用GeoTools 在Spring 平台下的快速开发的研究成果。
关键词:城市管网系统;Spring ;WebGIS ;GeoTools 中图分类号:TP311.52文献标识码:A 文章编号:2096-4390(2020)
27-0095-02图1系统架构
95--
科学技术创新2020.27
是否存在相交关系等等,通过计算其两者之间的垂直或水平净距,来确定其管线间的空间位置关系。
1.4.4横断面分析功能
通过对某一管线的属性信息和管线与其周围管线的关系进
行分析,以横切图的形式再现地下管线的空间分布情况,
为管理施工提供决策依据;
1.4.5爆管分析功能
当某一管线发生爆管现象的时候,系统要迅速确定发生爆管的位置,提供最佳的关阀方案。爆管分析是一种管道事故分
析功能,在更多的时候应避免出现爆管现象,
但爆管分析可以及时减轻意外事故造成的经济损失和社会危害,
通过系统的预警能力将事故发生率降至最低。
爆管分析的基本算法思想是:从爆裂的管点出发,寻与之关联的管点,在管网系统内通过关联关系,遍历所有管线和管
点,准确寻可以阻止工质流向的点
(控制点)。值得注意的是,爆管分析是一种对节点数量不易控制的分析方法,
使用广度优先遍历算法占用内存较大,溢出风险高,
故使用深度优先遍历会更加合适,算法的具体思想流程如图3所示。
2系统实现2.1代码示例
2.1.1构建图形向量的实现
一种是通过GeometryFactory 工厂类中的SimpleFeatureBuilder 来进行实现:首先是创建点要素Point ,然后按照SimpleFeatureType 给的字段顺序进行属性赋值,最后使用
simpleFeatureBuilder 对象的buildFeature()方法来构建向量;
第二中进行向量构建的方式是通过ShapefileDataStore 类中getFeatureWriter()方法进行添加的:首先通过类型转化创建出
ShapefileDataStore ,其次是设置写入Writer 流为自动写入后,
循环写入要素即可。
2.1.2空间信息检索的实现
通过GeoTools 中提供类似于MyBatis 框架的sql 语句封装机制,可以通过经纬度图形来检索相似的地理
要素,通过
GetFeatureInfo 操作通过坐标方位对要素集进行查询并返回指
定的属性信息;先计算出点选范围的地图坐标并转化,
随后遍历图层来查对象,获取并转化为Geometry 类型,然后通过getFeatures()方法获取特征向量,循环获取地形元素geom 来实现空间信息的检索。
2.2客户端应用
客户端界面通过OpenLayers 来调用地图服务,通过
GeoTools 和ArgGISforJS 的接口来定制系统复杂的功能,
结果如图所示,可以实现地图的多级缩放和精确量算,
并实现空间检索和编辑的功能。
结束语
本文使用GIS 工具包GeoTools 基于SSM 架构实现高效开发,两者在WebGIS 系统中的应用并不多见,通过对城市管路网络主题的GIS 应用的设计来推广开发者对与GeoTools 的使用,并为广大读者提供应用SSM 框架搭建WebGIS 应用的设计参考。
springmvc选择题参考文献
[1]冯亦参.基于geotools 实现WebGIS 应用软件[J].微计算机信息,2006,22(31):260-261.
[2]张咏新,李大军,刘鸿剑.基于Spring 框架的WebGIS 应用研究[J].测绘科学,2009,34(5):223-225.
[3]赵卫平,李晓静.基于GeoTools 的地图服务快速发布系统研究[J].测绘与空间地理信息
,2017,40(7):137-138,142.
图2碰撞分析和断面分析技术流程
图3爆管分析技术流程
96--
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论