iServer GPA模型在实际场景中的使用——实现导入shp数据并切瓦片存储到MongoDB数据库发布服务

本文主要是介绍iServer GPA模型在实际场景中的使用——实现导入shp数据并切瓦片存储到MongoDB数据库发布服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:yyy

目录

一、场景介绍

二、操作使用

三、实际应用

1、制作GPA模型

2、发布模型

3、通过post请求实现GPA模型自动化处理

四、注意事项

1、算子问题

2、模型算子问题

3、POST请求参数问题


一、场景介绍

        大数据时代来临,人们对于空间大数据处理的自动化与性能需求也越来越迫切。为此,SuperMap提供了处理自动化服务,通过处理自动化工具(以下简称工具)构建处理自动化模型(以下简称模型)并运行,可实现空间数据处理与分析过程的自动化。除此之外,也可以通过使用自定义工具构建模型进行空间数据处理与分析。

二、操作使用

SuperMap iServer内置了处理建模器,用于可视化构建处理自动化模型。通过建模器您可以:

  • 可视化拖拽和连接工具,构建符合您工作需求的模型。
  • 分步运行模型,运行至您所选的工具,以检验处理自动化流程的正确性。
  • 运行整个模型实现空间数据的自动化处理与分析流程。

处理建模器页面地址可通过处理自动化服务管理的基本信息页面进行查看,如图,您可通过该链接进入处理建模器页面:

处理建模器页面界面如下:

图  处理建模器页面

处理建模器页面的左侧为处理自动化工具列表,中间为可视化建模画布,右侧为参数设置与输出窗口。

图  功能按钮

        通过页面上方的文件下拉框,可以导入和导出处理自动化建模的模板。而点击清除按钮可以清空画布上的模型。右上角的执行模型按钮可以运行构建好的模型,发布模型按钮则可以将构建好的模型发布为处理自动化工具。

点击执行模型按钮后,模型会提交为处理自动化任务。

        在iServer服务列表中通过处理自动化服务下的geoprocessing/restjsr可以进入处理自动化服务的根资源,处理自动化服务根资源页面提供了地理工具列表和任务列表,通过工具列表可以查看处理自动化服务提供的所有工具以及您置入的自定义工具描述;通过任务列表进入处理自动化任务列表资源页面,即通过任务ID可查看对应的处理自动化任务信息。

三、实际应用

        通过GPA模型实现导入shp数据,保存到本地工作空间中,制作地图,切矢量瓦片并存储到MongoDB数据库中,最后将其发布为服务。

1、制作GPA模型

        要想实现上述的功能,我们需要知道在GPA模型中需要用到哪些算子才能完成操作,按照iDesktop和iServer中的实现流程,我们可以将其分为三部分:①导入shp数据、②制作地图保存工作空间、③切MongoDB瓦片、④发布MongoDB瓦片;在GPA模型中这些功能我们都能找到对应的算子,如:

①导入shp数据:导入.SHP数据

②制作地图保存工作空间:自动制图

③切MongoDB瓦片:生成矢量瓦片配置文件、拆分切图任务、多进程生成地图瓦片

④发布MongoDB瓦片:MongoDB瓦片发布

注:在GPA模型中,切瓦片总共要分为三步:生成矢量瓦片配置文件、拆分切图任务、多进程生成地图瓦片;在GPA模型中的地图瓦片工具提供了多进程生成地图瓦片的能力,根据地图的比例尺和地理范围等需要先将切图任务拆分成多个子任务;所以这里需要先进行拆分切图任务,然后再进行多进程生成矢量瓦片。

         按照上述的分析,我们就可以在iServer的处理自动化界面中手动构建出完整的流程图,构建的效果图如下:

 然后我们就可以在右侧的边栏中填写输入每个算子对应的参数信息;最后我们点击“执行模型”就可以实现整个功能了。

        如何判断当前模型是否执行成功呢?我们可以通过以下两种方式来判断:①当模型中算子执行成功后,会在算子模块的右上角出现绿勾,说明当前算子执行完成,如果算子模块的右上角出现红叉,则说明当前算子执行失败,这个时候我们就需要去排查是否是因为参数填写错误导致的;②在iServer处理自动化的任务列表中找到对应的任务,查看当前的任务执行进程以及结果。

2、发布模型

        当我们通过上一步中执行完成整个流程后会发现整个模型中包含的算子太多,并且各个算子之间的连接关系也很复杂,那么这个时候我们就可以通过另一种方法将其进行简化:将其发布为自定义模型工具。

 这里的参数“保存参数值”如果勾选上,那么我们发布的自定义模型工具中就会默认包含刚才输入填写的参数,一般为了保障模型的重复使用,我们这里不再勾选。

发布完成后,在左侧边栏的“自定义模型工具”中就会包含我们刚才发布的模型,我们将其拖拽到界面中,发现当前的这个模型算子中参数是将之前所有算子进行了汇总,我们不用再考虑算子与算子之间的链接关系,只需要填写其对应的参数即可。

 参考第一步中的全模型参数,我们填写了这个自定义的模型,执行后发现其结果与全流程结果一致。

3、通过post请求实现GPA模型自动化处理

        为了实现自动化处理执行GPA模型,我们可以通过POST请求来实现这种过程,在POST请求中主要包含两个部分:POST请求头和POST请求体。其中POST请求头我们可以通过在iServer的处理自动化工具列表中获取到,根据第二步中发布的自定义模型工具中我们可以得到相应的服务地址

