CN112000312B - 基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统 - Google Patents

基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统 Download PDF

Info

Publication number
CN112000312B
CN112000312B CN202010722208.XA CN202010722208A CN112000312B CN 112000312 B CN112000312 B CN 112000312B CN 202010722208 A CN202010722208 A CN 202010722208A CN 112000312 B CN112000312 B CN 112000312B
Authority
CN
China
Prior art keywords
spatial data
tool
spatial
data processing
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010722208.XA
Other languages
English (en)
Other versions
CN112000312A (zh
Inventor
李兵
郭明强
王波
曹威
张敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hubei Dixin Technology Group Co ltd
Original Assignee
Hubei Dixin Technology Group Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hubei Dixin Technology Group Co ltd filed Critical Hubei Dixin Technology Group Co ltd
Priority to CN202010722208.XA priority Critical patent/CN112000312B/zh
Publication of CN112000312A publication Critical patent/CN112000312A/zh
Application granted granted Critical
Publication of CN112000312B publication Critical patent/CN112000312B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统,方法包括以下步骤:通过Web客户端制作空间数据处理流程图;执行流程图相关参数配置,形成可解析的kettle文件;验证kettle文件的有效性;保存kettle文件到数据库资源库;空间数据处理平台从数据库资源库请求、解析kettle文件;基于GeoTools设计空间数据抽取、转换、加载方法;自动化并行执行空间数据处理流程;系统包括:客户端,用于空间数据处理流程的配置、编辑、保存kettle文件;空间数据处理平台,用于接收、解析kettle文件,按照客户端设计的数据处理流程,将原始空间数据经过处理流转到结果数据。本发明可以完成多种空间数据从抽取、转换、清洗到加载的处理过程,便捷、耦合度低、效率高。

Description

基于Kettle和GeoTools的空间大数据自动化并行处理方法和 系统
技术领域
本发明属于空间数据自动化处理领域,具体涉及一种基于Kettle和GeoTools实现空间大数据自动抽取、转换、清洗、加载的方法和系统。
背景技术
空间数据因其海量数据存储、时空动态性、多尺度等特点,其存储和计算都较为复杂,而现有的空间数据处理方式难以自动化批量大规模的处理原始空间数据。在目前多核集群并行计算环境中,依托于数据仓库中ETL数据处理理论,可以以可视化编程的方式预先编辑处理流程,然后快速自动化完成复杂空间数据的处理。
发明内容
本发明要解决的技术问题在于针对目前大规模多来源的空间数据难以自动化处理的缺陷,提供了一种基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统,以可视化编程的方式定义空间数据处理流程,同时依托于ETL理论,实现空间大数据的自动化处理。
本发明解决其技术问题所采用的技术方案是:一种基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统。
一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,具体步骤如下:
S1:通过Web客户端制作空间数据处理流程图,得到初步的空间数据处理流程图;
S2:客户端执行所述初步的空间数据流程图相关参数配置,形成可解析的kettle文件;
S3:客户端验证所述可解析kettle文件的有效性,具体操作流程为:
S31:通过读取kettle文件的step节点,调用基于GeoTools编写ValidateParams方法判断工具的参数是否有效,如果是无效参数会抛出异常,客户端会出现一个工具参数不正确的提示;
S32:调用基于GeoTools编写的ValidateHop方法根据hop节点的inputTool和outputTool对象判断流程是否为一个有效流程,具体的判断方法是:
(1)创建一个栈stack;创建一个数组array_hop,存储所有的hop对象,创建一个数组array_tool,存储所有tool对象;
(2)根据hop计算每一个tool的入度indegree,把indegree=0的tool加入栈;
(3)如果栈stack的容量capacity不等于0,则取出stack的顶点tool_A,并从array_tool删除对应的tool;
(4)从array_hop中删除所有以tool_A为起点的hop,如果删除的hop另一个顶点outputTool入度indegree为0,则把该outputTool入栈stack;
(5)重复步骤(3)和(4)直到stack的容量capacity=0,如果array_tool中还存在tool,则表示流程不是一个有效的流程;
S4:客户端保存所述有效的kettle文件到数据库资源库,而无效的Kettle是无法被保存的;
S5:空间数据处理平台从数据库资源库请求有效的kettle文件;
S6:空间数据处理平台解析所述有效的kettle文件;
S7:空间数据处理平台基于GeoTools设计空间数据抽取、转换、加载方法,即根据kettle文件的step节点,确定流程需要调用的空间数据处理工具,包括:
S71:设计空间数据抽取工具,根据抽取工具类型采用不同的抽取方法:
调用Geotool的ShapefileDataStore接口抽取shapefile数据;
调用Gdal的OSGeo.OGR.Driver抽取gdb数据;
调用java的JDBC读取Oracle、mysql、mdb数据;
调用GeoTool的jts中GeometryJSON接口抽取geojson数据;
调用google的JAK抽取kml数据;
S72:设计空间数据转换工具,根据空间数据转换工具的不同,调用GeoTools的不同接口:
调用CoordinateTransformer.transform完成坐标转换处理;
调用buffer方法完成缓冲区功能;
调用getEnvelop方法完成外接矩形功能,调用contains、covers、crosses方法完成几何拓扑关系的分析;
S73:设计空间数据加载工具,根据加载数据的类型,实现方式和所述设计空间数据抽取工具方法相同;
S8:空间数据处理自动化并行执行空间数据处理流程,具体操作流程为:
S81:根据空间数据处理流程工具个数n,生成n个子任务,每个子任务的信息包括步骤S2所述配置的相关参数;
初始化已完成的任务数fn=0;
用一个整型数组ar存储每个子任务的执行状态,0表示未完成、1表示任务已完成,初始值为0,即ar[i]=0;
S82:创建n-1个RowData对象,RowData对象包括:originStep属性、destinationStep属性和存储类型为IFeature的链表;
S83:根据空间数据需要经过的处理过程,设置第1个RowData的originStep属性为第一个空间数据处理工具step1,destinationStep属性为第二个空间数据处理工具step2,设置第2个RowData的originStep属性为第二个空间数据处理工具step2,destinationStep属性为第三个空间数据处理工具step3,依次设置直到完成第n-1个RowData的设置;
S84:根据步骤的类型以及处于空间数据处理流程图中的顺序,依次设置每个步骤step的inputRowData和outputRowData的值为步骤S83所创建的RowData对象;
S85:每个子任务的信息对应一个Step,其中第一个Step的outputRowData对象的值是读取自空间数据的空间要素集合,要素集合的个数记为m;
S86:所述空间要素集合为a[lo,…,hi],其容量为m,定义处理一个点要素的时间为tp,处理一个线要素的时间为tl,处理一个面要素的时间为tg,根据要素集合中要素的类别,按照tg>tl>tp对要素集合进行排序,得到排序结果{[lo,…,p],[p+1,…,l],[l+1,…,hi]},其中[lo,…,p]表示面要素数组,[p+1,…,l]表示线要素数组,[l+1,…,hi]表示点要素数组;
S87:根据面要素的面积进一步对[lo,…,p]由大到小进行排序,根据线要素的长度对[p+1,…,l]由大到小进行排序,合并数组得到最终排序结果result[lo,…,hi],此时result数组中要素处理时间Tk>Tk+1,k为result数组下标;
S88:第一个子任务根据计算机cpu规格,启动j个线程,首先分配result[lo…hi]前j个要素给所述j个线程处理,单个线程根据空间数据处理操作类型调用GeoTools的工具处理要素,单个线程执行完毕,然后从result[lo,…,hi]选取处理时间最短的要素继续进行处理,同时刪除从result[lo,…,hi]中选取的要素,直到所有要素处理完毕,可以保证所有线程执行时间近似,之后将结果要素传递到关联的outputDataRow的数组对象中,将子任务ti的处理状态设置为ar[i]=1,并中止所有线程;
S89:重复步骤S88的过程,执行下一个子任务,直到流程中所有工具执行完毕,设置fn=n。
进一步地,步骤S1具体操作流程为:
S11:调用js流程绘制库mxgraph的insertVertex方法分别在mxGraph画布上添加空间数据抽取工具mxCell_extract、多个空间数据转换工具mxCell_trans、空间数据加载工具mxCell_load;
S12:调用mxgraph的insertEdge方法将mxCell_extract指向mxCell_trans,将mxCell_trans指向mxCell_load,形成初步的空间数据处理流程图。
进一步地,步骤S2具体操作流程为:
S21:执行空间数据处理工具的参数配置,所述工具参数配置包括:
空间数据抽取工具的数据来源配置;
空间数据抽取工具的抽取规则配置;
空间数据转换工具的转换规则参数配置;
空间数据加载工具数据的输出源配置;
S22:形成可解析的kettle文件,所述的kettle文件即将步骤S1配置的空间数据处理流程图和步骤S2配置的空间数据处理工具参数通过序列化的方式保存到一个xml文件中;
所述xml文件,包括一个transformation根节点,
根节点下包含一个info节点,用来记录流程的名称、描述、流程版本信息;
根节点下包含多个step节点,用来记录空间数据处理工具的类型、id、以及步骤S2设置的参数;
根节点下包含多个hop节点,用来记录空间数据处理工具执行的先后顺序。
进一步地,所述空间数据抽取工具的数据来源配置,包括Shapfile、GDB、MDB、GeoJson、Oracle、Mysql和Kml;
所述空间数据抽取工具的抽取规则配置,包括正则表达式、sql和空间关系;
所述空间数据转换工具的转换规则参数配置,包括投影转换坐标系、数据裁剪范围和添加的字段名常用空间数据处理所需参数;
所述空间数据加载工具的数据输出源配置;包括Shapfile、GDB、MDB、GeoJson、Oracle、Mysql和Kml。
进一步地,步骤S4中,所述数据库资源库是空间数据处理平台调用kettle的IDatabaseRepository接口创建的一个数据库资源库对象,并调用IDatabaseRepository接口的writeData方法将所述kettle文件写入到数据库资源库中。
进一步地,步骤S5具体操作流程为:
S51:调用kettle的login方法登录到数据库资源库,数据库资源库验证login方法的请求信息,所述请求信息包括资源库用户名user,资源库密码password;
S52:调用kettle的searchTransform方法根据kettle文件Id查询步骤S4保存有效的kettle文件的数据行;
S53:调用kettle的loadTransform方法解析上文所述的数据行,获取所要查找的kettle文件,并保存到java的Document对象中。
进一步地,步骤S6具体操作流程为:
S61:根据kettle文件transform节点创建一个trans对象;
S62:根据kettle文件的hop节点创建多个hop对象;
S63:根据kettle文件的step节点,创建多个step对象。
一种基于Kettle和GeoTools的空间大数据自动化并行处理系统,采用一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,包括:客户端、空间数据处理平台,
所述客户端包括:
空间数据处理流程编辑模块,用于通过基于mxgraph设计的图像化界面,编辑包含空间数据处理逻辑的kettle文件;
所述空间数据参数配置模块,用于配置空间工具数据源和处理规则,并将配置信息保存到数据库资源库;
所述空间数据处理平台包括:
kettle执行引擎,用于解析所述的kettle文件,并完成空间数据的处理流转;
多种空间数据处理API,包括GeoTools、Gdal、Jdbc,用于供kettle引擎调用,完成空间数据流程的执行。
进一步地,所述的kettle执行引擎,包括:
流程创建模块,用于根据kettle文件创建相应的空间数据处理流程;
信息解析模块,用于获取流程执行过程中的参数;
调度模块,用于多个转换的调度执行,调用空间数据处理API完成空间数据的处理。
本发明具有以下有益效果:
1.解决了多步骤空间数据处理流程难以配置的问题,利用mxgraph编写的Web客户端,可以快速的进行各种空间数据处理方案的配置,大大节省了前期流程配置的时间,满足空间数据处理不断变化的需求。
2.解决了并行自动化处理空间数据的问题,利用Kettle处理表格数据的特性,改造Kettle执行引擎,利用GeoTools的API,构建空间数据处理工具,使平台适用于空间数据的处理,在多核环境下,可以满足大数据量的空间数据自动化处理。
3.相比于传统空间数据处理平台,解决了必须手工编写程序完成空间数据处理的问题,同时本系统隐藏了大部分的技术细节,更易使用。
附图说明
图1是本发明一种基于Kettle和GeoTools的空间大数据自动化并行处理方法的流程图;
图2是本发明一种基于Kettle和GeoTools的空间大数据自动化并行处理系统原理结构框图;
图3是本发明实施例一种基于Kettle和GeoTools的空间大数据自动化并行处理系统使用的空间数据。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
请参考图1,图1是本发明提供的基于Kettle和GeoTools的空间大数据自动化并行处理方法流程图,所述方法包括以下步骤:
S1:通过Web客户端101制作空间数据处理流程图,形成初步的空间数据处理流程图;
S2:客户端101执行所述初步的空间数据处理流程图相关参数配置,形成可解析的kettle文件;
S3:客户端101验证所述可解析kettle文件的有效性;
S4:客户端101保存有效的kettle文件到数据库资源库;
S5:空间数据处理平台102从数据库资源库请求有效的kettle文件;
S6:空间数据处理平台102解析所述有效的kettle文件;
S7:空间数据处理平台102基于GeoTools设计空间数据抽取、转换、加载方法;
S8:空间数据处理平台102自动化并行执行空间数据处理流程。
步骤S1的具体操作流程为:
S11:调用js流程绘制库mxgraph的insertVertex方法分别在mxGraph画布上添加空间数据抽取工具mxCell_extract、多个空间数据转换工具mxCell_trans、空间数据加载工具mxCell_load;
S12:调用mxgraph的insertEdge方法将mxCell_extract指向mxCell_trans,将mxCell_trans指向mxCell_load,形成初步的空间数据处理流程图。
步骤S2的具体操作流程为:
S21:客户端101执行空间数据处理工具的参数配置,所述空间数据处理工具参数配置包括:
空间数据抽取工具的数据来源配置,主要有Shapfile、GDB、MDB、GeoJson、Oracle、Mysql、Kml;
空间数据抽取工具的抽取规则配置,主要有正则表达式、sql、空间关系;
空间数据转换工具的转换规则参数配置,主要有投影转换坐标系、数据裁剪范围、添加的字段名常用空间数据处理所需参数;
空间数据加载工具的数据输出源配置,主要有Shapfile、GDB、MDB、GeoJson、Oracle、Mysql和Kml;
S22:形成可解析的kettle文件,所述的可解析的kettle文件就是将步骤S1配置的空间数据流程图和步骤S2配置的空间数据处理工具参数通过序列化的方式保存到一个xml文件中。
所述xml文件主要包括一个transformation根节点:
根节点下包含一个info节点,用来记录流程的名称、描述、流程版本信息;
根节点下包含多个step节点,用来记录空间数据处理工具的类型、id、以及步骤S2设置的参数;
根节点下包含多个hop节点,用来记录流程工具执行的先后顺序。
步骤S3的具体操作流程为:
S31:通过读取kettle文件的step节点,调用基于GeoTools编写ValidateParams方法判断工具的参数是否有效,如果参数无效会抛出异常,客户端会提示工具参数不正确;
S32:调用基于GeoTools编写的ValidateHop方法根据hop节点的inputTool和outputTool对象判断流程是否为一个有效流程,具体的判断方法是:
(1)创建一个栈stack;创建一个数组array_hop,存储所有的hop对象,创建一个数组array_tool,存储所有tool对象;
(2)根据hop计算每一个tool的入度indegree,把indegree=0的Tool加入栈;
(3)如果栈stack的容量capacity不等于0,则取出stack的顶点tool_A,并从array_tool删除对应的tool;
(4)从array_hop中删除所有以tool_A为起点的hop,如果删除的hop另一个顶点outputTool入度indegree为0,则把该outputTool入栈stack;
(5)重复步骤(3)和(4)直到stack的容量capacity=0,如果array_tool中还存在tool,则表示流程不是一个有效的流程。
步骤S4的具体操作流程为:
所述数据库资源库是调用kettle的IDatabaseRepository接口创建的一个数据库资源库对象,并调用IDatabaseRepository接口的writeData方法将所述kettle文件写入到数据库。
步骤S5的具体操作流程为:
S51:调用kettle的login方法登录到数据库资源库,数据库资源库验证login方法的请求信息,所述请求信息包括资源库用户名user,资源库密码password;
S52:调用kettle的searchTransform方法根据kettle文件Id查询步骤S4保存的kettle文件的数据行;
S53:调用kettle的loadTransform方法解析上文所述的数据行,获取所要查找的kettle文件,并保存到java的Document对象中。
步骤S6的具体操作流程为:
S61:根据kettle文件transform节点创建一个trans对象;
S62:根据kettle文件的hop节点创建多个hop对象;
S63:根据kettle文件的step节点,创建多个step对象。
步骤S7的具体操作流程为:
根据所述kettle文件的step节点,确定流程需要调用的空间数据处理工具。
S71:设计空间数据抽取工具,根据抽取工具类型采用不同的抽取方法:
调用Geotool的ShapefileDataStore接口抽取shapefile数据;
调用Gdal的OSGeo.OGR.Driver抽取gdb数据;
调用java的JDBC读取Oracle、mysql、mdb数据;
调用GeoTool的jts中GeometryJSON接口抽取geojson数据;
调用google的JAK抽取kml数据。
S72:设计空间数据转换工具,根据空间数据转换工具的不同,调用GeoTools的不同接口:
调用CoordinateTransformer.transform完成坐标转换处理;
调用buffer方法完成缓冲区功能;
调用getEnvelop方法完成外接矩形功能;
调用contains、covers、crosses方法完成几何拓扑关系的分析。
S73:设计空间数据加载工具,根据加载数据的类型,实现方式和所述设计空间数据抽取工具方法相同。
步骤S8的具体操作流程为:
S81:根据空间数据处理流程工具个数n,生成n个子任务,每个子任务的信息包括步骤S2所述配置的相关参数;
初始化已完成的任务数fn=0;
用一个整型数组ar存储每个子任务的执行状态,0表示未完成、1表示任务已完成,初始值为0,即ar[i]=0。
S82:创建n-1个RowData对象,RowData对象包含originStep属性、destinationStep属性和存储类型为IFeature的链表。
S83:根据空间数据需要经过的处理过程,设置第1个RowData的originStep属性为第一个空间数据处理工具step1,destinationStep属性为第二个空间数据处理工具step2,设置第2个RowData的originStep属性为第二个空间处工具step2,destinationStep属性为第三个空间数据处理工具step3,依次设置直到完成第n-1个RowData的设置。
S84:根据步骤的类型以及处于流程中的顺序,依次设置每个步骤step的inputRowData和outputRowData的值为步骤S83所创建的RowData对象。
S85:每个子任务的信息对应一个Step,其中第一个Step的outputRowData对象的值是读取自空间数据的空间要素集合,要素集合的个数记为m。
S86:所述空间要素集合为a[lo,…,hi],其容量为m,定义处理一个点要素的时间为tp,处理一个线要素的时间为tl,处理一个面要素的时间为tg,根据要素集合中要素的类别,即点、线、面,按照tg>tl>tp对要素集合进行排序,得到排序结果{[lo,…,p],[p+1,…,l],[l+1,…,hi]},其中[lo,…,p]表示面要素数组,[p+1,…,l]表示线要素数组,[l+1,…,hi]表示点要素数组。
S87:根据面要素的面积对[lo,…,p]由大到小进行排序,根据线要素的长度进一步对[p+1,…,l]由大到小进行排序,合并数组得到最终排序结果result[lo,…,hi],此时result数组中要素处理时间Tk>Tk+1,k为result数组下标。
S88:第一个子任务根据计算机cpu规格,启动j个线程,首先分配result[lo…hi]前j个要素给所述j个线程处理,单个线程根据空间数据处理的操作类型调用GeoTools的工具处理要素,单个线程执行完毕,然后从result[lo,…,hi]选取处理时间最短的要素继续进行处理,同时刪除从result[lo,…,hi]中选取的要素,直到所有要素处理完毕,可以保证所有线程执行时间近似,之后将结果要素传递到关联的outputDataRow的数组对象中,将子任务ti的处理状态设置为ar[i]=1,并中止所有线程。
S89:重复步骤S88的过程,执行下一个子任务,直到流程中所有工具执行完毕,设置fn=n。
请参照图2,图2是本发明提供的基于Kettle和GeoTools的空间大数据自动化并行处理系统原理结构框图,包括:
客户端101,用于空间数据处理流程的配置、编辑、保存kettle文件;
空间数据处理平台102,用于接收、解析kettle文件,按照客户端设计的数据处理流程,将原始空间数据经过处理流转到结果数据。
所述客户端101包括:
空间数据处理流程编辑模块,通过基于mxgraph设计的图像化界面,用于编辑包含空间数据处理逻辑的kettle文件;
空间数据参数配置模块,用于配置空间工具数据源和处理规则,并将配置信息保存到数据库资源库。
所述空间数据处理平台102包括:
kettle执行引擎,用于解析所述的kettle文件,并完成空间数据的处理流转;
多种空间数据处理API,包括GeoTools、Gdal和Jdbc,用于供kettle引擎调用,完成空间数据流程的执行。
所述的kettle执行引擎,包括:
流程创建模块,用于根据kettle文件创建相应的空间数据处理流程;
信息解析模块,用于获取流程执行过程中的参数;
调度模块,用于多个转换的调度执行,调用空间数据处理API完成空间数据的处理。
本发明最明显的不同在于,采用可视化编程的方式,编辑空间数据处理流程。同时利用了Kettle的ETL处理能力和GeoTools对空间数据的处理能力,批量自动化完成空间数据的抽取、转换、清洗、加载功能。从而弥补了传统方法和系统处理空间数据的不足之处。
实施例一:
为了更清晰的说明本发明的思想,下面对基于Kettle和GeoTools的空间大数据自动化并行处理方法进行进一步的说明,请参考图3,使用湖北省老河口市建筑物矢量数据作为示例数据,其存储于建筑物.shp文件中,图层名称为BUILD,其包含46849个面要素,其坐标系为GCS_WGS_1984。选取基于GeoTools开发的Shapefile抽取工具、空间坐标转换工具、条件空间数据清洗工具、Gdb数据加载工具为空间数据处理工具,执行的具体步骤如下:
S1:通过Web客户端101制作空间数据处理流程图,形成初步的空间数据处理流程图:
创建一个流程图绘制工程;
调用js流程绘制库mxgraph的insertVertex方法分别在mxGraph画布上添加Shapefile抽取工具、空间坐标转换工具、条件空间数据清洗工具、Gdb数据加载工具;
调用mxgraph的insertEdge方法将Shapefile抽取工具指向空间坐标转换工具,空间坐标转换工具指向条件空间数据清洗工具、条件空间数据清洗工具指向Gdb数据加载工具,形成初步的空间数据处理流程图。
S2:客户端101执行上述初步形成的空间数据处理流程图相关参数配置,形成可解析的kettle文件:
执行空间数据处理工具参数配置,设置Shapefile抽取工具的输入参数为Build.shp的路径,输出参数为Build_load,空间坐标转换工具的坐标系参数为WGS_1984_Web_Mercator_Auxiliary_Sphere,设置条件数据清洗工具为Shape_Area>100,设置Gdb数据加载工具的输出为BuildResult,其他参数保持为默认。
形成可解析的kettle文件,命名为Shapfile_Trans_Gdb.kettle。Shapfile_Trans_Gdb.kettle是一个xml文件,包括一个transformation根节点,根节点下包含一个info节点,用来记录流程的名称、描述、流程版本信息。根节点下包含4个step节点,用来记录空间数据处理工具的类型、id、以及设置的参数。根节点下包含3个hop节点,用来记录流程工具执行的先后顺序。
S3:客户端101验证上述可解析的kettle文件的有效性:
读取Shapfile_Trans_Gdb.kettle文件的step节点,调用基于GeoTools编写ValidateParams方法判断工具的参数是否有效,调用基于GeoTools编写的ValidateHop方法根据hop节点的inputTool和outputTool对象判断流程是否为一个有效流程,具体的判断方法是:
(1)创建一个栈stack;创建一个数组array_hop,存储所有的hop对象,创建一个数组array_tool,存储所有tool对象;
(2)根据hop计算每一个tool的入度indegree,把indegree=0的tool加入栈;
(3)如果栈stack的容量capacity不等于0,则取出stack的顶点tool_A,并从array_tool删除对应的tool;
(4)从array_hop中删除所有以tool_A为起点的hop,如果删除的hop另一个顶点outputTool入度indegree为0,则把该outputTool入栈stack;
(5)重复步骤3和4直到stack的容量capacity=0,如果array_tool中还存在tool,则表示流程不是一个有效的流程,则重新执行步骤S2。
S4:客户端101保存Shapfile_Trans_Gdb.kettle文件到数据库资源库:
调用kettle的IDatabaseRepository接口创建的一个数据库资源库对象,并调用IDatabaseRepository接口的writeData方法将Shapfile_Trans_Gdb.kettle文件写入到数据库。
S5:空间数据处理平台102从数据库资源库请求Shapfile_Trans_Gdb.kettle文件:
调用kettle的login方法登录到数据库资源库,数据库资源库验证login方法的用户名和密码。
调用kettle的searchTransform方法根据kettle文件名称Shapfile_Trans_Gdb查询Shapfile_Trans_Gdb.kettle文件数据行。
调用kettle的loadTransform方法解析查找到的数据行,获取所要查找的kettle文件,并保存到java的Document对象中。
S6:空间数据处理平台102解析Shapfile_Trans_Gdb.kettle文件:
根据kettle文件transform节点创建一个trans对象;根据kettle文件的hop节点创建3个hop对象;根据kettle文件的step节点,创建4个step对象;
S7:空间数据处理平台102基于GeoTools设计空间数据抽取、转换、加载方法:
调用Geotools的ShapefileDataStore接口抽取shapefile数据完成Shapefile抽取工具的设计;
调用CoordinateTransformer.transform完成坐标转换处理工具的设计;
调用Geotools的getArea方法获取要素的面积,然后判断面积与输入参数的大小,去除面积大小小于100的面要素,同时去除点要素和线要素,完成条件空间数据清洗工具的设计;
调用Gdal的OSGeo.OGR.Driver完成gdb数据加载工具的设计。
S8:空间数据处理平台102自动化并行执行空间数据处理流程:
(1)生成4个子任务,每个子任务的信息包括步骤S2所述配置的相关参数。初始化已完成的任务数fn=0;用一个整型数组ar存储每个子任务的执行状态,0表示未完成、1表示任务已完成,初始值为0,即ar[i]=0。
(2)创建3个RowData对象,RowData对象有一个originStep属性和一个destinationStep属性,还有一个存储类型为IFeature的链表。
(3)根据空间数据需要经过的处理过程,设置第1个RowData的originStep属性为第一个空间数据处理工具step1,destinationStep属性为第二个空间数据处理工具step2,设置第2个RowData的originStep属性为第二个空间数据处理工具step2,destinationStep属性为第三个空间数据处理工具step3,依次设置直到完成第3个RowData的设置。
(4)根据步骤的类型以及处于流程中的顺序,依次设置每个步骤step的inputRowData和outputRowData的值为步骤(3)所创建的RowData对象。
(5)每个子任务的信息对应一个Step。其中第一个Step的outputRowData对象的值是读取自空间数据的空间要素集合,要素集合的个数记为46849。
(6)所述空间要素集合为a[lo,…,hi],其容量为46849,定义处理一个点要素的时间为tp,处理一个线要素的时间为tl,处理一个面要素的时间为tg,根据要素集合中要素的类别,即点、线、面,按照tg>tl>tp对要素集合进行排序,得到排序结果{[lo,…,p],[p+1,…,l],[l+1,…,hi]},其中[lo,…,p]表示面要素数组,[p+1,…,l]表示线要素数组,[l+1,…,hi]表示点要素数组。
(7)根据根据面要素的面积对[lo,…,p]由大到小进行排序,根据线要素的长度进一步对[p+1,…,l]由大到小进行排序,合并数组得到最终排序结果result[lo,…,hi],此时result数组中要素处理时间Tk>Tk+1,k为result数组下标。
(8)第一个子任务根据计算机cpu规格,启动j个线程,首先分配result[lo,…,hi]前j个要素给所述j个线程处理,单个线程根据空间数据处理操作类型调用GeoTools的工具处理要素,单个线程执行完毕后,从result[lo,…,hi]选取处理时间最短的要素继续进行处理,同時刪除从result[lo,…,hi]中选取的要素,直到所有要素处理完毕,可以保证所有线程执行时间近似,之后将结果要素传递到关联的outputDataRow的数组对象中,将子任务ti的处理状态设置为ar[i]=1,并中止所有线程。
(9)重复步骤(8)的过程,执行下一个子任务,直到流程中所有工具执行完毕,设置fn=n。
本发明设计的基于Kettle可视化编程自动化处理空间大数据的方法和系统,采用可视化编程的方式,编辑空间数据处理流程。同时利用了Kettle的ETL处理能力和GeoTools对空间数据的处理能力,批量自动化完成空间数据的抽取、转换、清洗、加载功能。从而弥补了传统方法和系统处理空间数据的不足之处。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,从而应用到其它数据类型或其它空间数据处理中,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (9)

1.一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:具体步骤如下:
S1:通过Web客户端(101)制作空间数据处理流程图,得到初步的空间数据处理流程图;
S2:客户端(101)执行所述初步的空间数据流程图相关参数配置,形成可解析的kettle文件;
S3:客户端(101)验证所述可解析的kettle文件的有效性,具体操作流程为:
S31:通过读取kettle文件的step节点,调用基于GeoTools编写ValidateParams方法判断工具的参数是否有效,如果是无效参数会抛出异常,客户端会出现一个工具参数不正确的提示;
S32:调用基于GeoTools编写的ValidateHop方法根据hop节点的inputTool和outputTool对象判断流程是否为一个有效流程,具体的判断方法是:
(1)创建一个栈stack;创建一个数组array_hop,存储所有的hop对象,创建一个数组array_tool,存储所有tool对象;
(2)根据hop计算每一个tool的入度indegree,把indegree=0的tool加入栈;
(3)如果栈stack的容量capacity不等于0,则取出stack的顶点tool_A,并从array_tool删除对应的tool;
(4)从array_hop中删除所有以tool_A为起点的hop,如果删除的hop另一个顶点outputTool入度indegree为0,则把该outputTool入栈stack;
(5)重复步骤(3)和(4)直到stack的容量capacity=0,如果array_tool中还存在tool,则表示流程是无效的;
S4:客户端(101)保存有效的kettle文件到数据库资源库,对于无效的Kettle文件,此时保存功能对于用户来说是不可用的;
S5:空间数据处理平台(102)从数据库资源库请求所述有效的kettle文件;
S6:空间数据处理平台(102)解析所述有效的kettle文件;
S7:空间数据处理平台(102)基于GeoTools设计空间数据抽取、转换、加载方法,即根据kettle文件的step节点,确定流程需要调用的空间数据处理工具,包括:
S71:设计空间数据抽取工具,根据抽取工具类型采用不同的抽取方法:调用Geotool的ShapefileDataStore接口抽取shapefile数据;调用Gdal的OSGeo.OGR.Driver抽取gdb数据;调用java的JDBC读取Oracle、mysql、mdb数据;调用GeoTool的jts中GeometryJSON接口抽取geojson数据;调用google的JAK抽取kml数据;
S72:设计空间数据转换工具,根据空间数据转换工具的不同,调用GeoTools的不同接口:
调用CoordinateTransformer.transform完成坐标转换处理;
调用buffer方法完成缓冲区功能;
调用getEnvelop方法完成外接矩形功能,调用contains、covers、crosses方法完成几何拓扑关系的分析;
S73:设计空间数据加载工具,根据加载数据的类型,实现方式和所述设计空间数据抽取工具方法相同;
S8:空间数据处理平台(102)自动化并行执行空间数据处理流程,具体操作流程为:
S81:根据空间数据处理流程工具个数n,生成n个子任务,每个子任务的信息包括步骤S2所述配置的相关参数;
初始化已完成的任务数fn=0;
用一个整型数组ar存储每个子任务的执行状态,0表示未完成、1表示任务已完成,初始值为0,即ar[i]=0;
S82:创建n-1个RowData对象,RowData对象包括:originStep属性、destinationStep属性和存储类型为IFeature的链表;
S83:根据空间数据需要经过的处理过程,设置第1个RowData的originStep属性为第一个空间数据处理工具step1,destinationStep属性为第二个空间数据处理工具step2,设置第2个RowData的originStep属性为第二个空间数据处理工具step2,destinationStep属性为第三个空间数据处理工具step3,依次设置直到完成第n-1个RowData的设置;
S84:根据步骤的类型以及处于空间数据处理流程图中的顺序,依次设置每个步骤step的inputRowData和outputRowData的值为步骤S83所创建的RowData对象;
S85:每个子任务的信息对应一个Step,其中第一个Step的outputRowData对象的值是读取自空间数据的空间要素集合,要素集合的个数记为m;
S86:所述空间要素集合为a[lo,…,hi],其容量为m,定义处理一个点要素的时间为tp,处理一个线要素的时间为tl,处理一个面要素的时间为tg,根据要素集合中要素的类别,按照tg>tl>tp对要素集合进行排序,得到排序结果{[lo,…,p],[p+1,…,l],[l+1,…,hi]},其中[lo,…,p]表示面要素数组,[p+1,…,l]表示线要素数组,[l+1,…,hi]表示点要素数组;
S87:根据面要素的面积进一步对[lo,…,p]由大到小进行排序,根据线要素的长度对[p+1,…,l]由大到小进行排序,合并数组得到最终排序结果result[lo,…,hi],此时result数组中要素处理时间Tk>Tk+1,k为result数组下标;
S88:第一个子任务根据计算机cpu规格,启动j个线程,首先分配result[lo,…,hi]前j个要素给所述j个线程处理,单个线程根据空间数据处理操作类型调用GeoTools的工具处理要素,单个线程执行完毕,然后从result[lo,…,hi]选取处理时间最短的要素继续进行处理,同时删除从result[lo,…,hi]中选取的要素,直到所有要素处理完毕,可以保证所有线程执行时间近似,之后将结果要素传递到关联的outputDataRow的数组对象中,将子任务ti的处理状态设置为ar[i]=1,并中止所有线程;
S89:重复步骤S88的过程,执行下一个子任务,直到流程中所有工具执行完毕,设置fn=n。
2.如权利要求1所述的一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:步骤S1具体操作流程为:
S11:调用js流程绘制库mxgraph的insertVertex方法分别在mxGraph画布上添加空间数据抽取工具mxCell_extract、多个空间数据转换工具mxCell_trans、空间数据加载工具mxCell_load;
S12:调用mxgraph的insertEdge方法将mxCell_extract指向mxCell_trans,将mxCell_trans指向mxCell_load,形成初步的空间数据处理流程图。
3.如权利要求1所述的一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:步骤S2具体操作流程为:
S21:执行空间数据处理工具参数配置,所述空间数据处理工具参数配置包括:
空间数据抽取工具的数据来源配置;
空间数据抽取工具的抽取规则配置;
空间数据转换工具的转换规则参数配置;
空间数据加载工具的数据输出源配置;
S22:形成可解析的kettle文件,所述的kettle文件即将步骤S1配置的空间数据处理流程图和步骤S2配置的空间数据处理工具参数通过序列化的方式保存到一个xml文件中;
所述xml文件,包括一个transformation根节点;
根节点下包含一个info节点,用来记录流程的名称、描述、流程版本信息;
根节点下包含多个step节点,用来记录空间数据处理工具的类型、id、以及步骤S2设置的参数;
根节点下包含多个hop节点,用来记录空间数据处理工具执行的先后顺序。
4.如权利要求3所述的一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:
所述空间数据抽取工具的数据来源配置,包括Shapfile、GDB、MDB、GeoJson、Oracle、Mysql和Kml;
所述空间数据抽取工具的抽取规则配置,包括正则表达式、sql和空间关系;
所述空间数据转换工具的转换规则参数配置,包括投影转换坐标系、数据裁剪范围和添加的字段名常用空间数据处理所需参数;
所述空间数据加载工具的数据输出源配置;包括Shapfile、GDB、MDB、GeoJson、Oracle、Mysql和Kml。
5.如权利要求1所述的一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:
步骤S4中,所述数据库资源库是空间数据处理平台(102)调用kettle的IDatabaseRepository接口创建的一个数据库资源库对象,并调用IDatabaseRepository接口的writeData方法将所述kettle文件写入到数据库资源库中。
6.如权利要求1所述的一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:步骤S5具体操作流程为:
S51:调用kettle的login方法登录到数据库资源库,数据库资源库验证login方法的请求信息,所述请求信息包括资源库用户名user,资源库密码password;
S52:调用kettle的searchTransform方法根据kettle文件Id查询步骤S4保存有效的kettle文件的数据行;
S53:调用kettle的loadTransform方法解析上文所述的数据行,获取所要查找的kettle文件,并保存到java的Document对象中。
7.如权利要求1所述的一种基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:步骤S6具体操作流程为:
S61:根据kettle文件transform节点创建一个trans对象;
S62:根据kettle文件的hop节点创建多个hop对象;
S63:根据kettle文件的step节点,创建多个step对象。
8.一种基于Kettle和GeoTools的空间大数据自动化并行处理系统,采用如权利要求1-7任一项所述基于Kettle和GeoTools的空间大数据自动化并行处理方法,其特征在于:包括:客户端(101)、空间数据处理平台(102);
所述客户端(101)包括:
空间数据处理流程编辑模块,用于通过基于mxgraph设计的图像化界面,编辑包含空间数据处理逻辑的kettle文件;
空间数据参数配置模块,用于配置空间工具数据源和处理规则,并将配置信息保存到数据库资源库;
所述空间数据处理平台(102)包括:
kettle执行引擎,用于解析所述的kettle文件,并完成空间数据的处理流程;
多种空间数据处理API,包括GeoTools、Gdal、Jdbc,用于供kettle引擎调用,完成空间数据流程的执行。
9.如权利要求8所述的一种基于Kettle和GeoTools的空间大数据自动化并行处理系统,其特征在于:
所述的kettle执行引擎,包括:
流程创建模块,用于根据kettle文件创建相应的空间数据处理流程;
信息解析模块,用于获取流程执行过程中的参数;
调度模块,用于多个转换的调度执行,调用空间数据处理API完成空间数据的处理。
CN202010722208.XA 2020-07-24 2020-07-24 基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统 Active CN112000312B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010722208.XA CN112000312B (zh) 2020-07-24 2020-07-24 基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010722208.XA CN112000312B (zh) 2020-07-24 2020-07-24 基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统

Publications (2)

Publication Number Publication Date
CN112000312A CN112000312A (zh) 2020-11-27
CN112000312B true CN112000312B (zh) 2022-04-29

Family

ID=73466526

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010722208.XA Active CN112000312B (zh) 2020-07-24 2020-07-24 基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统

Country Status (1)

Country Link
CN (1) CN112000312B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732852B (zh) * 2020-12-31 2022-09-13 武汉大学 一种跨平台的时空大数据分布式处理方法及系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126753A (zh) * 2016-08-23 2016-11-16 易联众信息技术股份有限公司 基于大数据的增量抽取的方法
CN106446144A (zh) * 2016-09-21 2017-02-22 郑州云海信息技术有限公司 一种基于kettle的大数据平台数据抽取和统计方法
CN107045538A (zh) * 2017-02-07 2017-08-15 山东浪潮云服务信息科技有限公司 一种基于kettle的web端交换管理方法
CN108829827A (zh) * 2018-06-15 2018-11-16 安徽美图信息科技有限公司 一种基于GeoTools和OGC的空间分析地图服务系统
CN109213940A (zh) * 2017-06-30 2019-01-15 武汉斗鱼网络科技有限公司 大数据下实现用户位置计算的方法、存储介质、设备及系统
CN109300023A (zh) * 2018-08-30 2019-02-01 广东源恒软件科技有限公司 一种土地增值税大数据抽取和应用的方法及系统
US10198515B1 (en) * 2013-12-10 2019-02-05 Palantir Technologies Inc. System and method for aggregating data from a plurality of data sources
CN110059067A (zh) * 2019-04-04 2019-07-26 南京南瑞水利水电科技有限公司 一种水利空间矢量大数据存储管理方法
CN110096560A (zh) * 2019-04-16 2019-08-06 湖北地信科技集团股份有限公司 基于图库一体的数据管理方法、设备、存储介质及装置
CN110888636A (zh) * 2019-12-03 2020-03-17 中电工业互联网有限公司 一种基于Kettle的ETL Web应用系统架构方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198515B1 (en) * 2013-12-10 2019-02-05 Palantir Technologies Inc. System and method for aggregating data from a plurality of data sources
CN106126753A (zh) * 2016-08-23 2016-11-16 易联众信息技术股份有限公司 基于大数据的增量抽取的方法
CN106446144A (zh) * 2016-09-21 2017-02-22 郑州云海信息技术有限公司 一种基于kettle的大数据平台数据抽取和统计方法
CN107045538A (zh) * 2017-02-07 2017-08-15 山东浪潮云服务信息科技有限公司 一种基于kettle的web端交换管理方法
CN109213940A (zh) * 2017-06-30 2019-01-15 武汉斗鱼网络科技有限公司 大数据下实现用户位置计算的方法、存储介质、设备及系统
CN108829827A (zh) * 2018-06-15 2018-11-16 安徽美图信息科技有限公司 一种基于GeoTools和OGC的空间分析地图服务系统
CN109300023A (zh) * 2018-08-30 2019-02-01 广东源恒软件科技有限公司 一种土地增值税大数据抽取和应用的方法及系统
CN110059067A (zh) * 2019-04-04 2019-07-26 南京南瑞水利水电科技有限公司 一种水利空间矢量大数据存储管理方法
CN110096560A (zh) * 2019-04-16 2019-08-06 湖北地信科技集团股份有限公司 基于图库一体的数据管理方法、设备、存储介质及装置
CN110888636A (zh) * 2019-12-03 2020-03-17 中电工业互联网有限公司 一种基于Kettle的ETL Web应用系统架构方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
肖招娣 ; 皇甫汉聪 ; 余永忠 ; 吕顺锋.面向数据分发系统的改进型并行I/O研究.《自动化技术与应用》.2018,第38-42页. *
陈静 ; 张敏 ; 张玲.大数据时代计算机应用技术专业教学内容研究.《自动化与仪器仪表》.2015,第173-174页. *

Also Published As

Publication number Publication date
CN112000312A (zh) 2020-11-27

Similar Documents

Publication Publication Date Title
CN107391653B (zh) 一种分布式NewSQL数据库系统及图片数据储存方法
CN107612886B (zh) 一种Spark平台Shuffle过程压缩算法决策方法
US10769147B2 (en) Batch data query method and apparatus
Lee et al. SQL-to-NoSQL schema denormalization and migration: a study on content management systems
CN109891438B (zh) 数值量子实验方法和系统
CN105653647B (zh) Sql语句的信息采集方法及系统
CN111597243A (zh) 基于数据仓库抽象数据加载的方法及系统
CN114820279B (zh) 基于多gpu的分布式深度学习方法、装置及电子设备
CN105824974A (zh) 数据分析处理的方法和系统
Ali Next-generation ETL Framework to Address the Challenges Posed by Big Data.
CN112000312B (zh) 基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统
CN114676522A (zh) 融合gan和迁移学习的气动形状优化设计方法及系统及设备
WO2024040844A1 (zh) 模型调试方法、装置、电子设备及存储介质
US10310823B2 (en) Program development support system and program development support software
CN104361090A (zh) 数据查询方法及装置
CN115169578A (zh) 一种基于元宇宙数据标记的ai模型生产方法及系统
CN113779117A (zh) 一种数据监控方法、装置、存储介质和电子设备
CN112395365A (zh) 一种知识图谱批量离线查询解决方案
CN116450871B (zh) 基于Spark分布式的栅格转矢量方法、系统及设备
Ponce et al. Extension of a Task-based model to Functional programming
US20240220541A1 (en) Fpga-based method and system for accelerating graph construction
CN110928875B (zh) 关系型数据库管理系统中的元组排序方法、查询方法及装置
CN112286800B (zh) 一种功能测试点辅助分析方法与系统
CN118069471B (zh) 一种rpa工作流的日志采样方法、存储介质、设备
CN110232055B (zh) Olap数据分析迁移方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant