作者:lly
在SuperMap iServer分布式分析服务中,提供了针对海量数据的拓扑检查分析功能。本文将介绍如何通过iClient对接分布式分析服务中的拓扑检查分析。
一、开发准备
1、iServe开启分布式分析服务,参考博客 https://blog.csdn.net/supermapsupport/article/details/90903095
2、iClient开发包,可以通过iClient 产品官网进行下载
二、iServer上的分布式分析拓扑检查分析作业
在iServer上可通过图形化界面进行分析,并预览结果,来测试分析的结果是否为想要的结果。
1.首先在分布式分析服务中找到空间分析下的拓扑检查分析topologyValidator
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 topologyValidatorJobsParameter = new SuperMap.TopologyValidatorJobsParameter({
datasetName: $('#datasetName').val(),//源数据集
datasetTopology: $('#datasetTopology').val(),//拓扑检查数据集
rule: $('#rule option:selected').attr('value'),//拓扑检查规则
tolerance: $('#tolerance').val()//容限
});
4.执行任务并展示地图
processingService.addTopologyValidatorJob(topologyValidatorJobsParameter, 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#topologyValidatorJobService
iClient for Leaflet:
http://iclient.supermap.io/examples/leaflet/editor.html#topologyValidatorJobService
iClient for Openlayers:
http://iclient.supermap.io/examples/openlayers/editor.html#topologyValidatorJobService