ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

iClient对接区域汇总分析

2019-08-25 21:02:27  阅读:382  来源: 互联网

标签:map iClient 汇总 对接 网格 ol new 统计


作者:LX

在SuperMap iServer分布式分析服务中,提供了针对海量数据的区域汇总分析功能。本文将介绍如何通过iClient对接分布式分析服务中的区域汇总分析服务并将结果在前端展示。

一、 区域汇总是为什么?

区域汇总分析,指的是针对线数据集和面数据集制作聚合图的一种空间分析作业。指通过网格面或多边形对地图线或面要素进行划分,然后,以标准属性字段或权重字段对每个网格单元内线或面要素进行统计,将统计结果作为该网格单元的统计值。最后按照网格单元统计值的大小进行排序,通过色带对网格单元进行色彩填充。
两种统计形式:
标准属性字段统计:即对通过网格单元内的线或面对象的原有属性字段信息进行统计。
权重字段统计:即对通过网格单元内的线或面对象与网格单元相交部分的对象属性信息进行统计,相交部分的属性信息由标准属性字段的值加权计算得出。

以下图为例进行解释:图中是以四边形网格进行的区域汇总分析,高亮显示的网格单元里有两个线对象,线对象A和线对象B。其中线对象A的总长是从A1至A4点,但只有A2至A3部分在网格单元内;线对象B的总长是B1至B3点,但只有B1至B2部分在网格单元内。我们现在对线数据集的“length”字段,进行"sum"统计。
在这里插入图片描述
以标准属性字段统计
• 线对象A的length属性值(即A1至A4点的总长度)为364.11
• 线对象B的length属性值(即B1至B3点的总长度)为165.01
• 以“sum”的统计模式进行统计,该网格单元的统计值结果为364.11+165.01=529.12

以权重字段统计
• 分析算法将线对象A在A2点和A3点处打断,计算A2A3部分在整个线对象A中所占的比重,通过线对象A的length属性值(即A1至A4点的总长度)364.11,计算出A2A3的属性值为79.70;
• 分析算法将线对象B在B2处打断,计算B1B2部分在整个线对象B中所占的比重,通过线对象B的length属性值(即B1至B3点的总长度)165.01,计算出B1B2的属性值为31.72
• 以“sum”的统计模式进行统计,则该网格单元的统计值结果为79.70+31.72=111.42

二、 开发准备

1、搭建分布式分析环境并发布分布式分析服务,参考博客《快速搭建iServer大数据分布式空间分析服务》进行分布式分析环境的搭建以及服务的发布;
2、服务端进行区域汇总分析(验证服务有效性)
1)发布分布式分析服务,然后进入到服务的jobs资源下,选中区域汇总在这里插入图片描述
2)创建分析任务
在这里插入图片描述
在这里插入图片描述
3)分析成功
在这里插入图片描述
3、iClient开发包,可以通过官网地址下载: http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

三、 iClient开发代码

SuperMap提供了多个GIS前端开发地图库,我们在这以iClient for Openlayers为例来对接。
1、引入js文件
需要引入openlayers的css和js文件,以及iclient9-openlayers的css,js文件;
我们的iclient包中只需要引入include-openlayers.js就可以加载以上全部文件

<script type="text/javascript" src="http://iclient.supermap.io/dist/openlayers/include-openlayers.js"></script>

2、定义服务url并创建底图

//分布式分析服务
  var processingsUrl ="http://localhost:8090/iserver/services/distributedanalyst/rest/v1/jobs";
 //地图服务
  var mapURL ="http://localhost:8090/iserver/services/map-world/rest/maps/World";
  var map = new ol.Map({
                target: 'map',
                view: new ol.View({
                    center: [-73.95, 40.75],
                    zoom: 12,
                    projection: 'EPSG:4326'
                })
            });
   map.addLayer(new ol.layer.Tile({
            source: new ol.source.TileSuperMapRest({
                url: mapURL,
            }),
        }));

3、安全验证

//安全验证
var token=” I5OZZxPYAZIJvL7tCQCZB6qMHrG8hMw0a0hOqvCRlm7sMA_5MyRZSoLZxNbPXHevAvDniCJgtSOiCzx466HPjA..”;
SuperMap.SecurityManager.registerToken(processingsUrl, token);

