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

相关文章

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

浅析Python中的绝对导入与相对导入

《浅析Python中的绝对导入与相对导入》这篇文章主要为大家详细介绍了Python中的绝对导入与相对导入的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1 Imports快速介绍2 import语句的语法2.1 基本使用2.2 导入声明的样式3 绝对import和相对i

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的