WebGIS的优势在于利于信息共享,Window系统、Linux系统及移动平台的Android、IOS均可以使用同一套系统,提高了系统的便利性,降耗了系统开发成本[1]。在Web系统中,通常更注重客户端[2],由于浏览器的安全限制,浏览器对文件系统的访问限制较多,Web系统的数据大部分由服务器返回,只有小部分储存在用户本地终端上的数据(Cookie)能够一直保存在浏览器中,客户端无法大量存储和记录用户数据。不能处理过多数据和浏览器、不能存储大量数据的特点使WebGIS无法实现如Arcgis或Qgis桌面端GIS平台由用户自主选择文件系统中的矢量数据进行加载功能。Web平台具有桌面端平台便利性、跨平台、免安装及兼容性好的优点[3],许多行业的业务系统会优先选择Web作为系统基底,在WebGIS中实现矢量数据加载功能十分必要,也是决定WebGIS能否适配更多业务的一大瓶颈。针对该问题的研究现状,存在部分可被利用的分散技术片段,如地理信息系统工具包(Geotools)可以进行基础的数据读取解析[4],地理信息系统服务器(Geoserver)数据服务可以实现将矢量数据发布为地图服务并进行地图样式设置[5],这些技术在各自的领域上均比较成熟,应将技术统筹串联起来,解决串联后产生的问题并完整地实现WebGIS加载矢量数据的功能。1基础研究1.1需求分析WebGIS的独特优势使WebGIS系统广泛应用在各行各业的业务系统中,如农业、林业、气象、水利、海洋、环保、铁路运输和数字城市等。针对各行各业中业务的不同,抽象出部分基本通用的功能作为本次研究的基本需求。基本需求为用户在日常使用系统时,需要在电脑的文件系统中选择矢量数据文件导入系统,导入成功后在地图上显示矢量图形并可进行数据操作。功能需求将分为数据导入、用户权限限制、数据编辑、样式设置、数据导出及数据查询。在数据导入功能中,常见的矢量数据格式需要具有较好的加载支持,用户只需要从客户端电脑选择文件放到系统上即能完成导入。在用户权限方面,用户登录账号,操作添加数据,只有用户拥有查看权限、编辑权限和删除权限;在数据编辑方面,用户可以添加字段或删除字段,可以通过编辑功能修改数据属性;在样式显示方面,用户可根据矢量数据的类型,分别设置点线面的样式;在数据导出方面,用户可按选择的格式将数据从系统中导出;在数据查询方面,用户可以进行空间范围查询,也可以自选属性字段进行属性模糊查询。1.2技术路线系统架构使用B/S,服务器端采用对象—关系型数据库管理系统+空间信息服务(PostgreSQL+PostGIS)作为底层数据存储模块[6],程序采用编程语言Java作为开发语言,以Java后端开发框架+对象关系映射框架(Spring Boot+Hibernate)为系统主要架构进行开发[7]。地图数据服务使用Geoserver,客户端采用Web页面的脚本语言(JavaScript)作为开发语言,以代码编译工具+构建用户界面的JavaScript框架+三维地图开发引擎(webpack+vue.js+cesium.js)作为前端开发框架。1.3技术难点Geoserver自动服务发布与服务更新,Geoserver一般由用户手动发布数据服务并配置显示样式,提供地图标准服务链接供前端调用显示,但是本功能的实现需要系统能自动处理流程。Web系统无法直接加载矢量数据,浏览器无法主动读取磁盘上的数据,脚本语言无法处理复杂数据,无法长期存储数据在浏览器端,导致浏览器无法单独处理并加载矢量数据。仅靠Geoserver无法实现数据查询、数据编辑、属性字段编辑等功能,难点在于结合关系型数据库和Java编写的后端服务完成功能。服务器存在性能瓶颈,由于客户端为浏览器,用户上传的矢量数据均被存储在服务器中,服务器必须集中处理与存储用户上传的大量数据,导致管理混乱并涉及性能问题。2功能设计与实现2.1总体流程功能整体流程如图1所示。10.19301/j.cnki.zncs.2024.04.014.F001图1功能整体流程2.2数据加载与解析系统提供常见的空间数据格式如Shapefile、Geojson、Kml、GeoPackage、CAD等加载支持,数据由用户从前端上传,由后端处理为统一标准的数据结构。针对不同的数据格式,采取不同的读取策略,读取时将数据统一存储在哈希表(HashMap)中,并将空间字段使用文本标记语言(WKT)存储[8],为下一步将数据转存至关系型数据库中做统一标准的中间处理。比较特殊的矢量图形格式(CAD)并非只为地理信息系统设计,可能存在没有坐标系的CAD数据,因此CAD数据仅允许具有地理信息坐标的数据才能被系统读取并加载[9]。CAD数据中点线面均存储在同一个文件中,没有属性,因此读取此类数据时应该将其分类为点、线、面3类数据。2.3数据存储数据存储在PostgreSQL+PostGIS结合的数据库中,使关系型数据库可以存储空间几何数据。用户每上传一个矢量数据,将创建一个数据结构与源数据相同的数据表,根据其数据字段类型,分别使用整型、浮点型、字符串、布尔型以及时间等类型存储,矢量数据的空间字段使用PostGIS的几何结构(Geometry)类型存储[10]。PostGIS的Geometry类型如表1所示。10.19301/j.cnki.zncs.2024.04.014.T001表1PostGIS的Geometry类型类型描述构成Point点单个点Multipoint多点由n个点组成Linestring线由点组成的一条线Multilinestring多线由n条线组成Polygon面首尾相连的一条线组成的一个面Multipolygon多面由n个面组成2.4数据服务发布用户完成数据上传并存储在数据库后,Web前端无法直接加载数据库中的数据,需要将数据库中的数据发布至Geoserver中形成标准(WMS)数据服务[11],前端可以进行加载和浏览。发布流程:创建工作空间→创建数据存储→将数据表发布为图层→为图层添加预设样式→将成功发布的服务地址存储至数据库。Geoserver提供了可以自动操作的软件架构风格接口(REST)[12],该接口使用超文本传输协议(HTTP)方式操作Geoserver,分别用不同的HTTP请求类型(PUT、POST、GET)向Geoserver中添加配置、获取配置和删除配置,可以通过Geoserver管理软件自动向Geoserver中添加和修改图层。2.5数据展示与搜索服务成功发布后,将标准服务(WMS)添加到地图中显示[13]。查看属性表功能,可以根据用户自选的属性字段进行模糊搜索,用户自行选择需要搜索的字段,并在输入框中模糊填入搜索内容,即可搜索到结果。也可以根据空间范围检索,由用户在地图上绘制一个多边形或由用户上传一个指定格式的图形数据,确定搜索后,搜索包含在指定空间范围内的数据,使用PostGIS的空间分析函数ST_Contains。除属性表之外,用户还可以在地图上以图检索属性,以数据索引图形,通过提供丰富的查询功能,让用户更好地管理数据。2.6数据编辑数据编辑功能包括对数据属性的编辑、空间图形编辑、数据删除、字段的增加和删除功能。用户可以新增属性字段,可增加的类型包括字符串、布尔型、时间、整型、浮点型,也可以删除不需要的字段。用户可以新增数据,根据数据几何图形类型手动在地图上绘制一个新图形。用户可以修改数据,修改数据包括修改属性数据和修改图形数据,图形修改包含在地图上移动图形的节点,分割、合并和重绘图形。2.7图形样式设置图形样式设计可以让用户设置地图样式,根据几何图形的不同,设计不同的显示样式。当几何图形为点状时,提供预设的矢量图标可供选择,如圆形、方形、星形,并可以选择填充颜色、描边的颜色和宽度,也可以将图标设置为由用户上传的图片文件。当几何图形为线状时,可以设置线的宽度、颜色和透明度。当几何图形为面状时,可以设置填充颜色和透明度以及描边的颜色、宽度、透明度。针对所有的点线面层,均提供注记显示的功能,用户可以从属性信息中选择一个或多个字段作为注记显示内容,并配置文字的样式、文字的描边与填充颜色、文字的大小等。另外,更高级的样式设置可以按属性字段值分类配置不同类型数据的样式。设置样式时,需要在前端根据用户选择的颜色生成Geoserver样式语言(SLD),再使用Geoserver REST自动修改样式[14]。3结语近年来,对于公众生活、自然资源部门、林业、海洋、数字城市等各个行业,地理信息系统发挥着非常重要的作用,地理信息系统也逐渐成为一个重要的不可或缺的数字管理手段。本次功能的设计与实现从实际业务需求出发,整理了在WebGIS系统中加载矢量数据的功能需求,根据具体的业务需求,抽象细化为数据加载与解析、数据存储、数据服务发布、数据展示与搜索、数据编辑和图形样式设置细化功能模块,针对WebGIS的缺陷,寻找实现此功能的难点并寻找替代解决方案,间接地解决了在WebGIS上无法直接加载矢量数据的瓶颈问题,提高了WebGIS的业务扩展能力。
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览