五千年(敝帚自珍)

主题:【原创】最近为公司开发了一个小软件,挺好玩的 -- 温雅颂

共:💬67 🌺136
全看分页树展 · 主题 跟帖
家园 【续二】

要想模拟户外工作人员的路线信息,人们最容易想到的就是孤狗地图。如果能把孤狗地图找路的信息抓下来,这不就是现成的路线信息吗?问题是?能不能抓?怎么抓?

首先,这个模拟软件不能依赖人机交互的操作,必须能自动生成路线信息,而孤狗地图找路的功能需要输入起点和终点的地址,这显然不行。需要能自动生成孤狗地图认可的起点和终点的地址才行。

其次,孤狗地图找到路以后,必须要能得到路径的所有坐标点。

第三,软件必须能知道孤狗地图是否找到了路径,以便决定是提取坐标点,还是让孤狗地图重新找路。

如果以上三条都能满足,那就可以用孤狗地图找路的功能模拟户外工作人员的路线信息了。

这里需要澄清一下:孤狗地图的API是公开的,任何人都可以用,而且免费。但孤狗有个条件,使用了孤狗地图API的网站,必须是公众可以访问到的网站,内部网不能免费使用孤狗地图API。如要使用,须与孤狗接洽,使用孤狗地图API的premium版本。

玩过孤狗地图的人大概都知道,微软也推出了一个类似于孤狗地图的玩艺,叫“虚拟地球”。虚拟地球也有它的API,也是任何人都可以使用。但如果用于商业目的,则需要与微软接洽,微软要收费。

孤狗地图API的网址是:http://code.google.com/apis/maps/index.html

微软虚拟地球API的网址是:http://dev.live.com/virtualearth/sdk/

研究了一下两边的API,发现两边的找路功能大同小异,比较棒的是:两边都接受经纬度作为起点和终点。这对我非常重要,解决了我的第一个问题。因为我的模拟软件无法自动生成真实地址,但可以很方便地随机生成经纬度。只要起始终止两个经纬度附近有道路,路径就可以生成。第三个问题也好办,两边都会在路径生成的时候(或出错的时候)raise一个event,使用户在event handler处加入自己的处理过程。而第二个问题,如何抓取路径坐标点上,微软的这一功能不对外公开。只有从微软得到许可的用户才能使用此功能。而孤狗地图的这一功能是公开的。正是这一点区别,使我选择了孤狗。

从孤狗地图上抓下来的路径,除了路径中途所有坐标点外,还有总的路径长度,和总的时间。这样,我就可以根据路径的总长度和总时间,按照我需要的时间间隔内插所有的坐标点。比如在一条笔直的大街上生成了一条路径,这个路径可能只有起点和终点两个坐标点,时间也许是五分钟。如果我以五秒为间隔模拟途中所有坐标点,我就可以内插出59个坐标点。当然,这些点都在同一条直线上。

内插这么多点的目的是要模拟网络变化的详细记录。所以尽管这些点在空间上处于同一直线,但它们的信号强度等网络状况可能发生了很多变化,因此项目决定的采样密度比较高。

确定了路径生成的方式方法,接下来就是研究如何模拟工作人员在户外的活动规律,使模拟出的路线尽可能像一个人在外面的工作路线,而不是一堆杂乱无章的路径堆砌。

喝茶ing......

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河