4、设置区域汇总分析参数(以标准属性字段统计)

//区域汇总参数
var summaryRegionJobParameter = new SuperMap.SummaryRegionJobParameter({
            datasetName:"samples_processing_newyorkZone_R",//数据集名称
            type:"SUMMARYMESH",//网格面汇总
            meshType:"0",//四边形网格
            query:[-74.05,40.65,-73.85,40.85],//分析范围
            standardSummaryFields: true,//以标准属性字段统计
            standardStatisticModes: "max",//统计模式
            standardFields:"LocationID",//字段名称
            resolution: "1000",//格网大小
            meshSizeUnit:"Meter",//网格大小单位
            sumShape:true //统计面积
        });

5、区域汇总分析

 //定义分布式分析服务
 var processingService = new ol.supermap.ProcessingService(processingsUrl);
 //执行区域汇总分析
 processingService.addSummaryRegionJob(summaryRegionJobParameter, function (serviceResult) {
                  //获取分布式分析结果
                    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;
                                new ol.supermap.MapService(mapUrl).getMapInfo(function (
                                    mapInfo) {
                                    layer = new ol.layer.Tile({
                                        source: new ol.source.ImageSuperMapRest(
                                            ol.source.ImageSuperMapRest
                                            .optionsFromMapJSON(mapUrl,
                                                mapInfo.result))
                                    });
                                    map.addLayer(layer);
                                });
                            });
                        }
                    });
                });

6、结果展示
在这里插入图片描述
附上完整代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title data-i18n="resources.title_SummaryRegionJobService"></title>
<script type="text/javascript" src="../../dist/openlayers/include-openlayers.js"></script>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
<div id="map" style="width: 100%;height:100%"></div>
<script type="text/javascript" include="bootstrap,jquery,widgets" src="../js/include-web.js"></script>
<script type="text/javascript">
        var layer,
            processingsUrl ="http://localhost:8090/iserver/services/distributedanalyst/rest/v1/jobs",
            mapURL ="http://localhost:8090/iserver/services/map-world/rest/maps/World",
            map = new ol.Map({
                target: 'map',
                view: new ol.View({
                    center: [-73.95, 40.75],
                    zoom: 12,
                    projection: 'EPSG:4326'
                })
            });
        map.addLayer(new ol.layer.Tile({
            source: new ol.source.TileSuperMapRest({
                url: mapURL,
            })
        }));
       var processingService = new ol.supermap.ProcessingService(processingsUrl);
       SuperMap.SecurityManager.registerToken(processingsUrl, "I5OZZxPYAZIJvL7tCQCZBxiYOPOK8EZwixXh7nTdlfhJ1_cDuVyoHaA1pgUKEG2vJsjHxX1bRvMAf6l6yqzGug..");
           //区域汇总参数
       var summaryRegionJobParameter = new SuperMap.SummaryRegionJobParameter({
                datasetName:"samples_processing_newyorkZone_R",//数据集名称
                type:"SUMMARYMESH",//网格面汇总
                meshType:"0",//四边形网格
                query:[-74.05,40.65,-73.85,40.85],//分析范围
                standardSummaryFields: true,//以标准属性字段统计
                standardStatisticModes: "max",//统计模式
                standardFields:"LocationID",//字段名称
                resolution: "1000",//格网大小
                meshSizeUnit:"Meter",//网格大小单位
                sumShape:true //统计面积
            });
            
	  processingService.addSummaryRegionJob(summaryRegionJobParameter, function (serviceResult) {
			  //获取分布式分析结果
				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;
							new ol.supermap.MapService(mapUrl).getMapInfo(function (
								mapInfo) {
								layer = new ol.layer.Tile({
									source: new ol.source.ImageSuperMapRest(
										ol.source.ImageSuperMapRest
										.optionsFromMapJSON(mapUrl,
											mapInfo.result))
								});
								map.addLayer(layer);
							});
						});
					}
				});
			});
        
    </script>
</body>
</html>

标签:map,iClient,汇总,对接,网格,ol,new,统计
来源: https://blog.csdn.net/supermapsupport/article/details/100045063

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有