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