当前位置: 首页 > news >正文

交通地理信息系统实习教程(二)

 这篇文章服务于GIS背景用户以及有志于GIS的朋友

操作源数据位置:【免费】交通地理信息系统实习二源数据资源-CSDN文库

软件安装包位置:【免费】TransCad-交通地理信息系统软件资源-CSDN文库


  • 一、最短路径分析

1.1软件启动说明

这里需要给出一个必要的说明,TransCAD6.0软件在重启后会出现概率的闪退或无法打开现象,这里给出如下解决方案:

我们需要将同时放在TransCAD压缩包中的《TC6.0补丁》文件夹下的所有文件复制到TransCAD6.0的安装目录下,替换掉原文件即可。

接下来我们打开TCW软件即可以运行TransCAD6.0软件,TCW应用程序如图1-1所示:

图1-1 TCW应用程序

这里需要说明的是,若未重启也无法打开软件,也可以尝试将放在TransCAD压缩包中的《TC6.0补丁》文件夹下的所有文件复制到TransCAD6.0的安装目录下替换掉原文件。

1.2数据导入

在第一次实习中,我们便已大体上清楚TransCAD6.0的操作逻辑,这里我们参照实习指导书以及此前的操作进行本次的数据导入,在Procedures中勾选Network/Path和Routing/Logistics,如图1-2所示:

图1-2 Procedures勾选

接下来,打开以下地理文件:BOSTON.CDF,DEPOTS.DBD和STOPS.DBD,文件类型下拉框中选择Geographic File (* .cdf, * .dbd),如图1-3所示:

图1-3 选择Geographic File文件

1.3图例显示

接下来,我们需要将站点和仓库显示出来。这里,我们首先点击Map--Scale,将地图的显示比例改为1:40000,接下来点击STOPS层(即Customers)的显示符号,将其改为红色点状符号,大小为6;再将DEPOTS层的显示符号改为蓝色方形符号,大小为10;最后点击工具栏中的​对STOPS层的ID和DEPOTS层的NAME进行标注;操作如图1-4,结果如图1-5所示:

图1-4 图例显示操作

图1-5 图例实现结果

1.4保存文件

进行完如上操作后,我们便完成了一个阶段性的小目标,接下来我们只需要按照规定操作Save Workspace as到Lab3Data文件夹中,并命名为Lab3NetworkA.wrk,操作结果如图1-6所示:

图1-6 保存操作

1.5插入网络图层

为了在TransCAD中执行网络相关功能,需要有一个网络文件。我们首先激活Streets图层,然后点击Networks/Paths--Settings,打开Lab3Data中的MYBOSTON.NET网络文件;插入操作如图1-7所示:

图1-7 插入街道图层

1.6分析最短路径

进行完如上插入操作后,我们需要进行最短路径分析,接下来,点击Networks/Paths--Shortest Path,在弹出的窗口中点击​工具,选择两个仓库所对应的节点。点击右侧​工具,将LENGTH和TIME(min)的Skim Method都设置为All Links,然后依次设置Minimize为最短距离和最短时间,最后点击​工具即可求解;最短路径操作结果如图1-8所示,最短时间操作结果如图1-9所示:

图1-8 最短路径操作结果

图1-9 最短时间操作结果

1.7问题解答(first)

现在假设你在快递公司担任GIS-T分析员。你的第一个任务是找到街道网络中从第一仓库到第二仓库的最短路径,同时回答下列问题:

①两个仓库之间沿最短距离条件下的最短路径的总旅行时间和旅行距离是多少?(2分)

②沿着最短时间条件下的最短路径,两个仓库之间的总旅行时间和距离是多少?(2分) (注意:须写下测量单位)

③这两条最短路径使用的街道段是否相同?(2分)

解答:

如图1-10可知,沿最短距离条件下的最短路径的总旅行时间为8.4013mins,旅行距离为2.5884Miles

图1-10 最短距离条件下最短路径分析结果图

如图1-11可知,沿着最短时间条件下的最短路径的总旅行时间为7.0499mins,旅行距离为2.6941Miles

图1-11 最短时间条件下最短路径分析结果图

