本文以等高线分析为例,使用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 } } }
注:代码只是截取的一部分代码,参考使用,具体调用根据自己的开发的实际情况来写。
<全文完>