第一范文网 - 专业文章范例文档资料分享平台

ArcGis Chapter02

来源:用户分享 时间:2025/5/18 4:46:59 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

4. 定义始末结点的INFO文件

9

这一步主要为下一步准备两个INFO文件:一个包括所有的始结点,另一个包括所有的末结点。这两个INFO文件都必须用ArcInfo workstation来生成。数据表Sum_FID.dbf用于生成始结点的INFO文件,属性表city4.pat本身已经是INFO文件了,它将用于生成末结点的INFO文件。在ArcInfo workstation中,多边形或点图层的属性表文件扩展名为.PAT,意为Polygon(Point)Attrabute Table多边形(或点)属性表;线(Arc)属性表文件的扩展名为.AAT;结点(Node)的属性表文件扩展名为.NAT。ArcInfo workstation里的操作方法如下:

在ArcInfo workstation中,切换到目标工程文件夹(路径)(例如,通过输入命令w c:\\Quant_GIS\\proj2来实现),然后输入下述命令(这里,“/*” 之后的内容为命令行的注释说明):

Dbaseinfo sum_fid.dbf tmp

/* sum-fid。dbf转换成名为“tmp”的INFO文件

28

Pullitems tmp fm_node near_fid /* 提取tmp中的“near_fid”,并生成INFO文件“fm_node”,即始结点文件

Pullitems city4.pat to_node near_fid /*提取city4.pat中的“near_fid”并生成INFO文件“to_node”,即末结点文件。

INFO文件fm_node和to_node中的列名称near_fid需要改为railne-id以便与铁路图层中的名字相对应。结点属性表railne.nat中的railne-id为每个结点的唯一标志码。这可以用ArcCatalog来实现:右键单击fm_node(或to_node),从内容菜单中选择属性(Properties),选择Items 标签,打开对话框窗口,点击Edit可以修改某项的名字。熟练的ArcInfo workstation用户,可以在workstation环境下修改变量名,也可以通过编写一段AML程序来自动实现。

5. 计算铁路网络结点之间的距离。

可以用下述ArcInfo workstation命令来实现:

10

ap

/* 调用arcplot模块 netcover railne railroute /* 设置路径系统 centers fm_node /* 定义始结点 stops to_node

/* 定义末结点

nodedistance centers stops rdist 3000000 network ids q

/* 退出

在这里的“nodedistance”命令以3,000公里(或一个非常大的距离值)作为阈值,计算centers中每个结点跟stops中每个结点两两之间的距离,所得结果生成一个名为rdist的INFO 文件。最后两个参数是可选参数:“network”为默认选项(其他两个选项为“Euclidean”、“Manhattan”,分别用于计算欧式距离和曼哈顿距离),参数“ids”用于指定结点的ids值作为始末结点的唯一标志(默认值为“noids”)。在INFO文件rdist中,railne-ida项用于确定始结点,railne-idb项用于确定末结点,而network是它们之间的距离。上述过程用于计算始末结点之间的距离(即图2.3中的S2)。在fm_node表中有149个始结点,表to_node中有4个末结点,从而rdist中有149×4 = 596条距离值,这比欧式距离文件Dist.dbf中的812条距离值要少。

下一步是将这三段距离值连接到一起:S2保存在表rdist中,而我们在上述第2步中得到的S1和S3分别保存在更新后的表CntyNEpt和city4中。然而,我们不能简单地将CntyNEpt和rdist连接起来得到S1和S2。由于每个末结点对应唯一的中心城市,把表City4和rdist连接起来(基于共同的末结点),从而得到一个包含距离S3和S2的表是不存在问题的。在上面第3步中我们已经提到,每个始结点可能对应着CntyNEpt中的若干个县城;而一个始结点又对应着rdist 中的4个末结点。因此,表CntyNEpt和rdist的关系将会是多对多的关系,这给我们创建包含S1、S2、S3这三段距离值的数据表带来一个挑战。在下面第6步中,我们将用欧式距离文件Dist.dbf作为一个模板来实现这个任务。图2.4(a)-(c)为这一过程的示例,可以方便读者理解。

29

11

6. 添加直线距离值

在ArcMap中,右键点击欧式距离表Dist.dbf,依次选择Joins and Relates > Remove Join(s)。这是为了去掉前面操作时连接的一些不必要的数据列。与第一部分中的第4步类似,两次使用“join”:将属性表CntyNEpt连接到表Dist.dbf(对应的连接标志分别为FID和INPUT_FID),将属性表city4也连接到Dist.dbf(对应的连接标志分别为:FID和NEAR_FID)。注意到属性表得到了更新,即上述第2步计算得到的直线距离值S1和S3添加到了表Dist.dbf中:CntyNEpt.NEAR_DIST为县城与最近邻结点之间的距离, point:NEAR_DIST为中心城市与其最近邻结点之间的距离。图2.4(a)为本步的图示。

7. 添加路网距离值

为了将路网距离值rdist连接到表Dist.dbf,我们需要创建一个公共的连接标志linkid用于确定始末结点的唯一铁路路径。列linkid 由始末结点的ID标志组成。

打开INFO表rdist,添加一列linkid(定义类型为“long integer”)并根据公式linkid = 1000*railne-ida + railne-idb计算。例如,如果railne-ida = 198,railne-idb = 414,则linkid = 198414。参见图2.4(b)中的左表。类似地,在表Dist.dbf中添加列linkid并根据公式Dist.linkid = 1000*CntyNEpt.NEAR_FID+point:NEAR_FID计算。参见图2.4(b)中的右表。最后,基于公共标志linkid将rdist连接到表Dist.dbf。

8. 汇总三段距离值

在Dist.dbf中新增一列RoadDist(定义其类型为“float”),根据公式Dist.RoadDist = (CntyNEpt.NEAR_DIST + point:NEAR_DIST + rdist:network) /1000计算数值。这里,表Dist.dbf中的RoadDist为各县城与各大城市之间的交通网络距离(公里)。图2.4(c)为最后的结果。 2.3.3第三部分:测算交通时间

第二部分演示了测算路网距离的方法。测算交通时间的方法与此类似,下面仅仅指出二者的不同之处。

31

12

在第1步中,在路网属性表railne.aat中添加速度属性speed,并为每段道路赋予一

定的速度。然后,在该表中添加一列时间属性time,并根据公式time = length/speed计算。注意距离和速度的单位,必要时进行单位换算。例如,如果速度为km/hr,则公式应为time = (length/1000)/speed,所得时间的单位是小时。

在第5步中,在执行NODEDISTANCE命令之前,添加一条命令用于定义交通阻力项:impedance time。在INFO文件rdist中,属性项network代表时间而不是距离。

在第8步中,可以为两端的直线距离赋予一个假设的速度值。假设速度为50 km/hr,则全程的时间(小时)计算公式为:Dist.roadtime = (CntyNEpt.NEAR_DIST + point:NEAR_DIST) /1000/50 + rdist:network。

最后,我们可以用ArcCatalog删掉一些不需要的数据,只要在表Dist.dbf中保留所有的距离值(每条记录包含三段距离)即可。这里的距离值将用于案例4B。 2.4小结

本章主要介绍了四种基本的分析技巧: (1)测算欧式距离; (2)测算曼哈顿距离; (3)测算网络距离; (4)测算交通时间。

欧式距离和曼哈顿距离很容易通过GIS来得到,而计算网络距离和交通时间需要道路网络数据,计算步骤要复杂一些。本书后面一些章节中还会涉及欧式距离、网络距离或交通时间的计算,本章学到的这些基本技巧还有更多的训练机会。

搜索更多关于: ArcGis Chapter02 的文档
ArcGis Chapter02.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c634z83ppnv1xep036okd_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top