【visum工作笔记】之三
其实一直想静下心来好好的总结一下visum的COM。其实从run script 程序中就可以看出visum目前只适用两种语言的接口: 一个是VBA ,另一个就是Python。
读取和编写这两种语言的script语句来构建模型,是在我学visum还不到2个月的时候。如果说VBA还和VB有点相似的话,那么python是之前一直没有接触过的。凭着我那编程的三脚猫功夫,花了一周的时间读完简明Python教程,觉得这本书的确很浅显易懂,值得初学者看看。
首先说下对于matrix的处理:
假设对一个OD的所有参数进行乘以一个factor
VBA的script如下:
AllZones = visum.Net.Zones.GetAll
lastzone = UBound(AllZones)
For i = 0 To 13Set mat = visum.Net.ODMatrices.ItemByKey(matrixNos(i))Set newmat = visum.Net.ODMatrices.ItemByKey(newmatrixNos(i))matsum = mat.GetODSum() factor = factorNos(i)/matsummatarray = mat.GetValues()newmatarray = newmat.GetValues()For j = 0 To lastzoneFor k = 0 To lastzonea = matarray(j, k) newmatarray(j, k) = a* factorNext Next newmat.SetValues newmatarray
Next
Python的如下:
import numpy
import VisumPy.helpers as VPH#balance
def balance():#bypass the definationzoneno = VPH.GetMulti(Visum.Net.Zones, "NO")lastzone = len(zoneno)for i in xrange(len(matrixNos)):mat = VPH.GetODMatrix(Visum, matrixNos[i])newmat = VPH.GetODMatrix(Visum, newmatrixNos[i])matsum = numpy.sum(mat) factor = factorNos[i]/matsum#matarray = mat.GetValues()#newmatarray = newmat.GetValues()for j in xrange(lastzone):for k in xrange(lastzone):a = mat[j, k] newmat[j, k] = a* factorVPH.SetMatrix(Visum, newmatrixNos[i], newmat)
总结如下:
1. vbs 的语句要比python在格式上更加的随便,毕竟一个是靠语言来识别作用域,而另一个则是根据indent来识别的
2. Visum为py专门提供了module ,如Visumpy.helpers。可以让matrix的提取和修改更加的方便。
3. VPH.GetODMatrix(Visum, matrixNos[i]) 得到的就是numpy.array类型的结果,而不需像vbs中需要通过getValues()对类进行转化
4. 就效率而言两者是相似的。
5. 运用numpy可以将matrix定义成数组类,非常强大。具体体现在可以进行矩阵的运算:
判断矩阵内值的大小
mat[mat>0.88] = 0.88mat[mat<0.05] = 0.05
或者对矩阵的每个值运算
pvmat = mat*newmatputmat = mat*(1- newmat)
不必在运用循环遍历了。
06.06
【visum工作笔记】之三相关推荐
- 【visum工作笔记】之十 —— import EMME2 地图
十月假期比较懒所以都没记下什么心得,主要是工作太单一,不是翻译就是查资料,感觉自己一直在做打杂的活.最近在看福尔摩斯探案集,明白了观看和观察的区别,我们更多的是无意的一瞥却从来不去对一些东西深究.就像 ...
- 【visum工作笔记】之一
其实通过Manual就完全可以掌握visum的操作方法,此文只是作为一位新手开始学习和开发的过程中,遇到的一系列问题和答案,仅供参考. 1.如何开启一次建模? 如果已经有了.ver的文件,那是最好了. ...
- 【visum工作笔记之十二——交通分布】
直到十一月的最后一天才想到要为最近的工作总结下,前端时间总是加班,都没什么心思反省,看来吾日三省吾身很难达到啊. 因为项目中要预测某条通道上的量,希望有一个大致的分布,所以还是需要在原有visum中间 ...
- 【visum工作笔记】之二
双休日其实有很多时间,但是笔记就在那里不会跑掉,所以不急. 终于轮到visum培训的那段时间了,在此之前我只是参照着manual自己摸索,培训的话能积累很多快速解决问题的方法. 1. visum中有哪 ...
- 【visum工作笔记】之五
一本笔记竟然只有截取到那么一些有用的内容,可想而知我的笔记有多少废话啊.不过多说废话的人比较快乐! 在进入第三个月的时候,我已经开始慢慢接触到visum的接口了,可以说是飞速的掉进了一个很深的坑. 1 ...
- 【visum工作笔记】之八
基于上节提到的关于不同版本之间visum的不同特性,其中很多都是新功能的增加,界面的优化以及原本bug的修复.而其中COM一个很明显的,而又常用的东西改变了,导致我花了很长时间才解决了这个问题. 1. ...
- 【Visum工作笔记之十三——GPA】
如果说除了方便之外还需要说一个喜欢visum的理由那就是它强大的图形表现技能.当然这方便GIS做的也很好,但是比较难掌握,功能强大的背后是复杂的使用.而visum的GPA却带给我们很多的方便. 因为根 ...
- 【visum工作笔记】之十一 —— Import EMME/2 QA
上一章讲到将emme2格式的信息导入到visum中,实际证明在导入的过程中能碰到很多意想不到的问题.虽然解决问题的过程很痛苦,但是回头看来其实都是一些我们思路上的局限. 1. 如何解决modes.in ...
- 【visum工作笔记】之九
最近挺泄气的,不是因为周末都加班,而是因为即使这样了,最终还是落标了.作为以为没什么资历的助理工程师,我除了很多东西学之外还要兼具很多打杂的活,一次又一次为投标准备,一次又一次在建完模型后项目嘎然而止 ...
最新文章
- zbrush缝线笔刷制作_Thepoly | 高质量写实人脸制作及实时渲染分享
- 利用github page搭建博客
- html5-svg和Two.js的使用方法(附案例)
- Java模板引擎 FreeMarker介绍1
- 自定义http报头_http协议报头详解HTTP协议结构
- Ubuntu16.04安装ROS Kinetic详细过程
- 台式机黑苹果 Mojave 10.14.6 安装驱动
- 维修变频器和服务器赚钱吗,过来人经验分享:变频器维修杂谈(一)
- jquery 鼠标按住移动的解决方案
- 七里香计算机音乐谱子,七里香(改编自《新经典》)
- 二体问题之6:轨道根数及其转化
- 基于Python语言量化金融分析师AQF实训项目
- Pandas数据分析案例(盛华化工锅炉排放数据可视化分析)
- 微信小程序 (布局适配与物理逻辑像素)
- Linux查找文本中的重复项,2在Linux中查找和删除重复文件的有用工具
- 输入一个整数判断其是否是回文数
- F. Floor Plan
- CSP-SM常见问题及解答
- 匪夷所思!意念「返生」熟鸡蛋论文引争议,新华社:一个敢写一个敢发
- 公众号开发教程:微信视频预览一半就要收费是怎么做的