如图1-12可知,这两条最短路径使用的街道段并不相同,但在某些街道有重叠(最短距离条件下的路径为绿色,最短时间条件下的路径为

图1-12 路径分析对比图

1.8清除操作

这里为了不对后续操作步骤产生影响,我们需要对业已完成部分进行清除操作,即清除显示屏上的最短路径。


  • 二、TSP问题分析

这里我们的实际操作依旧是参照王老师给定的实习指导书中的内容。进行TSP即“履行推销员分析”。

2.1数据导入

为了进行后续分析,我们仍需要继续导入数据。首先点击Map—Layers,把街道网络(CDF Nodes Layer)的节点层在地图上显示出来;如图2-1所示:

图2-1 节点层显示

2.2创建数据集

接下来我们需要创建一个新的选择集,包括TSP之旅的所有站点。点击Tool–Selection选项,以交互方式选择第一仓库和ID为1至10的网络节点,将该选择集命名为"TSPstops",这里需要注意的是必须将第一仓库作为选择集的第一个条目;操作如图2-2所示,结果如图2-3所示:

图2-2 建立TSPstops数据集

图2-3 数据集建立完成视图

2.3保存文件

进行完如上操作后,我们便完成了一个阶段性的小目标,接下来我们只需要按照规定操作Save Workspace as到Lab3Data文件夹中,并命名为Lab3NetworkB.wrk,操作结果如图2-4所示:

图2-4 保存结果示意图

2.4隐藏CDF Nodes layer图层

为了进行TSP分析操作,这里我们需要隐藏CDF Nodes layer图层,操作示意如图2-5所示:

图2-5 隐藏CDF Nodes layer图层

2.5 TSP分析

接下来我们直接借助TransCAD的Traveling Salesman Problem分析工具进行TSP分析。首先,点击Networks/Paths–Traveling Salesman Problem,在Stops框中选择TSPstops,在Minimize框中选择[TIME (min)],并勾选Display directions框;最后点击ok,即可得到输出结果;操作示意如图2-6所示,操作结果如图2-7所示:

图2-6 TSP分析操作示意图

图2-7 TSP分析操作结果图

2.6分析XML文件

接下来,关闭Traveling Salesman Problem窗口,TransCAD将在Internet Explorer窗口或TXT窗口中显示驾驶指南。将这个XML文件(V6.0)或TXT文件(V4.5)保存并命名为"TSPdirections.xml"或"TSPdirecions.txt";这里我使用的是TransCAD6.0,故打开的是.xml文件,如图2-8所示:

图2-8 在Excel中打开的TSPdirections.xml文件

2.7删除TSP路线

为了进行后续VRP问题分析,这里我们需要删除已有的TSP路线,直接右键点击删除即可。操作如图2-9所示:

图2-9 删除TSP路线

2.8问题解答(second)

这个TSP之旅的总行程时间是多少?(2分)

阅读文件"TSPdirections.xml",上面的行驶路线表明,最后一个行程段是"从第11站到第12站"。为什么在旅行推销员问题的结果中会出现第12站?什么是第12站? (3分)

解答:

如图2-10可知,总行程时间为32.3881mins

图2-10 TSP总时间视图

如图2-11可知,第1站和最终的第12站都是第一仓库First Depot,从Excel文件表即行驶路线表里可以看到,出发的第一站fromnode 编号为108139,最后一个行程段中的tonode编号仍是108139,因此第12站就是出发的第一仓库。推测可能由于该车走一圈后最终还是会回到起点第一仓库。

图2-11 Excel分析图

2.9文件保存

进行完如上操作后,我们便又完成了一个阶段性的小目标,接下来我们只需要按照规定操作Save Workspace as到Lab3Data文件夹中,并命名为Lab3NetworkC.wrk,操作结果如图2-12所示:

图2-12 保存Lab3NetworkC.wrk文件

  • 三、VRP分析

3.1数据导入

首先,我们需要更新DEPOTS层的属性表中,即输入开放时间,由题已知第一仓库(ID=26)经营一辆运载能力为40个单位,成本为200美元的送货车,第二仓库(ID=27)经营一辆运载能力为70个单位,成本为300美元的送货车。接下来只需创建一个车辆表并输入相关数据,将此表保存在Lab3Data文件夹中,然后命名为VehicleTable1.bin;操作示意如图3-1、图3-2、图3-3和图3-4所示:

图3-1 在DEPOTS层的属性表中更新时间

图3-2 创建新的车辆表

图3-3 添加车辆表信息

图3-4 保存操作

3.2创建矩阵

接下来点击Routing/Logistics—Vehicle Routing,点击Matrix File框右侧的"..."按钮,打开Lab3Data文件夹中的VRP_MAT.MTX矩阵文件,作为该车辆路径问题中使用的路径规划矩阵(见下图);同时在Vehicle选项中选择上一步建立的VehicleTable1.bin文件;操作示意如图3-5和图3-6所示:

图3-5 Vehicle Routing建立操作

图3-6 Cities属性表视图

3.3 VRP操作

接下来,我们可以使用已经加载/创建的数据解决VRP。将输出的路线表保存在Lab3Data中,并命名为VRP_RouteTable1.bin,然后看到Internet Explorer窗口中显示的VRP行程报告,这里我使用的是TransCAD6.0,故保存此报告并命名为"VRP_ItineraryReport1.xml";操作示意如图3-7、图3-8和图3-9所示:

图3-7 创建路线示意图

图3-8 选择示意图

图3-9 保存操作示意图

3.4问题解答(third)

①从第一车厂派出的车辆的"总时间"和"Depart Load"是多少?从第一车厂派出的车辆为哪些客户提供服务?(注意:按照该车所服务的客户的顺序,列出车站的编号) (5分)

②该车辆在第二仓库的"总时间"和"Depart Load"是多少?这辆车在第二仓库的出发时间和返回时间是什么?这辆车为多少客户提供服务?(6分)

③是否有客户没有被这两辆车所服务?如果有,有多少?(3分)

解答:

由图3-10及图3-11可知,第一仓库的总时间为4h35mins;Depart Load是40.0。从第一车厂派出的车辆提供服务的站点依次是:Stop 24,Stop 1,Stop 2,Stop 22(共4个客户)

图3-10 route2视图

图3-11 first站点视图

由图3-12及图3-13可知,第二仓库的总时间为7h23min;Depart Load是60.0。这辆车在第二仓库的出发时间为1:23pm,返回时间为8:46pm,服务次序分别为:Stop12、 Stop11、Stop14、Stop15、Stop8、Stop18(6个客户)

图3-12 route1视图

图3-13 second站点视图

还有未被这两辆车服务的客户,共计15个客户。

3.5增加车辆VRP分析

接下来,修改车辆表,重新解决VRP。将新输出的路线表命名为VRP_RouteTable2,并将其保存在Lab3Data文件夹中。然后,将新的输出行程文件保存并命名为VRP_ItineraryReport2;操作示意如图所示:

图3-14 属性表添加车辆信息操作示意图

图3-15 输出示意图

图3-16 保存到作业文件夹

3.6问题解答(forth)

①这三辆车从两个仓库出发,是否有可能为所有25个客户提供服务?列出这三辆车各自服务的站点编号。另外请列出这三辆车都不提供服务的站点ID(如果存在这种站点)。(5分)

解答:

由图3-17可知,增加一辆车后仍不能为所有客户提供服务。

第一辆车服务的站点为(按服务次序):Stop 9Stop10(共2个)

第二辆车服务的站点为:Stop 14Stop15Stop17Stop16Stop11(共5个)

第三辆车服务的站点为:Stop 1Stop2Stop25Stop5Stop21Stop22Stop4Stop3Stop6Stop12(共10个)

这三辆车都不提供服务的站点为:Stop 7Stop8Stop13Stop18Stop19Stop20Stop23Stop24(共8个)

图3-17 三车路线示意图

四、实习总结

这次实习不仅是对我课堂学习的检验,更是对我实践能力的锻炼和提升。这次实习主要是利用TransCAD软件进行最短路径分析(SPA)、交通网络路径分析(TRP)和车辆路径问题(VRP)的实践操作。这些分析方法是交通规划、物流管理和地理信息系统应用中的重要工具,对于提高交通效率和优化资源配置具有重要意义。

在最短路径分析中,通过TransCAD构建了交通网络模型,并设置了起始点和终点。通过软件的分析功能,得到了网络中的最短路径及其相关属性,如距离、时间等。

在TRP分析中,考虑了更多的约束条件,如道路通行能力、车辆类型等。通过设定不同的参数和条件,得到了更加符合实际需求的路径分析结果。

在VRP分析中,则更为复杂。需要综合考虑多个配送点、车辆数量、装载量等因素,以找到最优的车辆路径方案。这要求我们不断地调整参数和尝试不同的策略,最终得到了满意的解决方案。

在实习过程中,我也遇到了很多挑战和困难。有时候,我会因为模型构建不当或参数设置不合理而导致分析结果不准确。但是,通过不断地试错和向助教学姐请教,我逐渐克服了这些困难,并提高了自己的操作能力。

这次GIS-T实习让我深刻体会到了理论与实践相结合的重要性。感谢老师和学姐的悉心指导和帮助!在未来的学习和实践中,我将继续努力,争取取得更好的成绩。

相关文章:

交通地理信息系统实习教程(二)

这篇文章服务于GIS背景用户以及有志于GIS的朋友 操作源数据位置:【免费】交通地理信息系统实习二源数据资源-CSDN文库 软件安装包位置:【免费】TransCad-交通地理信息系统软件资源-CSDN文库 一、最短路径分析 1.1软件启动说明 这里需要给出一个必要的…...

Shell脚本——批量清理Kubernetes集群中Evicted状态的pod

测试环境有一台宿主机出现了异常,大量的异常日志导致宿主机的磁盘使用率超过了85%,触发了上面的pod驱离策略,该宿主机上的的pod处于Evicted状态。在清理了磁盘之后,得手动处理掉这些Evicted状态的pod。 #!/bin/bash# 获取当前状态…...

(深度估计学习)Win11复现DepthFM

目录 1. 系统配置2. 拉取代码,配置环境3.开始深度预测4.运行结果 论文链接:https://depthfm.github.io/ 讲解链接:https://www.php.cn/faq/734404.html 1. 系统配置 本人系统:Win11 CUDA12.2 python3.11.5 这里附上几个CUDA安装链…...

cocos creator 帧率60 不生效meta50 能刷新到90

环境: cocos creator 2.4.3 华为meta 50 背景: 小游戏 需要在update 里取帧率 发现跟时间对不上 游戏设置60帧 手机上显示 90帧 cc.game.setFrameRate(30) 显示 30帧 cc.game.setFrameRate(60) 显示 90帧 结论: 对于老版本的cocos creator …...

探讨 cs2019 c++ 的STL 库中的模板 conjunction 与 disjunction

(1)在 STL 库源码中这俩模板经常出现,用来给源码编译中的条件选择,模板的版本选择等提供依据。先给出其定义: 以及: 可以得出结论: conj 是为了查找逻辑布尔型模板参数中的第一个 false &#x…...

【核弹】我的第一款IDEA插件

SuperHotSwap 插件名称叫做:SuperHotSwap(超级热更新) 开发初心:旨在做出一款最便捷的IDEA热更新插件,减少用户操作步骤,提供零配置的可视化操作更新。 为什么要写这个插件: 每次改一下Mappe…...

【工作篇】软件工程师的知识基础(持续更新)

目录 1. linux 知识篇 1. linux 知识篇 1. Linux API 是什么 Linux API 是指 Linux 操作系统 提供的应用程序接口,用于与操作系统进行交互。它包含了一系列的函数、系统调用、库函数和数据结构,用于实现各种系统级的操作,如文件操作、进程…...

知识付费系统开源方案,教育机构如何利用朋友圈做转介绍?

招生成本高,效果差让许多教育机构头疼不已。对于教育机构来说通过转介绍招生是一个非常有效的途径,那么教育机构如何利用朋友圈做转介绍呢?今天小编就来和大家分享一下。 利用朋友圈做转介绍,主要是通过做活动,来完成增加粉丝、扩…...

c++20 std::reinterpret_cast、std::bit_cast、std::static_cast

std::reinterpret_cast 类型不相关的转换&#xff0c;不安全例如转为&&#xff0c;不支持&#xff0c;要求sizeof相同&#xff1a; uint32_t n32 12345678;//0x00bc614e uint32_t* ptr reinterpret_cast<uint32_t*>(n32);//0x00bc614e uint32_t& ref reinter…...

PHP单独项目启动演示

文章目录 phpstudy得到文件打开phpStudy.exe运行项目 Apache运行后又自动停止 phpstudy 得到文件 一般我们会得到这么一个项目文件&#xff0c;如果外层有“中文路径”&#xff0c;请剪切此内容作为项目根目录即可 打开phpStudy.exe 因为我又正常的编程环境和mysql&#x…...

vscode 通过ssh 远程执行ipynb +可以切换conda env

主要是保证几个点 远程服务器python 环境没问题 conda这些也都有的ssh的账户 是有conda权限的没有免密就输入密码 免密教程就是最基本的那种 公钥copy过去就行了vscode 那几个插件都要装好 开始操作 首先 vscode 点击左侧工具栏中的扩展&#xff0c;搜索“ssh”&#xff0c;…...

ASP.NET银行大厅自助信息系统的开发与实现

摘 要 本毕业设计在基于银行业务大厅现有业务的基础上&#xff0c;针对自助银行的概念和其独有特点&#xff0c;通过.NETSQL技术&#xff0c;开发一个简单的银行大厅自助信息系统&#xff0c;完成一些自助银行的业务需求如帐户信息查询、帐户挂失、自助交费、留言、新闻查询…...

学习Vue3中reactive

学习Vue3中reactive 一、前言1、响应式对象2、对象属性的访问3、嵌套响应式对象4、避免直接修改响应式对象5、ref vs reactive 一、前言 在 Vue 3 中&#xff0c;reactive 是一个用于创建响应式对象的函数。响应式对象是 Vue 3 中数据驱动视图的核心&#xff0c;它们的属性的变…...

【Transformer-BEV编码(10)】CVPR2021 PYVA 第一个明确提到 cross-attention decoder可用于视图转BEV

论文信息 论文名&#xff1a;Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation 中文&#xff1a;通过交叉视图变换&#xff08;crossview transform module&#xff09;估计单目道路场景布局 数据集&#xff1a;KITT…...

nestJs中跨库查询

app.module.ts中配置 模块的module中 注意实体类在写的时候和数据库中的表名一样 service中使用一下...

Java编程思想

面向对象编程(OOP)-CSDN博客 面向对象(OOP)的主要特点-CSDN博客 接口(Interface)和抽象类(Abstract Class)编程思想-CSDN博客 接口(Interface)和抽象类(Abstract Class)区别-CSDN博客 抽象类(Abstract Class)-CSDN博客 普通类和抽象类-CSDN博客 内部类编程思想-CSDN博客 …...

数组(Java)

数组 数组是相同类型元素的集合。 数组的定义和使用 数组的创建 数组名又叫引用变量&#xff0c;简称引用 下面代码段中new表示创建新的对象 T[ ] 数组名 new T[ N ];//数组名又叫引用变量&#xff0c;简称变量 //T&#xff1a;表示数组中存放元素的类型 //T[]&#xf…...

接口自动化测试框架搭建

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、原理及特点 参数放在XML文件中进行管理用httpClien…...

(四十二)第 6 章 树和二叉树(树的二叉链表(孩子-兄弟)存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…...

测试萌新Python学习(五)接口自动化测试requests

requests 接口自动化测试requests库基本实现请求-GET基本实现请求-POST基本实现请求-补充 sessionCookie和Session案例params 接口自动化测试 概念程序驱动代替人工驱动去实现接口测试 实现方式 测试工具(jmeter, postman, …)编码工具(python, java, …) 比较 工具 优点:…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...

算法250609 高精度

加法 #include<stdio.h> #include<iostream> #include<string.h> #include<math.h> #include<algorithm> using namespace std; char input1[205]; char input2[205]; int main(){while(scanf("%s%s",input1,input2)!EOF){int a[205]…...