SuperMap iClient3D for Cesium最短路径分析

这篇具有很好参考价值的文章主要介绍了SuperMap iClient3D for Cesium最短路径分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:Mei

前言

   在交通、消防业务场景中,如果某地发生火灾或者交通事故,需要快速规划出最短抢救路线,这就要用到网络分析中的最短路径分析功能。接下来就跟着小编一起看看,在三维场景中,如何实现最短路径分析。

实现思路

   首先在iDesktop中通过二维线构建网络数据集,然后通过iServer发布网络分析服务,前端调用SuperMap.REST.FindPathService接口,成功返回后的result为最短路径分析结果数据。

实现步骤

1、构建二维网络数据集

   空间数据在采集和编辑过程中,会不可避免地出现一些错误。例如,同一个节点或同一条线被数字化了两次,这些错误往往会产生假结点、冗余结点、悬线、重复线等拓扑错误,导致采集的空间数据之间的拓扑关系和实际地物的拓扑关系不符合,会影响到后续的数据处理、分析工作,并影响到数据的质量和可用性。

1.1拓扑检查

   功能入口:数据-拓扑-拓扑检查。
   首先要做的是对线数据进行拓扑检查,拓扑检查是为了检查出点、线、面数据集本身及不同类型数据集相互之间不符合拓扑规则的对象。这是构建网络数据集前提,也方便后面再做拓扑预处理。
   例如,这里对线数据集进行“线内无相交”检查,检查线数据集中是否存在与参考线数据集的线相交的线对象,即两个线数据集中的所有线对象必须相互分离。交点将作为拓扑错误生成到结果数据集中。然后根据错误结果对线数据进行处理。
cesium最短路径,supermap,javascript,3d

1.2线拓扑数据集处理

   功能入口:数据-拓扑-线数据拓扑处理。
拓扑处理是修复拓扑错误或避免拓扑错误产生的过程。这里主要针对线数据集进行拓扑处理,可以对处理后的线数据集进行构建面数据集或网络数据集的操作。
cesium最短路径,supermap,javascript,3d

1.3构建二维网络数据集

   功能入口:交通分析-拓扑构网-构建二维网络。
cesium最短路径,supermap,javascript,3d
cesium最短路径,supermap,javascript,3d

2、发布网络分析服务

   在iServer中发布含有二维网络数据集的工作空间,服务选择交通网络分析服务。
cesium最短路径,supermap,javascript,3d

   点击下一步后,读取对应的网络数据集的字段进行填充。注意,权重字段信息需要选择,作为网络分析中的重要参数,在这里是数据集的几何信息(’Shape_leng’线段长度,如果数据中没有该属性字段,可以在桌面对数据集添加字段、计算长度)。
cesium最短路径,supermap,javascript,3d

3、实现代码
 let nodeArray = [];
          let startP = new SuperMap.Geometry.Point(coo1[0], coo1[1]);
          let endP = new SuperMap.Geometry.Point(coo2[0], coo2[1]);
          //最短路径起始点坐标数组
          nodeArray.push(startP);
          nodeArray.push(endP);
          var findPathService, parameter, analystParameter, resultSetting;
          resultSetting = new SuperMap.REST.TransportationAnalystResultSetting({
               returnEdgeFeatures: true,
               returnEdgeGeometry: true,
               returnEdgeIDs: true,
               returnNodeFeatures: true,
               returnNodeGeometry: true,
               returnNodeIDs: true,
               returnPathGuides: true,
               returnRoutes: true
          });
          analystParameter = new SuperMap.REST.TransportationAnalystParameter({
               resultSetting: resultSetting,
               weightFieldName: "Shape_leng"//权重字段
          });
          parameter = new SuperMap.REST.FindPathParameters({
               isAnalyzeById: false,
               nodes: nodeArray,
               hasLeastEdgeCount: false,
               parameter: analystParameter
          });
      let networkURL = 
'http://localhost:8090/iserver/services/transportationAnalyst-new_NETWORL/rest/networkanalyst/Dataset_0707netWorkData_Network_1@0707netWorkData';
          //最短路径分析
          findPathService = new SuperMap.REST.FindPathService(networkURL, {
               eventListeners: { "processCompleted": processCompleted, "processFailed": processFailed }
          });
          findPathService.processAsync(parameter);
function processFailed(e) {
               // console.log(e);
               alert(e.error.errorMsg);
          }
          //路径分析成功后的回调函数
          function processCompleted(findPathEventArgs) {
               let result = findPathEventArgs.result;
               let c3Position = [];
               // console.log(result.pathList[0].route.length);
               //规划路径长度
               let saveLength = Math.ceil(result.pathList[0].route.length - 400);
               console.log(saveLength);
          if (result != null && result.pathList[0].route.components[0].components.length > 0) {
                    let pComp = result.pathList[0].route.components[0].components;
                    console.log(pComp);
               for (let i = 0; i < pComp.length - 1; i++) {
                let c3Point = new Cesium.Cartesian3.fromDegrees(pComp[i].x, pComp[i].y, 2);
                         c3Position.push(c3Point); 
                    }
                    //路线展示
                    let bestRoute = viewer.entities.add(
                         new Cesium.Entity({
                              polyline: {
                                   show: true,
                                   positions: c3Position,
                                   clampToGround: true,
                                   width: 25,
                                   material: new Cesium.PolylineGlowMaterialProperty({
                                        glowPower: 0.1, //一个数字属性,指定发光强度,占总线宽的百分比。
                                        color: Cesium.Color.WHITE
                                   }),
                                   disableDepthTestDistance: 50000
                              }
                         })
                    );
             }}