这里我们就可以获取到一个完整的POST请求头http://localhost:8090/iserver/services/geoprocessing/restjsr/gp/v2/sps.WorkflowProcessFactory.models:demo0210/jobs?token=qdPwJ4EGBaRDs_PFRYiy1xnwqFspiLJQCT-HXoKdzY1A2rHeRWmL0SMtA-krdUmZWqx_kdJQ2U_NL1iuvDFhfQ..

其中“sps.WorkflowProcessFactory.models:demo0210”为当前自定义模型工具的工具ID;而POST请求体中具体的参数如何填写,我们可以根据下面“输入参数”的内容来设置。

         通过上述的内容,这里设置了具体的POST请求内容:

POST请求头POST请求体

http://localhost:8090/iserver/services/geoprocessing/restjsr/gp/v2/sps.WorkflowProcessFactory.models:demo0210/jobs?token=qdPwJ4EGBaRDs_PFRYiy1xnwqFspiLJQCT-HXoKdzY1A2rHeRWmL0SMtA-krdUmZWqx_kdJQ2U_NL1iuvDFhfQ..

{

    "parameter": {

        "importshp-sourceFilePath":"D:\\SuperMap\\data\\202202\\0210\\test\\world.shp",

        "importshp-sourceFileCharset":"ANSI",

        "importshp-targetDatasource":"sdx --server=D:/SuperMap/data/202202/0210/test/test.udbx --alias=test --dbType=udbx",

        "importshp-targetDatasetName":"world",

        "importshp-targetEncodeType":"NONE",

        "importshp-importMode":"NONE",

        "importshp-isImportEmptyDataset":"false",

        "importshp-spatialIndexInfo":"ture",

        "importshp-isAttributeIgnored":"false",

        "importshp-isImportingAs3D":"false",

        "automapping-workspacePath":"D:\\SuperMap\\data\\202202\\0210\\test\\test.smwu",

        "automapping-mapName":"world",

        "automapping-templates":"",

       "buildvectorscifile-cacheName":"wp007",

        "buildvectorscifile-worksapcefile":"D:\\SuperMap\\data\\202202\\0210\\test\\test.smwu",

        "buildvectorscifile-mapName":"world",

        "buildvectorscifile-storageType":"MongoDB",

        "buildvectorscifile-levels":["1","2","3","4","5","6"],

        "buildvectorscifile-outputFolder":"D:\\SuperMap\\data\\202202\\0210\\wp007",

        "buildvectorscifile-cacheBounds":"-180.0,-90.0,180.0,83.62359619140625",

        "buildvectorscifile-tileStorageConnection":"--database=test0210 --server=localhost:27017",

        "buildvectorscifile-mvtStyleWithoutFont":"true",

        "buildvectorscifile-mvtWithAllField":"false",

        "buildvectorscifile-mvtTileBuffer":"16",

        "buildvectorscifile-mvtTileExtent":"4096",

        "buildvectorscifile-mvtWithoutFilter":"true",

        "buildvectorscifile-mvtSimplifyGeometry":"false",

        "buildcachemultiprocess-cpuPercentage":"50",

        "mongodbpublish-serverAdresses":"localhost:27017",

        "mongodbpublish-username":"",

        "mongodbpublish-password":"",

        "mongodbpublish-database":"test0210",

        "mongodbpublish-tilesetNames":["wp007"],

        "mongodbpublish-iserverPath":"http://localhost:8090",

        "mongodbpublish-token":"qdPwJ4EGBaRDs_PFRYiy1xnwqFspiLJQCT-HXoKdzY1A2rHeRWmL0SMtA-krdUmZWqx_kdJQ2U_NL1iuvDFhfQ..",

        "mongodbpublish-interfaceTypes":["地图服务","矢量瓦片服务"]

    },

    "environment ": {

        "master":"spark://0.0.0.0:7077",

        "appName":"Geoprocessing",

        "settings":["spark.cores.max=8","spark.driver.host=192.168.29.252","spark.executor.memory=32g"]

    }

}

        通过POST请求完成上述请求后,我们可以在iServer处理自动化的任务列表中看到具体的任务进程是否完成,以及执行结果等。

         任务执行到这里后就说明当前的流程能够完整的走通,并且服务预览也都正常,说明通过POST请求完成GPA模型全流程自动化执行是能正常实现的。并且省去了手动输入参数,简化了操作过程。

四、注意事项

1、算子问题

        由于目前官网发布的iServer版本中地理处理自动化算子中并不包含“MongoDB瓦片发布”,所以这里提供了替换的解决方法和步骤,具体请见附件“1、操作步骤.docx”;

2、模型算子问题

        在制作GPA模型时,需要注意各个算子直接参数连接的前后关系,如在“生成矢量瓦片配置文件”与“拆分切图任务”两个算子之间,“生成矢量瓦片配置文件”的输出结果“瓦片目录”为“拆分切图任务”算子输入参数的“子任务目录”和“多进程生成地图瓦片”算子输入参数的“缓存目录”等。

3、POST请求参数问题

        在POST请求中我们需要注意,post请求头中需要针对具体的模型工具来使用具体的url,其中地址中的token是在iServer中独自生成的http://localhost:8090/iserver/services/security/tokens,而post请求体中的参数则需要与当前模型工具的输入参数ID一致。为了进行区分,这里我们可以参考附件“2、post请求完成处理自动化流程.docx”,其中具体说明了post请求自动化模型全流程以及post请求单个算子模型的过程。

附件下载地址:POST请求实现GPA模型全自动化流程.zip-其它文档类资源-CSDN下载

这篇关于iServer GPA模型在实际场景中的使用——实现导入shp数据并切瓦片存储到MongoDB数据库发布服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744937

相关文章

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本