GIS构建等时圈

 

右键上方工具栏空白处,勾选【网络分析 Network Analyst】

一、基于服务区方法的等时圈计算

 

【Network Analyst】-【新建服务区】-点击【求解】即可。这里我随便选择半岛地区一个点为例。

图片

打开左侧菜单栏右上角的【图层属性】工具栏,阻抗选择【时间】,默认中断按照自己需求来,比如我设置以5分钟为一个间隔构建等时圈,一直到95分钟。

在【面生成】里面设置【面类型】为详细,取消勾选修剪面。

图片

设置好后点击求解,便得到等时圈。

接下来对其进行可视化。也可以将其导出,进行要素转栅格等其他操作。如想要分析某块区域,可以通过裁剪将所需要的区域提取出来。

通过新建服务区这种方法计算等时圈是很简单,但是会出现一个问题。在靠近边缘的地方,或者说没有路网的地方容易出现下面图中的问题,当然也可以用裁剪等方法给修改一下,但这种方法是不怎么准确的。(如果做内陆或者路网都比较完整的那种区域用这种方法是可以的,而且很快就能做好)

图片

所以接下来介绍第二种方法,基于OD成本矩阵的等时圈计算。

 

二、基于OD成本矩阵的等时圈计算 

 

OD成本矩阵,是多个起始点与多个目的点之间连通成本(时间、费用、路长)的表格。OD成本矩阵用于查找和测量网络中从多个起始点到多个目的地的最小成本路径。配置OD成本矩阵分析时,可以指定要查找的目的地数和要搜索的最大距离。(说的什么东西,不看了)

 

以下来自官方帮助文档:

在下图中,OD成本矩阵找到了从每个起始点到四个最近的目的地的最小成本路径。输出 shape 类型被设置为生成直线。

图片

尽管OD成本矩阵求解程序不输出沿网络的线,但是存储在“线”属性表中的值却反映了网络距离,而不是直线距离。看下图,OD求解后输出的直线并不是实际的最短路径,实际的信息是存储在这条直线里面的。

举一个例子:

现在存在3个城市北京、上海、武汉。请分析他们两两之间的通行时间。

简单,北京到上海,北京到武汉,上海到武汉都来一次最短路径分析就好了。

那么现在存在全国100个城市,请做同样的分析。使用排列组合的数学知识,至少要执行100*99/2=4950次分析。

人工是不可能人工的,而且,我们需要的是通行时间,所以最短路径分析的结果的输出线其实可以不要。

所以,可以用一张100×100的表,或者说是100阶的方阵表示每个城市间的通行时间,这个方阵,就叫OD成本矩阵。(要用到渔网工具)

 

所以这两种方法的区别在于:输出和计算速度不同。

OD成本矩阵可以更快地生成分析结果,但无法返回路径的实际形状或其驾车指示。

最近设施点求解程序则能够返回路径和指示,但在分析速度方面却比OD成本矩阵求解程序要慢。

如果需要路径的驾车指示或实际形状,请使用最近设施点求解程序;否则,请使用 OD 成本矩阵,以便减少计算时间。

 

三、OD成本矩阵的等时圈

 

我新建1个起始点,5个目的地点,然后点击求解便得到5条线,每条线都存储着各自的Total_时间。这里的Total_时间字段,就是所谓的OD成本矩阵了。

图片

然后,想象一下在半岛区域布满了渔网点作为目的地点,从一个始发点到各个渔网点形成很多这样的直线,每条线都是有时间的,按照这个时间序列算出来就形成了等时圈(文字解释实在尽力了,不知道怎么说)

                                     

1. 构建渔网

为了方便建渔网方便,新建一个“分析区域”的矩形的shp,盖住要分析的区域。

图片

找到“创建渔网”工具,创建与“分析区域”范围相同的渔网,像元大小根据自己实际选择,几何类型选择polyon,创建渔网点也勾选上。

图片

生成“等时圈渔网_label”,其他的面移除或者关掉,我们只要这个点。(便于区分我把名字改成等时圈渔网_点),这些渔网点就相当于目的地点。

图片

渔网点构建好后,大概找个区域中心作为起始点,然后把【渔网_点】拖进(或者导入)目的地点里。(区域内有些问号点没找到,没什么影响,海域上那些不用管)

打开目的地点的属性表,如下图,升序排列会发现有很多值为“0”,将这些未定位的点选中,然后选择反选,选中确定的点,并将这些确定的点导出,就是最终需要的目的地点。

将原来目的地点里的渔网点全部删除,把最后删除0值后导出来渔网点再拖进目的地点里。然后点击求解,就得到了始发点到每一个渔网点的线,打开线的属性表可以看到每条线都有个Total_时间。这个Total_时间就是OD成本矩阵了。

图片

这样做出来是一条条线,如何形成一个等时圈呢。

 

2. 属性表连接

我们要做的就是将每条线的“Total_时间”值赋到每一个渔网点上。在线的属性表里,Name字段里有个“位置xxxx”,这个位置后面的编号就是每个渔网点的编号,与渔网点里Object_ID字段是一样的,需要把位置后面的编号提取出来,然后基于这两个相同的字段进行连接。这里用个Python拆分语句,Name.Split("空格")[4],4就是代表后面的编号。我们就把OriginID字段当空白字段拿来用下。

图片

点击确定,位置编号就拆分出来了。

图片

下图便是渔网点的属性表,Object_ID与线的OriginID字段的值是一样的。这样把线的值连接到渔网点上就行了。

Total_时间字段便来到了渔网点上。

升序排列检查一下,发现还有很多空值,也主要集中在边缘地区,反选将其他值导出来即可。

得到最终等时圈结果。

图片

 

3. 等时圈制作

【插值分析】—【反距离权重法】,得到等时圈图。

图片

在符号系统里选定义的间隔,以5分钟为一个间隔,调整一下颜色。

图片

也可以按掩膜提取出某个地级市区域处理一下,我就不做了。

END

如果在实验过程中有什么地方遇到问题可以加我,竭力解答。需要练习数据也请后台我【一点规划】。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值