本片文章主要讲解如何在webgl中如何实现三维管线分析功能,idesktop如何处理数据可以参考下面两篇文章。
https://blog.csdn.net/supermapsupport/article/details/71151933
https://blog.csdn.net/supermapsupport/article/details/80390189.
webgl是三维产品,如果是二维方面实现管线分析功能参考下面链接。
https://blog.csdn.net/supermapsupport/article/details/50698860.

在webg中实现三维管线分析功能主要分为两步,第一步对iserver发送请求,返回分析结果,第二步用结果对webgl种的模型进行可视化展示。下面将做具体的步骤讲解。

发布服务

首先将处理好三维网格数据和三维缓存(.s3m格式)数据发为三维服务和三维网络分析服务。一个或者多个工作空间均可,截图是放在一个工作空间里面,所以一次勾选了两个。
发布成功后,可以点进三维服务预览是否正常显示模型,点进三维网络分析服务,填写参数查看是否正常进行分析返回结果。

加载数据

此步骤只是加载刚刚发布的三维服务,能正常浏览即可。

 var promise =scene.open(URL);

进行分析

分析功能主要是对iserver刚刚发布的管线分析服务发送请求,具体请求参数可以参考iserver帮助文档,这里不在赘述,下面以下游分析为示例。
这里我实现的是点击选择管线位置,然后以点击位置为起点进行下游分析。所以第一步是获取点击的位置。然后通过请求发给iserver进行分析。

//绘制控件用于获取点击管线var handlerPointbrust = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point);//获取管线管点图层pipeedge=scene.layers.find('ResultNetWork@guanxian');pipenode=scene.layers.find('ResultNetWork_Node@guanxian');//绘制完成事件监听handlerPointbrust.drawEvt.addEventListener(function (result) {//清除绘制的点handlerPointbrust.clear();//获取点击的管线idpipesec = pipeedge.getSelection();if(value!="up"&&pipesec.length!=0){//创建请求体var queryObj = {edgeID: pipesec * 1,isUncertainDirectionValid: true,weightName: "SmLength",};// 发送请求$.ajax({type: 'GET',url: url,data: queryObj,success: function (data) {//得到结果console.log(data)}           }});

当data正常打印出结果的时候就是请求成功。如果报错400就是请求参数有问题,建议在iserver帮助文档里面搜索 tracedown参考每个参数的具体含义。

返回结果

Edges为上游管线id。
Nodes为上游节点id。

可视化效果展示

上文已经实现了分析功能,但是返回的都是参数,三维场景中并没有展示出来,如果用列表展示,效果不好,因此要和模型联动起来,主要实现思路是,通过id更改管线颜色,从而展示结果。

if(data.edges.length>0){//无关管线设置为蓝色和0.3透明度pipeedge.setObjsColor(a,Cesium.Color.ALICEBLUE.withAlpha(0.3))     //上游管线显示为红色pipeedge.setObjsColor(data.edges,Cesium.Color.RED.withAlpha(1));}if(data.edges.length>0){//上游节点显示为红色pipenode.setObjsColor(data.nodes, Cesium.Color.RED.withAlpha(1));
}           

红色箭头为点击位置。
黄色为结果。

全部代码

