本文主要是介绍iClient对接缓冲区分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作者:lly
在SuperMap iServer分布式分析服务中,提供了针对海量数据的缓冲区分析功能。本文将介绍如何通过iClient对接分布式分析服务中的缓冲区分析。
一、开发准备
1、iServe开启分布式分析服务,参考博客 https://blog.csdn.net/supermapsupport/article/details/90903095
2、iClient开发包,可以通过iClient 产品官网进行下载
二、iServer上的分布式分析缓冲区分析作业
在iServer上可通过图形化界面进行分析,并预览结果,来测试分析的结果是否为想要的结果。
1.首先在分布式分析服务中找到空间分析下的缓冲区分析buffers
2.创建分析作业,并填写相应参数
3.执行完毕后可在iServer预览分析结果
三、iClient 对接缓冲区分析
我们提供了多个GIS前端开发框架,在这以iClient for Classic为例来对接。
1.引入文件与服务并创建容器
<script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
<script type="text/javascript">var resultLayer,processingsUrl = "http://localhost:8090/iserver/services/distributedanalyst/rest/v1/jobs",mapURL ="http://localhost:8090/iserver/services/map-world/rest/maps/World",map = new SuperMap.Map("map", {controls: [new SuperMap.Control.Navigation(),new SuperMap.Control.Zoom(),new SuperMap.Control.LayerSwitcher()],allOverlays: true});
2.注册秘钥
SuperMap.SecurityManager.registerToken(processingsUrl, "XEYE-4vTLNnss6Ryd0xGzZL1La8iTw7jpaKRAE5GYEsGDM8fJD3_OsZW4yu2ZtiL9tMkQEAL3tyApDHAlz1GYw..");
3.设置分析参数
var buffersAnalystJobsParameter = new SuperMap.BuffersAnalystJobsParameter({datasetName: $('#datasetName').val(),//分析数据集bounds: getBounds(), //分析范围distance: $('#distace').val(), //缓冲距离distanceField: $('#distanceField').val(),//缓冲距离字段distanceUnit: $('#distanceUnit option:selected').attr('value'),//缓冲距离单位dissolveField: $('#dissoveField').val() //融合字段});
4.执行任务并展示地图
processingService.addBuffersJob(buffersAnalystJobsParameter, function (serviceResult) {if (serviceResult.error) {widgets.loader.removeLoader();var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);return;}serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {if (info.serviceType === 'RESTMAP') {SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(function (response) {return response.json();}).then(function (result) {var mapUrl = result[0].path;resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer("resultLayer", mapUrl, {transparent: true});resultLayer.events.on({"layerInitialized": addLayer});function addLayer() {map.addLayer(resultLayer);widgets.loader.removeLoader();}});}});});
5.显示结果
完整代码如下:
iClient for Classic:
http://iclient.supermap.io/examples/classic/editor.html#buffersAnalystJobService
iClient for Leaflet:
http://iclient.supermap.io/examples/leaflet/editor.html#buffersAnalystJobService
iClient for Openlayers:
http://iclient.supermap.io/examples/openlayers/editor.html#buffersAnalystJobService
这篇关于iClient对接缓冲区分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!