其实一直想静下心来好好的总结一下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工作笔记】之三相关推荐

  1. 【visum工作笔记】之十 —— import EMME2 地图

    十月假期比较懒所以都没记下什么心得,主要是工作太单一,不是翻译就是查资料,感觉自己一直在做打杂的活.最近在看福尔摩斯探案集,明白了观看和观察的区别,我们更多的是无意的一瞥却从来不去对一些东西深究.就像 ...

  2. 【visum工作笔记】之一

    其实通过Manual就完全可以掌握visum的操作方法,此文只是作为一位新手开始学习和开发的过程中,遇到的一系列问题和答案,仅供参考. 1.如何开启一次建模? 如果已经有了.ver的文件,那是最好了. ...

  3. 【visum工作笔记之十二——交通分布】

    直到十一月的最后一天才想到要为最近的工作总结下,前端时间总是加班,都没什么心思反省,看来吾日三省吾身很难达到啊. 因为项目中要预测某条通道上的量,希望有一个大致的分布,所以还是需要在原有visum中间 ...

  4. 【visum工作笔记】之二

    双休日其实有很多时间,但是笔记就在那里不会跑掉,所以不急. 终于轮到visum培训的那段时间了,在此之前我只是参照着manual自己摸索,培训的话能积累很多快速解决问题的方法. 1. visum中有哪 ...

  5. 【visum工作笔记】之五

    一本笔记竟然只有截取到那么一些有用的内容,可想而知我的笔记有多少废话啊.不过多说废话的人比较快乐! 在进入第三个月的时候,我已经开始慢慢接触到visum的接口了,可以说是飞速的掉进了一个很深的坑. 1 ...

  6. 【visum工作笔记】之八

    基于上节提到的关于不同版本之间visum的不同特性,其中很多都是新功能的增加,界面的优化以及原本bug的修复.而其中COM一个很明显的,而又常用的东西改变了,导致我花了很长时间才解决了这个问题. 1. ...

  7. 【Visum工作笔记之十三——GPA】

    如果说除了方便之外还需要说一个喜欢visum的理由那就是它强大的图形表现技能.当然这方便GIS做的也很好,但是比较难掌握,功能强大的背后是复杂的使用.而visum的GPA却带给我们很多的方便. 因为根 ...

  8. 【visum工作笔记】之十一 —— Import EMME/2 QA

    上一章讲到将emme2格式的信息导入到visum中,实际证明在导入的过程中能碰到很多意想不到的问题.虽然解决问题的过程很痛苦,但是回头看来其实都是一些我们思路上的局限. 1. 如何解决modes.in ...

  9. 【visum工作笔记】之九

    最近挺泄气的,不是因为周末都加班,而是因为即使这样了,最终还是落标了.作为以为没什么资历的助理工程师,我除了很多东西学之外还要兼具很多打杂的活,一次又一次为投标准备,一次又一次在建完模型后项目嘎然而止 ...

最新文章

  1. zbrush缝线笔刷制作_Thepoly | 高质量写实人脸制作及实时渲染分享
  2. 利用github page搭建博客
  3. html5-svg和Two.js的使用方法(附案例)
  4. Java模板引擎 FreeMarker介绍1
  5. 自定义http报头_http协议报头详解HTTP协议结构
  6. Ubuntu16.04安装ROS Kinetic详细过程
  7. 台式机黑苹果 Mojave 10.14.6 安装驱动
  8. 维修变频器和服务器赚钱吗,过来人经验分享:变频器维修杂谈(一)
  9. jquery 鼠标按住移动的解决方案
  10. 七里香计算机音乐谱子,七里香(改编自《新经典》)
  11. 二体问题之6:轨道根数及其转化
  12. 基于Python语言量化金融分析师AQF实训项目
  13. Pandas数据分析案例(盛华化工锅炉排放数据可视化分析)
  14. 微信小程序 (布局适配与物理逻辑像素)
  15. Linux查找文本中的重复项,2在Linux中查找和删除重复文件的有用工具
  16. 输入一个整数判断其是否是回文数
  17. F. Floor Plan
  18. CSP-SM常见问题及解答
  19. 匪夷所思!意念「返生」熟鸡蛋论文引争议,新华社:一个敢写一个敢发
  20. 公众号开发教程:微信视频预览一半就要收费是怎么做的

热门文章

  1. vlc(window)分离mp4文件中的音视频
  2. 整合产业链是关键——关于开放平台的一些思考
  3. 如何悄无声息渡过36岁中年危机?【转】
  4. pytorch mnist vgg16 错误记录
  5. 计算机考试打字题注意,中级会计职称无纸化考试常见问题及解答
  6. 基于数据包的P2P下载行为特征分析
  7. 【天体学】基于matlab GUI太阳天顶角计算【含Matlab源码 2229期】
  8. html5 video播放调研
  9. dwg转shp最快的方法,AutoCad Map 3d实至名归!
  10. R语言ggraph包绘制环状网络图