5
NODEDISTANCE命令。默认情况下,NODEDISTANCE命令是通过公路网络来计算最短距离。同时它也提供了计算欧式距离或曼哈顿距离的选项。恰当地定义选项IMPEDANCE作为时间或成本,就可以计算最短交通时间或最小交通成本。下面介绍如何用ArcGIS计算网络距离矩阵。
第一步,建立网络。交通网络由线段费时、转弯费时、单行线、天桥、地下通道等网络要素构成(Chang, 2004: 351)。建立这样一个路网的数据采集和处理工作量都很大,往往是非常昂贵甚至是不可行的。例如,从美国人口普查局的TIGER线文件里提取的公路图层并不包含公路结点、转弯参数或限速等信息。在此情况下,我们只好假设用一些自动工具(如ArcGIS里构建拓扑关系的工具)生成的公路结点是相对可靠的,近似反映了真实路网的情况。而对于线段费时,我们可以基于道路等级设定限速标准,并考虑到交通堵塞的因素。有的研究(Luo and Wang, 2003根据美国统计局)在TIGER线文件中公路等的CFCC编码来设定公路限速。另一项研究(Wang, 2003基于土地利用强度(商业和居住密度)及其他一些因素建立回归模型来考虑交通堵塞程度从而预测行车速度。
第二步,用NETCOVER命令建立网络计算的路径系统。
第三步,定义始结点、末结点及阻力参数。可以用CENTERS、STOPS、NODES等来定义始末结点,用IMPEDANCE指定用网络属性表中的哪一项来定义线段长度或费时。
最后,用NODEDISTANCE命令来计算始末结点之间的网络距离。
需要注意的是,NODEDISTANCE命令只计算网络上结点之间的距离。但是,起始点或终点有可能并不在网络上。虽然起始点(或终点)到网络结点之间的距离有可能很小,但仍需计算在内。这是计算网络距离时需要考虑的一个重要步骤,详见下面的案例2。 2.3案例2:测算中国东北地区各县到四大中心城市之间的距离
本例计算中国东北地区各县到中心城市之间的距离。所得结果将在案例4B中用于定义城市腹地(参见第四章,第4.4节)。
我们的研究区选为中国的东北平原是因为该地区是一个相对完整的区域。包括三个省:黑
24
6
龙江、吉林和辽宁。按人口和经济规模划分,有4大中心城市:三个省会城市(哈尔滨、长春、沈阳)和大连。铁路一直是中国客货运输的主要方式,在本研究区尤其如此,因此这里用铁路来测量网络距离。参见图2.2。
本书光盘提供了本例所需的下述数据:
1. 包含中国东北地区203个县(或县级行政单元)的多边形文件cntyne; 2. 本区4大中心城市的点文件city4; 3. 研究区铁路网络的线文件railne。
为了保证网络的完整性,铁路网络涵盖的范围比三个省区略大。这里关于各县和中心城市的空间数据是从中国县级单元GIS数据库中提取,可以从 http://sedac.ciesin.columbia.edu/china下载。铁路数据由中国科学院地理科学与资源研究所的金凤君先生提供。 2.3.1测算欧式距离和曼哈顿距离
如前所述,欧式距离和曼哈顿距离可以通过网络分析中心NODEDISTANCE命令来实现。本节介绍如何不用到网络分析来计算这两种距离。曼哈顿距离不适于象中国东北这么大区域范围内的测量(参见第2.1节),下面第(3)-(5)步中演示的曼哈顿距离的计算方法, 为可选操作。
1.生成县域重心
在ArcToolbox中依次选择Data Management Tools > Features > Feature To Point,选择cntyne作为输入要素,并将输出要素(县域重心)命名为CntyNEpt,选中选项。 “Inside”(既重心在县城范围)
2.计算欧式距离
在ArcToolbox中,依次选择Analysis Tools > Proximity > Point Distance,选择CntyNEpt作为输入要素(Input Features),选择city4 (point)作为近邻要素(Near Features),并将结果命名为Dist.dbf。这里不需要限定收索半径,因为我们需要计算所有的距离。所得表中一共有203(县)× 4(市)= 812条距离记录。在距离表中加入一列airdist,根据公式
25
7
airdist=distance/1000计算,得到欧式距离的公里数(原图距离单位是米)。
3.可选操作:添加县域重心及城市重心的XY坐标
在ArcToolbox中,依次选择Data Management Tools > Features > Add XY Coordinates,选择CntyNEpt作为输入要素。在CntyNEpt的属性表中,所得结果保存在point-x和point-y两列中。此外,在ArcToolbox中,依次选择Coverage Tools > Data Management > Tables > Add XY Coordinates,选择city4作为输入文件。在属性表city4中,所得结果保存在x-coord和y-coord两列中。
4. 可选操作:将坐标连接到县和市的距离表
在ArcMap中,右键点击表Dist.dbf,依次选择Joins and Relates > Join,用CntyNEpt (源数据表)中的FID和Dist.dbf(目标表)中的INPUT_FID作为连接关键词将二表连接在一起。类似地,用City4属性表中的FID和新Dist.dbf表中的NEAR_FID作为连接关键词将二表连接在一起。
5. 可选操作:计算曼哈顿距离
打开新表Dist.dbf,添加一列Manhdist,按照公式Manhdist = abs(x-coord - point-x)/1000+abs(y-coord - point-y)/1000计算数值。所得曼哈顿距离的单位为公里,通常比欧式距离大。 2.3.2第二部分:测算交通路网距离
两地之间(这里是起始县城与目的地中心城市)的交通距离由三部分组成。图2.3给出了一个示例:(1)第一段(S1)是县城编号76到它最近的铁路结点171的直线距离;(2)第二段(S2)是铁路上两结点171和162之间铁路网络距离(途经165和163两个结点);(3)第三段(S3)是中心城市编号4到它最近的铁路结点162的直线距离。在这里,S1和S3以直线距离近似地代替,S2为两结点之间的路网距离。换言之,从县城#76到城市#4,假设其通行路径为:先从县城#76到最近的结点171,然后通过铁路到结点162(途经结点165和163),最后到达中心城市#4。本节的主要工作即是寻找这些距离县城或城市最近的铁路结
26
27
点,然后计算上述三段的距离,最后将其加总。
1.准备交通网络图层
8
在ArcToolbox中,依次点击Coverage Tools > Data Management > Topology > Build,在railne图层上创建线拓扑关系。重复此过程,创建点拓扑关系。理想状态下,结点应定义为实际的铁路站点。但我们没有这样的数据,这里假设ArecGIS拓扑工具产生的结点就是铁路站点。
2. 计算县城、城市与最近铁路结点之间的直线距离
在ArcToolbox中,依次选择Analysis Tools > Proximity > Near,并选择CntyNEpt作为输入要素,railne(结点)作为最近邻要素(Near Features)。在更新后的CntyNEpt 属性表中,NEAR_FID列为距离县城的最近结点,而列NEAR_DIST为它们之间的直线距离。用图层city4重复上述操作得到离中心城市最近的结点:以city4(点)为输入要素,railne(结点)为最近邻要素。在更新后的City4属性表中,列NEAR_FID为距离城市最近的铁路网络结点,另外的一列NEAR_DIST为它们之间的直线距离。这一步工作分别得到了县城和城市与其最近铁路结点之间的直线距离(图2.3中的S1和S3)。
3. 寻找起,始结点对
在计算路网距离时,起(始)结点不能重复。在CntyNEpt属性表中,有多个县城对应NEAR_FID中的同一个结点。例如,编码FID = 5 及FID = 8的两个县城,其最近邻结点都是NEAR_FID = 34的结点。也就是说,一些近邻的县城共享铁路网络上的同一个最近邻结点(始结点)。在city4属性表中,每个中心城市对应不同的铁路结点(末结点),因此无需再处理, 四个中心城市对应于四个不同的末结点,下面介绍如何定义不重复的始结点。
打开属性表CntyNEpt,右键单击列NEAR_FID,选择Summarize,将结果保存为表Sum_FID.dbf,在该表中,列Cnt_NEAR_F(频率统计)代表每个NEAR_FID结点对应的县城数。当频率数大于1时,表明是多个县城共享同一个结点。表Sum_FID.dbf有149条记录,表明有149个不同的始结点。
相关推荐: