您现在阅读的是
我看书斋www.5ksz.com提供的《燕归来》第一卷少年游 第一百二十八章试跑(第1/3页)
原既白加入那个城市交通项目的第二天,就把自己过去最熟悉的一套做法带了进去。
项目群里一共七个人,还没有谁真正见过谁。除了程砚,其他几个人来自不同城市,也都是清大新生,其中两个学计算方向,一个偏数学,一个准备读自动化,还有一个女生叫谢以宁,高中做过城市规划相关的社会调查。最初的目标并不大:拿公开道路数据、公交站点和一部分能够合法获得的匿名出行统计,先搭出一个极小的城区仿真,看看高峰时段几条主要道路拥堵怎样形成,再尝试改变信号灯或者公交班次,观察系统响应。程砚在群里反复强调“先做小”,甚至把第一阶段限制在十几个路口。可原既白看到原始数据以后,第一个感觉仍然是:如果底层结构不统一,后面所有工作都会不断返工。
他花了一个上午读数据说明。
文件来源不止一个,路网一套,公交线路一套,站点信息又是一套。看起来都是同一座城市,坐标格式却有两种;同一条路在不同文件里名称略有区别,有的带方向,有的不带;部分公交站沿用了旧名称,而道路数据已经更新;更麻烦的是,一些路口只有几何位置,没有明确的拓扑关系,需要从线段相交和道路方向自己恢复。原既白最开始还觉得这些都属于“清洗问题”,真正做了两个小时,才发现“清洗”这个词过于轻描淡写。它听起来像把脏东西去掉,剩下的就是真实;可这里很多差异不是脏,而是数据最初就为了不同目的采集。
公交系统关心一辆车在哪停。
道路系统关心哪条线连哪条线。
城市规划数据关心土地和片区。
每一个系统都在描述同一座城,却不是为了描述同一个“城市”。
原既白还是开始设计统一结构。
他画了一套节点、道路、站点、线路和时间属性之间的关系,试图让几种数据都映射进去。第一版很快,第二版开始补异常,第三版又加入版本信息。他越来越觉得这件事有一种熟悉的美感:原本混乱的东西经过重新定义以后逐渐变得干净,每个对象都有位置,每种关系都有边界。到晚上,他甚至写出一个转换脚本,已经能把大部分道路和站点映射到新格式里。
他把结果发进群。
程砚半小时以后回了一句:
**挺漂亮。**
原既白看见这三个字,第一反应并不是高兴。
因为后面还有一句:
**但你把我们明天要跑的那段路删掉了。**
原既白愣了一下。
程砚发来一个路口编号。
那是数据里一个非常奇怪的地方:道路文件显示两条线相交,公交数据也有站点靠近,可拓扑信息里两条路并不连通。原既白在转换时把其中一条判断为旧数据,暂时标成异常,没有纳入主路网。
程砚问他为什么删。
原既白解释完,对方发来一张地图截图。路口实际存在,而且是目标区域里一条很重要的支路。
“那原始拓扑错了。”原既白说。
程砚回:
**也不一定。那下面可能有高差。**
几分钟以后,谢以宁又发了一张街景截图。
原来两条路虽然平面投影相交,实际一条从另一条上方跨过去,中间没有匝道,所以原始拓扑“不连通”反而可能是对的;真正有问题的是公交站点文件,其中一个站名仍然沿用几年前道路改造前的位置。原既白重新看自己设计的统一结构,第一次发现它并不是“过于粗糙”,恰恰相反,它过于完整,以至于在数据证据不足的时候替现实做了一次决定。
如果只看平面坐标,两条路应该相交。
如果只看公交站点,它们似乎也应该连接。
如果只看拓扑,又不连。
三种来源彼此冲突。
他为了得到一个可用的系统,选择了其中一种解释。
而且选得很自然。
程砚没有批评他,只说先别修大框架,明天大家一起把目标区域十几个路口人工核一下。“我们现在不是做全城数字底座。”他说,“先确认这十几个路口到底怎么长。”
原既白盯着那句话看了一会儿。
**怎么长。**
不是“怎么编码”。
不是“怎么统一”。
是现实里到底长什么样。
他把自己写了半天的转换脚本留着,没有继续改。
第二天上午,七个人第一次开视频会议。
程砚和群里聊天时差不多,语速快,头发有点乱,背后不是书架,而是一面贴满便签纸的白墙。谢以宁坐在一个光线很好的房间里,桌上摊着纸质城市地图。她来自那座项目城市本地,对十几个目标路口里至少一半有生活经验,真正开始核查以后,很多其他人只会从数据看出来的异常,她一眼就知道现实原因。某条路在地图上是双向,实际上早晚高峰有临时交通管制;一个公交站数据上还存在,本地人却知道因为修地铁已经迁移几百米;另一条看起来很宽的主干道,真正最堵的不是车道数不够,而是旁边一所学校每天放学时大量家长临时停车。
这些信息原既白几乎都没有。
公开数据里当然可能找到一部分。
可不是自动躺在那里等他读取。
有些来自城市公告,有些来自新闻,有些甚至只是本地人在那里生活几年以后自然知道的常识。
他第一次对“真实数据”这个词产生了明显的不信任。
以前高中做程序,数据通常已经有人整理过;竞赛题里的条件更不必说,题目告诉你什么,默认就是世界的全部。现在他们想模拟一块真实城区,却发现最难的不是公式,而是根本不知道哪些因素已经进入数据,哪些还在数据外面。
会议开到第二个小时,程砚把原既白昨天那套统一结构投到屏幕上。
“这个不是不用。”他说,“以后肯定会用。但我建议先缩。”
原既白问:“缩到什么程度?”
“只定义我们现在确认得了的。”
这句话让他有一点不舒服。
不是因为反对,而是因为它违背了他很深的一种习惯。一个系统如果只定义眼前能确认的东西,很容易不断长补丁,最后失去整体。可反过来,如果先定义一个足够漂亮的整体,再把现实塞进去,也可能在第一步就把还没弄清的东西错误归类。
他没有立即同意,也没有坚持。
会议结束以后,把那套结构复制了一份。
原文件保留。
新文件删掉将近一半字段。
不是因为那些字段没价值,而是暂时没有足够证据让它们成为事实。
做完以后,他给江遥发了一张前后对比图。
江遥正好在读第二章科学史。
她看了半天,问:
**你删这么多?**
原既白回:
**先不替数据决定。**
江遥过了一会儿发来:
**有进步。**
他看到这三个字有一点不服。
**你最近也开始给我当老师了?**
江遥没有回。
十分钟以后发来一张自己书页的照片,上面密密麻麻都是铅笔问号,旁边写着一句:
*
-->>(本章未完,请点击下一页继续阅读)【请收藏我看书斋 www.5ksz.com】