iClient旅行商分析模拟物资配送

2024-02-25 09:18

本文主要是介绍iClient旅行商分析模拟物资配送,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:lly

背景

在特殊时期,需要根据情况对交通进行管控,实行某些道路区域禁止通行的措施,在这中情况下,需要根据具体禁行情况进行物资配送的规划,所以我们使用iClient旅行商分析,来进行物资配送的模拟。

一、构建显示图层

分别构建禁行点,配送中心,目的点图层和数组

    var resultLayer = L.featureGroup().addTo(map);var StopLayer = L.featureGroup().addTo(map);var CenterLayer = L.featureGroup().addTo(map);var targetLayer = L.featureGroup().addTo(map);var centerPoint=[];var targetPoint=[];var stopPoint=[];

二、站点添加

监听鼠标事件,添加各点

function addStop(){StopLayer.clearLayers();map.off('click');stopPoint=[];map.on('click', function(e) {L.circleMarker([e.latlng.lat, e.latlng.lng], {color: 'red'}).addTo(StopLayer);stopPoint.push(L.latLng(e.latlng.lat, e.latlng.lng));});}function addTarget(){targetLayer.clearLayers();map.off('click');targetPoint=[];map.on('click', function(e) {L.marker([e.latlng.lat, e.latlng.lng]).addTo(targetLayer);targetPoint.push(L.latLng(e.latlng.lat, e.latlng.lng));});}function addCenter(){CenterLayer.clearLayers();map.off('click');centerPoint=[];map.on('click', function(e) {L.marker([e.latlng.lat, e.latlng.lng],{icon: myIcon}).addTo(CenterLayer);centerPoint.push(L.latLng(e.latlng.lat, e.latlng.lng));});}

三、旅行商分析

判断传入点是否存在

 if(centerPoint.length==0){alert("请添加配送中心");return;}else if(targetPoint.length==0){alert("请添加配送目的地");return;}

创建分析实例

 findMTSPPathsService = L.supermap.networkAnalystService(serviceUrl);//创建多旅行商分析参数实例resultSetting = new SuperMap.TransportationAnalystResultSetting({returnEdgeFeatures: true,returnEdgeGeometry: true,returnEdgeIDs: true,returnNodeFeatures: true,returnNodeGeometry: true,returnNodeIDs: true,returnPathGuides: true,returnRoutes: true});analystParameter = new SuperMap.TransportationAnalystParameter({resultSetting: resultSetting,weightFieldName: "length",barrierPoints:stopPoint});findMTSPPathsParameter = new SuperMap.FindMTSPPathsParameters({centers:centerPoint,isAnalyzeById: false,nodes: targetPoint,hasLeastTotalCost: true,parameter: analystParameter});

进行路线查找

 findMTSPPathsService.findMTSPPaths(findMTSPPathsParameter, function (serviceResult) {var result = serviceResult.result;result.pathList.map(function (result) {L.geoJSON(result.route, {color: "green"}).addTo(resultLayer);});});

四、结果展示

.在这里插入图片描述
完整代码如下:


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title data-i18n="resources.title_findMTSPPathsServiceLogistics"></title>
<script type="text/javascript" src="../js/include-web.js"></script>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;"><button onclick="addStop()">防控禁行点</button><button onclick="addCenter()">添加配送中心</button><button onclick="addTarget()">添加目的点</button><button onclick="findMTSPPathsProcess()">模拟配送</button>
<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
<script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
<script type="text/javascript">var host = window.isLocal ? window.server : "https://iserver.supermap.io";var map, findMTSPPathsService, resultSetting, analystParameter, findMTSPPathsParameter,url="http://localhost:8090/iserver/services/data-changchun/rest/data",baseUrl = host + "/iserver/services/map-changchun/rest/maps/长春市区图",serviceUrl = host + "/iserver/services/transportationanalyst-sample/rest/networkanalyst/RoadNet@Changchun";map = L.map('map', {crs: L.CRS.NonEarthCRS({bounds: L.bounds([48.4, -7668.25], [8958.85, -55.58]),origin: L.point(48.4, -55.58)}),center: [-3600, 4700],maxZoom: 18,zoom: 6});L.supermap.tiledMapLayer(baseUrl, {noWrap: true}).addTo(map);var resultLayer = L.featureGroup().addTo(map);var StopLayer = L.featureGroup().addTo(map);var CenterLayer = L.featureGroup().addTo(map);var targetLayer = L.featureGroup().addTo(map);var myIcon = L.icon({iconUrl: '../img/marker.png',iconSize: [44, 30]});var centerPoint=[];var targetPoint=[];var stopPoint=[];function findMTSPPathsProcess() {resultLayer.clearLayers();if(centerPoint.length==0){alert("请添加配送中心");return;}else if(targetPoint.length==0){alert("请添加配送目的地");return;}//创建多旅行商分析服务实例findMTSPPathsService = L.supermap.networkAnalystService(serviceUrl);//创建多旅行商分析参数实例resultSetting = new SuperMap.TransportationAnalystResultSetting({returnEdgeFeatures: true,returnEdgeGeometry: true,returnEdgeIDs: true,returnNodeFeatures: true,returnNodeGeometry: true,returnNodeIDs: true,returnPathGuides: true,returnRoutes: true});analystParameter = new SuperMap.TransportationAnalystParameter({resultSetting: resultSetting,weightFieldName: "length",barrierPoints:stopPoint});findMTSPPathsParameter = new SuperMap.FindMTSPPathsParameters({centers:centerPoint,isAnalyzeById: false,nodes: targetPoint,hasLeastTotalCost: true,parameter: analystParameter});//进行查找findMTSPPathsService.findMTSPPaths(findMTSPPathsParameter, function (serviceResult) {var result = serviceResult.result;result.pathList.map(function (result) {L.geoJSON(result.route, {color: "green"}).addTo(resultLayer);});});}function addStop(){StopLayer.clearLayers();map.off('click');stopPoint=[];map.on('click', function(e) {L.circleMarker([e.latlng.lat, e.latlng.lng], {color: 'red'}).addTo(StopLayer);stopPoint.push(L.latLng(e.latlng.lat, e.latlng.lng));});}function addTarget(){targetLayer.clearLayers();map.off('click');targetPoint=[];map.on('click', function(e) {L.marker([e.latlng.lat, e.latlng.lng]).addTo(targetLayer);targetPoint.push(L.latLng(e.latlng.lat, e.latlng.lng));});}function addCenter(){CenterLayer.clearLayers();map.off('click');centerPoint=[];map.on('click', function(e) {L.marker([e.latlng.lat, e.latlng.lng],{icon: myIcon}).addTo(CenterLayer);centerPoint.push(L.latLng(e.latlng.lat, e.latlng.lng));});}
</script>
</body>
</html>

这篇关于iClient旅行商分析模拟物资配送的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745046

相关文章

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in