ArcGIS Pro创建/发布/调用GP服务全过程示例(等高线分析)

科技资讯 投稿 7200 0 评论

ArcGIS Pro创建/发布/调用GP服务全过程示例(等高线分析)

本文以等高线分析为例,使用ArcGIS Pro软件,从GP分析服务的创建、发布、调用全过程进行演示。

本文示例使用(因为本人portal的授权的版本只有10.5的,故使用10.5进行示例):

ArcGIS JS API4.16

需求:通过在前端绘制或导入多边形范围,设置等高距,生成绘制区域的等高线。

(1)准备一个地形文件,可以是tif或者img等格式

2、创建GP模型

(1)使用Extract by Mask工具,裁剪出输入要素的多边形范围的栅格数据

参数说明: 

InputRaster:地形dem数据,可以使用tif格式,支持经纬度坐标或投影坐标,根据实际情况选择需要的地形路径(第一步准备的地形数据)

OutputFeature:输出的等高线线要素

注:在ArcMap10.3版本创建的GP工具可以在ArcGIS Pro打开,但在ArcGIS Pro打开后,就无法在ArcMap中打开了,不同的ArcGIS版本也一样,低版本GP工具在高版本打开后,就无法再原来的版本中打开,所以注意备份不同版本的工具。

(1)双击运行GP服务

4、访问并验证GP服务

 先通过绘制得到绘制的多边形graphic,然后设置参数,利用Geoprocessor来执行GP服务得到结果,再将结果的等高线绘制到地图上。

    startExcute (graphic {
      const featureSet = new FeatureSet(
      featureSet.features = [graphic]
      const inputRaster = {
        'url': this.demDatas[this.value].url,
        'format': this.demDatas[this.value].format || 'tif'
      }
      let params = {
        "inputFeature": featureSet,
        "contourInterval": this.contourInterval,
        "inputRaster": inputRaster
      }
      
      const geop = new this.Geoprocessor(this.contourUrl
      geop.outSpatialReference = {
        wkid: this.map.spatialReference.wkid
      }
      if (this.isAsync { //发布的服务是异步时的处理方式
        this.loading = true
        geop.submitJob(params.then(data => {
          var options = {
            interval: 1500,
            statusCallback: function (j {
              // console.log("Job Status: ", j.jobStatus;
            }
          }
          geop.waitForJobCompletion(data.jobId, options.then(res => {
            geop.getResultData(res.jobId, 'OutputFeature'.then(item => {
              this.drawLine(item.value.features
              this.loading = false
            }
          }, error => {
            this.loading = false
            this.$message.error('分析出错,请联系管理员!'
            console.error('等高线分析出错:' + error
          }.catch(error => {
            this.loading = false
            this.$message.error('分析出错,请联系管理员!'
            console.error('等高线分析出错:' + error
          }
        }
      } else { //发布的服务是同步时的处理方式
        this.loading = true
        console.log('params2', params
        geop.execute(params.then(data => {
          this.loading = false
          this.drawLine(data.results[0].value.features
          console.log('datas', data
        }, error => {
          this.loading = false
          this.$message.error('分析出错,请联系管理员!'
          console.error('等高线分析出错:' + error
        }
      }
    }

注:代码只是截取的一部分代码,参考使用,具体调用根据自己的开发的实际情况来写。

<全文完>

编程笔记 » ArcGIS Pro创建/发布/调用GP服务全过程示例(等高线分析)

赞同 (32) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