<div id="cesiumContainer"></div><div id="toolbar" style="position: absolute;left: 5px;top: 5px;display: none;"><select id="Options" class="selectpicker show-tick form-control"><option selected value="down">下游分析</option><option value="up">上游分析</option></select><button id="excavation" >开始分析</button><button id="clear" >清除结果</button>
</div>
 function onload(Cesium) {$('#toolbar').show();var value ,pipeedge,pipenode,pipesec;var a=[];for(var i=0;i<1887;i++){a[i]=i;}//初始化viewer部件var viewer = new Cesium.Viewer('cesiumContainer');var scene = viewer.scene;var canvas = scene.canvas;var widget = viewer.cesiumWidget;var handlerPointbrust = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point);var promise =scene.open("http://localhost:8090/iserver/services/3D-GuanDao_Line3D/rest/realspace");Cesium.when(promise,function(layers){pipeedge=scene.layers.find('ResultNetWork@guanxian');pipenode=scene.layers.find('ResultNetWork_Node@guanxian');});$('#Options').change(function(){value = $(this).val();pipeedge.setObjsColor(a,Cesium.Color.WHITE.withAlpha(1));pipenode.setObjsColor(a,Cesium.Color.WHITE.withAlpha(1));handlerPointbrust.clear();if(value == 'down'){}else if(value == 'up'){}});$("#excavation").on("click",function(){alert("请点击管线设置起始位置");pipeedge.setObjsColor(a,Cesium.Color.WHITE.withAlpha(1));pipenode.setObjsColor(a,Cesium.Color.WHITE.withAlpha(1));handlerPointbrust.clear();handlerPointbrust.activate();});$("#clear").on("click",function(){pipeedge.setObjsColor(a,Cesium.Color.WHITE.withAlpha(1));pipenode.setObjsColor(a,Cesium.Color.WHITE.withAlpha(1));handlerPointbrust.clear();});//handlerPointbrust.drawEvt.addEventListener(function (result) {handlerPointbrust.clear();pipesec = pipeedge.getSelection();if(value!="up"&&pipesec.length!=0){var queryObj = {edgeID: pipesec * 1,isUncertainDirectionValid: true,weightName: "SmLength",};//   queryObjJSON = JSON.stringify(queryObj);$.ajax({type: 'GET',url: "http://localhost:8090/iserver/services/networkAnalyst3D-GuanDao_Line3D/rest/facilityanalyst3d/ResultNetWork@guanxian/tracedownresult.json",data: queryObj,success: function (data) {console.log(data)if(data.edges.length>0){pipeedge.setObjsColor(a,Cesium.Color.ALICEBLUE.withAlpha(0.3));pipeedge.setObjsColor(data.edges,Cesium.Color.RED.withAlpha(1));}if(data.edges.length>0){pipenode.setObjsColor(data.nodes, Cesium.Color.RED.withAlpha(1));}           }});}if(pipesec.length==1){alert("未选择到管线,请缩放后重新分析");}if(value=="up"&&pipesec.length!=0){var queryObj = {edgeID: pipesec * 1,isUncertainDirectionValid: true,weightName: "SmLength",};//   queryObjJSON = JSON.stringify(queryObj);$.ajax({type: 'GET',url: "http://localhost:8090/iserver/services/networkAnalyst3D-GuanDao_Line3D/rest/facilityanalyst3d/ResultNetWork@guanxian/traceupresult.json",data: queryObj,success: function (data) {//  console.log(data)if(data.edges.length>0){pipeedge.setObjsColor(a,Cesium.Color.ALICEBLUE.withAlpha(0.3));pipeedge.setObjsColor(data.edges,Cesium.Color.RED.withAlpha(1));}if(data.edges.length>0){pipenode.setObjsColor(data.nodes, Cesium.Color.RED.withAlpha(1));}           }});}handlerPointbrust.deactivate();});

原文章地址:https://blog.csdn.net/weixin_42066016/article/details/101761039

SuperMap iClient3D for WebGL实现三维管线分析相关推荐

  1. SuperMap iClient3D for WebGL教程(空间分析)- 地表开挖及修改

    地表开挖主要是为了显示出地下的场景,比如地下管网,而地形修改通常是为了让地表平整,便于跟模型匹配,接下来我们分别说说如何实现地表开挖和地形修改. 地表开挖 1.引用核心样式文件和库文件 <scr ...

  2. SuperMap iClient3D for WebGL教程(空间分析)- Profile剖面分析

    剖面分析是指根据指定的剖面线,输出剖面线与地形数据的表面高程沿某条线(截面)的变化,或剖面线所截的模型建筑物.地下管线等的轮廓线.并支持在剖面线图上进行量算和位置查询功能,同时支持将剖面图输出为图片数 ...

  3. SuperMap iClient3D for WebGL产品包更新--201706

    SuperMap iClient3D for WebGL将于每月更新一次产品包,目前已更新至2017年06月版本. 下载SuperMap iClient3D for WebGL最新产品包请点击:下载链 ...

  4. SuperMap iClient3D for WebGL教程 粒子特效-基础火焰特效

    SuperMap iClient3D for WebGL教程 粒子特效-基础火焰特效 粒子特效简介 使用粒子特效 完整代码 作者: NIck Cheng 粒子特效简介 粒子特效通常使用与要表现某些动态 ...

  5. SuperMap iClient3D for WebGL之查询模型属性

    目录 一.通过数据服务查询 1.普通图层查询 1.1 通过WebGL属性查询接口查询 1.2.通过iserver数据服务查询接口进行查询(SuperMap iServer REST API 2.多图层 ...

  6. SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务

    SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务 申请天地图开发者 token 读懂能力文 ...

  7. SuperMap iClient3D for WebGL教程 粒子特效-扩展喷泉特效

    SuperMap iClient3D for WebGL教程 粒子特效-扩展喷泉特效 扩展喷泉特效 喷泉特效实现 完整代码 作者: NIck Cheng 扩展喷泉特效 之前的博客已经讲过了如何去生成一 ...

  8. SuperMap iClient3D for WebGL教程(影像篇)-Mapbox

    作者:为梦齐舞 本文同步更新于简书文章https://www.jianshu.com/p/e19129908252 Mapbox 是一个可以创建各种自定义地图的网站,如 foursquare.Pint ...

  9. SuperMap iClient3D for WebGL教程(Entity)-ModelGraphics

    作者:为梦齐舞 本文同步更新于简书文章[https://www.jianshu.com/p/bdf397685e8b] ModelGraphics类是隶属于实体对象的一个类型,主要用于创建模型图形,加 ...

  10. SuperMap iClient3D for WebGL教程 Camera

    SuperMap iClient3D for WebGL教程 Camera WuYK 在WebGL场景里,有一类很重要的对象,那就是我们的相机Camera对象.这里的Camera相当于人的眼睛,从坐标 ...

最新文章

  1. 兵器工业计算机应用研究所刘培志,一种双目视觉立体匹配算法_2
  2. _ZNote_Qt_定时器的总结
  3. 精选Spring Boot三十五道必知必会知识点!
  4. 【机器学习】创建自己的电影推荐系统
  5. [AHOI2005]COMMON 约数研究
  6. react demo
  7. java使用:: 表达式_Java 12:开关表达式
  8. Android 路由实践(二)
  9. 使用MQTT与函数计算做热力图的实践
  10. Linux系统编程18:超详解进程程序替换exec函数的一些用法
  11. linux安装redis插件,Linux平台安装redis及redis扩展的方法
  12. Android4.4 多媒体开发(五)----OpenMax简介
  13. 计算机组成原理课程实践,计算机组成原理课程实践教学探索.PDF
  14. 【R语言教程】不一样的零基础教程,数据分析到论文写作一站式完成
  15. java遍历map集合传值,Java之五种遍历Map集合的方式
  16. 纳韦斯托克斯方程的推导_纳维-斯托克斯方程的来源
  17. Linux文件补全功能,Linux系统自动补全命令有哪些
  18. ShareTechnote系列LTE(10):多小区多RAT之间的交互
  19. GDI+ BMP转JPG
  20. 北航计算机学院好气派,2017年北京航空航天大学国内排名第几

热门文章

  1. mac:装机软件汇总
  2. Python 导入通讯录:将.csv文件转换为.vcf文件
  3. AutoCAD2015 下载安装教程与使用技巧(已测有效)
  4. 网站性能优化——雅虎14条
  5. 漏洞C:/Windows/Fonts/csrss.exe文件找不到简单查找方法
  6. APUE学习(一)基础知识
  7. 写了一个3D彩票软件!
  8. Android常用库整理
  9. Kubernetes 【网络组件】CNI网络概念
  10. 产品规划立项流程(CDP)