在ArcGIS 9.3版本之前,网络分析扩展模块没有得到很好的应用,原因可能是多方面的,一是ArcGIS Server还没有广泛的被用户接受;二应该就是网络分析生成的方向提示还是英文的,尽管很多聪明的开发商和用户想了很多办法来解决这个问题,但是终究不是很好的解决方案。但是从9.3开始,有了本地化的方向提示,语义基本满足中文的使用习惯,当然,从精益求精的角度,还是有很多地方有待改善。
本章的目的不是讨论如何实现本地化的方向提示配置文件,主要还是如何设置网络数据集,使得ArcGIS的网络分析能够提供方向提示。
这个对话框就是设置方向的了。大家可能看到的界面和这里的截图有些不一样,那是因为我已经升级到10.0,如果你使用的还是老版本的,也只能自己对应着找找了。
General Tab有几个参数Display Length Units、Length Attribute、Time Attribute比较简单,Signpost Feature Class和Signpost Streets Table稍微复杂,我把它挪到本节最后。方向提示里面出来的道路名称就是在“Street Name Fields”中定义的,因为参与构建网络数据集的道路数据源可能有多个(只有geodatabase 才支持多个数据源),所以“Source”是个combox。选择要设置的图层,列出了好多字段让我们匹配,最重要的就是“Name”,其他的如果没有匹配属性就空着吧,当然也可以通过增加“Number of Alternate Names” 定义其它可选的名称。
Shields Tab,Shield到底怎么翻译还真是难倒我了。它的作用是用于Highway类型道路的方向提示,Shield的描述可以在一个字段中,也可以由两个字段组合而成,取决于原始数据。Highway类型的道路是通过RoadClass属性(网络数据集属性,详见4.3.2RoadClass节)确定,RoadClass如何与方向联系起来,就要看Road Detail Tab了。
Road Detail Tab, RoadClass的属性就是在这里起作用了,终于找到党组织了!结局是,网络分析出来的方向提示有了多样性,而不是一种类型的描述到底,这才符合世界的发展趋势嘛。Administrative Area,可能大家已经想到这是做什么用的,没错,当计算出来的路径从一个行政区域进入另一个行政区域的时候,比如从上海进入浙江时,方向提示会提示“进入浙江省”。
OK,二万五千里长征还有最后几公里。Signpost,路标,如何体现到方向提示中。
没有signpost的方向提示可能是“右转 沿 G3 行驶”,考虑了signpost的结果可能变成了“右转 沿 G3 行驶 至 衢州”。Signpost并不会影响网络分析的结果,它的主要作用是增强方向提示。
网络分析中是通过Signpost Feature Class和Signpost Streets Table来表示signpost的,上图给出了Signpost Feature Class和Signpost Streets Table的表结构,Signpost Feature Class是一个polyline feature class,是signpost的feature以及相关属性,Signpost Streets Table记录的是signpost涉及原始路网的feature对象,和turn feature class字段有点类似。很不幸,ArcGIS没有现成的Signpost Feature Class和Signpost Streets Table,这就意味着我们得自己动手,丰衣足食。这些工作我已经完成了一部分,实现根据Tele Atlas的signpost表结构生成Signpost Feature Class和Signpost Streets Table的程序。
本节的最后,提醒大家一个注意事项,网络数据集方向的设置总体来说,如果不考虑signpost,还是比较简单的。但是,我有碰到用户,在ArcMap里面一切正常,但是使用Flex API或者Silverlight API调用网络分析的服务,路径结果能够出来,但是怎么也输不出方向提示,最后检查发现问题在:
他们路网的数据中有一部分Feature是Multi-part,需要Explode这些Multi-part的对象。