序文
インターンシップ中にいくつかの時間前、1は(などKriging.js、など)を直接フロントエンドデータベースを計算するために、いくつかの空間補間を呼び出すことで、2つのソリューションのようだった、空間補間分析を行うために必要な地理データのいくつかの需要を受け、他の一つは、ArcGISのでGPサービスをリリースされ、その後、JSのためのArcGIS APIが呼び出されます。大量のデータを計算するので、GPサービスを経由して最終決定を実現しています。要約する手順の一部は達成したとの問題は、ピットが発生しました。
公開されたGPサービス
- 示すように、まず、モデル内のArcGISモデルビルダーに設立され、それが直接呼び出しクリギングツールです。他のパラメータがあった:環境から得られる抽出するためのマスクとして層マスク、分析範囲を拡張環境から取得され; Z値補間フィールドは、パラメータから得られ、入力層に入力し、パラメータから得られます。Pは、モデルパラメータのセット、すなわち任意である標識されました。
完了したら、[保存]をクリックしてモデルを検証します。
- 保存モデルファイルをクリックして、関連する入力パラメータを開いて実行します。サービスが最初に投稿するGPを実行する必要がありますので。
- 結果を実行した後に、図に示されています。注:ArcGISで同じ色と層の前面表示を呼び出した後に、分級GPサービスは同じです。私は特定の分類を表示したいと色が直接改質層の最後の実行結果を属性することができます。
次に、ジオプロセシングを開くためにクリック- > [結果ウィンドウ、右だけのサービスで公開]をクリックし、現在のセッションでモデルを実行します。ArcGISのように、データサービスを公開する次のステップ。
- 編集サービス。まず、あなたはプロンプトについての情報を編集することができ、分析し、エラーのない解放後。注意:モードを実行するには、選挙のフロントエンドに層に結果を表示することができます「結果マップサービスを参照してください」。
- ArcGIS Serverのビューおよびテストサービスを提供しています。
GPサービスを呼び出します
JavaScriptの4.12コールGPサービス用のArcGIS APIは、コードを直接置きます
function doJob() {
require([
"esri/Map", "esri/views/MapView", "esri/layers/MapImageLayer", "esri/layers/FeatureLayer",
"esri/layers/CSVLayer", "esri/tasks/Geoprocessor", "esri/widgets/Legend", "esri/request"
], function (Map, MapView, MapImageLayer, FeatureLayer, CSVLayer, Geoprocessor, Legend, request) {
// 数据
testLayer = new FeatureLayer({
url: "https://localhost:6443/arcgis/rest/services/test/data/MapServer/0"
})
// 边界掩膜数据
maskLayer = new FeatureLayer({
url: 'https://localhost:6443/arcgis/rest/services/test/KrigingTestData/MapServer/2',
tranparent: 0.7
})
var KrigingGP = new Geoprocessor('https://localhost:6443/arcgis/rest/services/gp/Kriging/GPServer/Kriging') //实例化和调用克里金插值服务
// console.log('计算插值')
pattern = $('#patterns option:selected').val()
crop = $('#crops option:selected').val()
el = $('#NP option:selected').val()
var query = testLayer.createQuery() //要素服务中查询数据
query.where = "crop = '"+ crop +"' AND pattern = '"+pattern +"'"
testLayer.queryFeatures(query).then( re => {
console.log(JSON.stringify(re))
if (re.features.length == 0) {
alert('当前指标下无数据,请重新选取')
} else {
let params = {
Zvalue: el,
Input: re,
Extent: maskLayer,
Mask: maskLayer
}
KrigingGP.submitJob(params).then( result => {
if (result.jobStatus == 'job-failed') {
alert('计算插值失败')
// console.log(result)
} else if (result.jobStatus == 'job-succeeded') {
console.log('计算成功')
// console.log(result)
let resultLayer = KrigingGP.getResultMapImageLayer(result.jobId) // 获取插值计算结果图层
// console.log(resultLayer)
resultLayer.opacity = 0.9
resultLayer.title = '插值结果'
map.layers.pop()
map.layers.add(resultLayer) //结果图层添加到地图上显示
}
})
}
})
})
}