一种地理文件数据存储及读写方法与流程

文档序号:28292247发布日期:2021-12-31 22:49阅读:269来源:国知局
1.本发明涉及一种地理数据文件存储方法,属于数据通信
技术领域
:。
背景技术
::2.shapefile是一种空间数据开放格式,该文件格式是地理信息软件界的开放标准,可以被各类地理信息处理软件进行地理数据文件在数据库的读取和写入,如argis、qgis。shapefile用于描述几何体对象:点、折线与多边形,这些形状与形状相关的数据属性构建了地理数据的表示。例如,shapefile可以存储井、河流、湖泊等空间对象的几何位置。除了几何位置,shapefile也可以存储这些空间对象的属性,例如河流的名字、城市的温度等等。shapefile指的是一种文件存储的方法,实际上该种文件格式是由多个文件组成的。其中,要组成一个shapefile,有三个文件是必不可少的,它们分别是".shp",".shx"与".dbf"文件,表示同一份shapefile数据的一组文件其文件名前缀应该相同。例如,存储一个关于湖的几何与属性数据,就必须有lake.shp,lake.shx与lake.dbf三个文件。而其中“真正”的shapefile的后缀为shp,然而仅有这个文件数据是不完整的,必须要把其他两个附带上才能构成一组完整的地理数据。除了这三个必须的文件以外,还有其它可选的文件(".prj",".sbn.sbx",".fbn.fbx",".ain.aih",".ixs",".mxs",".atx",".shp.xml",".cpg"),使用它们可以增强空间数据的表达能力。3.近年来,随着智慧城市建设成为热点,各类智慧城市业务对地理数据文件入库或对地理数据文件自定义处理有技术与功能的需求。在以往的技术中,地理数据文件的入库有两种实现方式实现,一种是通过安装开源软件客户端实现,如qgis;一种是基于关系型数据库postgresql的postgis的插件实现。然而,无论是前者还是后者,都只能依靠繁琐的依赖安装包实现。为了减少用户上传地理数据文件时安装数据库及其插件的步骤,降低用户使用开源软件的学习成本,亟需提出一种新的地理文件数据存储到关系型数据库的读写方法。技术实现要素:4.本发明为了减少用户上传地理数据文件时安装数据库及其插件的步骤,降低用户使用开源软件的学习成本,通过web端实现shapefile地理数据文件信息快捷解析存储和管理。在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。5.本发明提供了一种地理文件数据存储及读写方法,包括浏览器和服务器,浏览器和服务器建立双向通信,具体包括以下步骤:步骤s100.浏览器通过html5fileapi校验上传的地理数据文件,调用http请求接口传输shapefile地理图层文件流至服务器;步骤s200.服务器接收浏览器上传的地理数据文件流,通过geotoolsapi解析.dbf和.shp文件的属性,将shapefile地理图层文件数据转化成标准通用的json数据格式返回浏览器;步骤s300.浏览器接收到json数据后,渲染出可编辑表格,用户进行编辑后再次向服务器传输匹配好的json;步骤s400.服务器接收浏览器传输过来的参数,通过geotools和opengisapi进行postgresql建表和数据导入,同时通过jdbcapi对表的属性信息进行符合参数条件的修改操作。6.进一步地:步骤s100中,用户通过浏览器选择本地磁盘shapefile地理图层文件,前端javascript代码根据浏览器及移动端支持的html5fileapi,通过其change事件获取访问被选择的文件对象列表,获取文件名、文件大小,文件类型和文件流信息,并根据这些信息判断出用户选择的文件列表是否满足包含后缀为.shx、.shp和.dbf的三个文件名前缀相同文件,若满足,向服务器上传文件流,否则提示相应的不符合原因,比如缺少.shx文件。7.进一步地:步骤s100中,步骤s100中,用户通过浏览器选择本地磁盘shapefile地理图层文件,前端javascript代码通过大部分浏览器及移动端都支持的html5fileapi,通过其change事件获取访问被选择的文件夹,若文件夹里包含有后缀为.shx、.shp和.dbf的三个文件名前缀相同文件,则向服务器上传文件流,否则提示相应的不符合原因,比如缺少.shx文件。8.进一步地:步骤s100中,服务器接收到浏览器的发送的文件流后,将地理数据文件保存到文件共享服务系统。具体是将地理数据文件通过minio的javaapiputobject()函数将输入流保存到文件共享服务系统上。9.进一步地:步骤s200中,使用geotoolsapi对.dbf和.shp文件进行解析,具体方法是:首先创建dbasefilereader读取器读取shapefile,然后getheader获取.dbf文件头中的属性,其中包含属性字段名,字段类型和字段类型长度,并且通过使用shapefiledatastore组件读取.shp文件获取地理表中的属性信息,使用samplefeaturesource组件获取其中地理类型字段名。10.服务器向浏览器返回解析后的json格式的地理字段信息,其包含字段英文名、字段中文名、类型、长度、允许为空、描述。11.进一步地:步骤s300.浏览器接收到地理关系字段的json数据后,通过基于html、javascript、css封装的前端框架vue,再配合基于vue开发elementui组件库的form和table组件渲染成可辑表格。12.通过html的表单事件发起动作,进而触发表单双向绑定改变json数据,可以自定义对字段加上中文名,和描述及主键等的确认,以及是否建表导入数据等,浏览器再将自定义好的参数发送到服务端;进一步地:步骤s400中,服务端接收到参数并通过geotools和opengisapi对postgresql建表和数据导入,建表,第一步通过geotoolsdatastorefinder组件获取postgresql数据库的连接jdbcdatastore,第二步通过shapefiledatastore模块读取shapefile地理数据文件,生成地理数据文件的数据特征和字段信息来源组件simplefeaturesource,第三步通过simplefeaturesource信息来源组件获取数据库表的视图名并且通过数据库连接jdbcdatastore组件在数据库里面创建表视图,第四步通过jdbcapi根据服务器接收到的参数信息对已经建好的视图属性进行修改。数据导入:第一步通过数据库连接jdbcdatastore构建opengis的特征写入组件featurewriter,第二步通过特征来源simplefeaturesource构建特征集合simplefeaturecollection,第三步通过特征集合simplefeaturecollection遍历后形成simplefeature特征信息,第四步通过opengisapi的特征写入组件featurewriter将所有的simplefeature特征信息即地理数据导入数据表中。13.进一步地:还包括步骤s500.通过浏览器上传数据结构相同的shapefile地理数据文件至服务端,在已经存在数据库表的情况下,服务器将已存储成数据表的地理数据文件用geotoolsapi封装成中间件解析属性信息,返回字段名,字段类型给所述浏览器,用户根据数据库字段名和地理数据文件返回的字段进行字段类型匹配选择,字段匹配通过后,服务器通过jdbcapi,geotools和opengisapi对已经存在的表的数据进行覆盖或追加操作。14.本发明具有以下有益效果:1.采用本发明的一种shapefile地理文件数据通过web端自定义存储到关系型数据库的读写方法,不需要额外的软件支持,即可实现地理数据文件的入库,减少了二次开发的成本,用户只需在浏览器上操作,减少了操作流程;2.一种shapefile地理文件数据通过web端自定义存储到关系型数据库的读写方法可以部署成基于互联网传输协议的api服务供物联网自动上传更新数据,保证数据增删改查的实时性,其使用场景更为多元化;3.本发明采用的是html5的fileapi,是一种新技术,目前主流浏览器的支持近乎完善,在手机等移动设备上的支持也近乎完善,其使用场景更为多元化;4.本发明可以和现有数据库多源异构空间数据进行兼容性提取、转换、存储、加载,更好的通过云端来管理地理数据文件的信息;5.本发明的技术方案基于b/s架构开发,更轻量级,开发维护成本也更低。附图说明15.图1是一种地理文件数据存储及读写方法流程图;图2是步骤s300的表格编辑图;图3是查看地理文件存储后的表格数据图;图4是步骤s500追加或覆盖数据图;图5是一种对现有存在的地理文件数据更新流程图。具体实施方式16.为使本发明的目的、技术方案和优点更加清楚明了,下面通过附图中示出的具体实施例来描述本发明。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。17.为了便于阐明本实施例中的技术方案,在本实施例中,出现的各关键词的解释如下:.shp—图形格式,用于保存元素的几何实体;.shx—图形索引格式。几何体位置索引,记录每一个几何体在shp文件之中的位置,能够加快向前或向后搜索一个几何体的效率;.dbf—属性数据格式,以dbaseiii+的数据表格式存储每个几何形状的属性数据;geotools是英国利兹大学(universityofleeds)的jamesmacgll从1996年开始研发的一个操作和显示地图的开源java代码库,提供了一系列符合规范的操作地理空间数据的方法。18.javascript(通常简写为js)是一种轻量的、解释性的、面向对象的头等函数语言,其最广为人知的应用是作为网页的脚本语言,但同时它也在很多非浏览器环境下使用。js是一种动态的基于原型和多范式的脚本语言,支持面向对象、命令式和函数式的编程风格。19.javascript运行在网页的客户端,能被用来设计和编程网页在事件发生时的行为。20.dbasefilereader是geotoolsapi提供的一种地理文件.dbf读取方式。21.shapefiledatastore是geotoolsapi提供一种描述磁盘上shapefile地理文件的方式。22.samplefeaturesource是geotoolsapi提供的一种描述磁盘上shapefile地理文件内容简单特征源的方式datastore是geotoolsapi提供的一种描述用于访问和地理空间数据存储在范围的矢量格式,即数据存储。包括shape文件,gml文件,数据库,网页功能服务器,和其他格式。23.datastorefinder是geotoolsapi提供的一种描述对shapefile地理文件数据存储组件的查找器,用于获取datastore。24.jdbcdatastore是geotoolsapi提供的一种描述shapefile地理文件和数据存储组件之间的数据连接信息的存储,即使用其直接连接到数据库。25.featurewriter是geotoolsapi提供的一种描述shapefile地理文件数据中特征写入存储数据库中的写入驱动。即使用其直接将shapefile地理文件特征数据写入数据库中。26.simplefeaturecollection是geotools提供的一种描述shapefile地理文件中数据的特征集合,类似于一个example.shp。27.minio是一个基于apachelicensev2.0开源协议的对象存储服务。它兼容亚马逊s3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5t不等。28.本实施例提供一种基于b/s架构的(即浏览器和服务器架构模式)shapefile地理数据文件解析存储到关系型数据库的读写方法,具体包含浏览器(前端),服务器(后端)两部分组成,浏览器(前端)通过http协议向后端进行通信和数据传输,服务器(后端)也能通过http协议向前端通信和返回数据。减少用户上传地理数据文件时安装数据库及其插件的步骤,降低用户使用开源软件的学习成本,通过web端实现shapefile地理数据文件信息快捷解析存储和管理。步骤如下:1.首先用户通过浏览器选择本地磁盘shapefile地理图层文件,前端javascript代码通过大部分浏览器及移动端都支持的html5fileapi,通过其change事件获取到访问被选择的文件对象列表,获取文件名、文件大小,文件类型,文件流等信息,可以判断根据这些信息判断出用户选择的的文件列表是否满足包含后缀为.shx、.shp和.dbf的三个文件名前缀相同文件,或者选择的是文件夹,文件夹里有该3个文件的必要条件。当满足上述的判断必要条件时,向服务器上传文件流,否则提示相应的不符合原因,比如缺少.shx文件;2.服务器接收到浏览器的发送的文件流后,将地理数据文件通过minio的javaapiputobject()函数将输入流保存到文件共享服务系统上;3.使用geotoolsapi对.dbf和.shp文件进行解析,首先创建dbasefilereader读取器读取shapefile,然后getheader获取.dbf文件头中的属性,其中包含属性字段名,字段类型,字段类型长度,有获取地理表中的属性信息并且通过对shapefiledatastore读取.shp文件,对生成的特征来源samplefeaturesource获取其中地理类型字段名;4.服务器向浏览器返回解析后的json格式的地理字段信息,其包含字段名、字段中文名、类型、长度、允许为空、描述,格式如下:所述浏览器接收到上面地理关系字段的json数据后,通过基于html、javascript、css封装的前端框架vue,再配合基于vue开发elementui组件库的form和table组件渲染成可辑表格,具体视图如图2。29.5.通过html的表单事件发起动作,进而触发表单双向绑定改变json数据,可以自定义对字段加上中文名,和描述及主键等的确认,以及是否建表导入数据等,浏览器再将自定义好的参数发送到服务端;6.服务端接收到参数并通过geotools和opengisapi对postgresql建表和数据导入同时通过jdbcapi进行表属性修改,建表:第一步通过geotoolsdatastorefinder组件获取postgresql数据库的连接jdbcdatastore,第二步通过shapefiledatastore模块读取shapefile地理数据文件,生成地理数据文件的数据特征和字段信息来源组件simplefeaturesource,第三步通过simplefeaturesource信息来源组件获取数据库表的视图名并且通过数据库连接jdbcdatastore组件在数据库里面创建表视图,同时通过jdbcapi根据服务器接收到的参数信息对已经建好的视图属性进行修改。数据导入:第一步通过数据库连接jdbcdatastore构建opengis的特征写入组件featurewriter,第二步通过特征来源simplefeaturesource构建特征集合simplefeaturecollection,第三步通过特征集合simplefeaturecollection遍历后形成simplefeature特征信息,第四步通过opengisapi的特征写入组件featurewriter将所有的simplefeature特征信息即地理数据导入数据表中。30.7.后期对表的数据更新和数据库表,只需通过浏览器上传数据结构相同的shapefile地理数据文件至服务端。在已经存在数据库表的情况下,服务器端会将已存储成数据表的地理数据文件用geotoolsapi封装成中间件解析属性信息,返回字段名,字段类型给所述浏览器,用户可以根据数据库字段名和地理数据文件返回的字段进行字段类型匹配选择,字段匹配通过后,服务器通过jdbcapi,geotools和opengisapi对已经存在的表的数据进行覆盖或追加操作。同时可通过调用封装的查询表数据或者表属性api拿到如图3的表。31.本实施方式只是对本专利的示例性说明,并不限定它的保护范围,本领域技术人员还可以对其局部进行改变,只要没有超出本专利的精神实质,都在本专利的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1