效果截图:
cesium最短路径,supermap,javascript,3d文章来源地址https://www.toymoban.com/news/detail-668298.html

到了这里,关于SuperMap iClient3D for Cesium最短路径分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SuperMap iClient3D 11i (2023) SP1 for Cesium之移动实体对象

     作者:nannan 目录 前言 一、代码思路 1.1 绘制面实体对象 1.2 鼠标左键按下事件 1.3 鼠标移动事件 1.4 鼠标左键抬起事件 二、运行效果 三、注意事项        SuperMap 官网三维前端范例 编辑线面,可以对面实体对象的节点进行增加、删除以及修改位置。那可不可以整个线/面对

    2024年02月09日
    浏览(35)
  • SuperMap iClient3D for WebGL查询地图栅格值

    栅(shān)格数据就是将空间分割成有规律的网格,每一个网格称为一个单元,并在各单元上赋予相应的属性值来表示实体的一种数据形式。每一个单元(像素)的位置由它的行列号定义,所表示的实体位置隐含在栅格行列位置中,数据组织中的每个数据表示地物或现象的非几何

    2024年02月04日
    浏览(37)
  • 【超图】SuperMap iClient3D for WebGL/WebGPU ——颜色(1)

    作者:taco         在项目中通常会出现,高亮对象。给对象设置颜色的一些问题。那么针对颜色设置在超图的 iClient3D for WebGl/WebGPU 中又提供了哪些方式呢?本篇文章将介绍一些颜色的设置方法。以及一些颜色的参数设置。         在iClient3D for WebGl/WebGPU 中主要以Supe

    2024年02月04日
    浏览(43)
  • 【超图】SuperMap iClient3D for WebGL/WebGPU —— 坐标系&位置 —— Cartesian2

    作者:taco         说到关于地理必然逃不开位置的关系。借用百度百科的内容来说 地理学(geography) ,是研究地球表层 空间地理 要素或者地理综合体 空间分布规律 、时间演变过程和 区域 特征的一门学科。 所以 位置坐标系 必然逃不掉了。那么在SuperMap iClient3D for Web

    2024年01月16日
    浏览(40)
  • iClient3D for Cesium&WebGL入门之使用vscode以服务方式运行调试

    作者:超图研究院技术支持中心-于丁 iClient3D for CesiumWebGL入门之使用vscode以服务方式运行调试 相信大家第一次使用SuperMap iClient3D for Cesium或SuperMap iClient3D for WebGL的时候,都遇到过和我一样的事情: 在文件夹中直接打开html的示例代码文件于浏览器中; 或者使用vscode安装open

    2024年02月04日
    浏览(37)
  • 超图iClient3DforCesium地形、影像、模型、在线影像交互示例

    数据源:基于iserver发布的三维场景(地形、影像、BIM模型) + 在线arcgis影像 应用:目录树展示源数据列表、目录树控制源数据可视化结果显隐、BIM模型点选查询关联属性

    2024年02月03日
    浏览(35)
  • SuperMap Hi-Fi 3D SDK for Unity设置渲染范围

    kele     在三维项目中经常会使用到大屏,有可能会用到4K屏、8K屏、长屏、带鱼屏等高分辨率的屏幕,这些屏幕的其中一个特点是其长宽比比较大,有些时候会是几块16:9的屏幕横向拼接而成,这就使得这整个屏幕在水平方向上跨度很大,渲染内容增加。通常情况下会是

    2024年02月09日
    浏览(29)
  • SuperMap Hi-Fi 3D SDK for Unity基础开发教程

    作者:kele 众所周知,游戏引擎(Unity)功能强大,可以做出很多炫酷的游戏和动画效果,这部分功能的实现往往不仅仅是靠可视化界面就能够实现的,还需要代码开发。SuperMap Hi-Fi SDKS for Unity游戏引擎插件能够实现地理数据与游戏引擎相结合,碰撞出更绚烂的火花,目前Sup

    2024年02月03日
    浏览(40)
  • SuperMap Hi-Fi 3D SDK for Unreal问题集锦

    ###前言 使用SuperMap Hi-Fi 3D SDK for Unreal,会遇到一些崩溃或者加加载不上等问题,本文档手收集记录一些使用过程总可能会遇到的一些问题并给予相应的解决方案,很多问题新版本已做优化,推荐大家可使用前,可在http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx 地址下载最

    2024年02月06日
    浏览(45)
  • SuperMap Hi-Fi 3D SDK for Unity制作游戏引擎材质

    kele     在交通,电力,规划等行业中,有的对象常常具有很强的质感,比如金属质感的 钢轨,电力塔;陶瓷材质的绝缘子;玻璃材质的建筑幕墙等,但常规方式的表现效果 往往差强人意。     游戏引擎(Unity3D)中已有丰富的材质资源库,比如玻璃,金属等材质,这

    2024年02月09日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包