文章目录
- 前言
- 朴素和可靠的计数法:
- 实现过程
- 原始数据
- 环境准备
- 建立格网
- 让道路与格网在空间产生交集
- 分组统计
- 属性表连接
- 计算道路密度
- 道路密度可视化
- 总结
前言
在ArcGIS中,计算研究区域内各个格网的道路密度主要有以下两种方法:
- 密度插值法:先通过线密度分析、核密度分析计算区域内的道路密度,再通过建立格网和值提取至点等操作将密度值关联到格网上。
- 计数法: 通过计数每个格网内道路的数量,然后与格网面积相除得到道路密度。
朴素和可靠的计数法:
为什么说计数法是朴素和可靠的呢?
朴素在于它的计算方法是统计各个格网内的道路数量,那么对于没有道路经过的格网,其密度就是0。
这种朴素是相对于密度插值法而言的,核密度分析法中的密度是基于核函数计算的,其函数是个光滑的曲面,因此得到的函数值是经过插值法得到,因此对于没有道路经过的格网而言,它们也会有一定的密度值。
可靠在于这种计算方式很符合我们对密度计算的认识,表征为单位面积上的道路数量。其不需要经过复杂的算法,一切都看似十分可控。
那么扯了这么久,下面正式来通过Arcgis来实现一下。
实现过程
原始数据
行政区划:粤港澳大湾区
道路数据:来自于osm的2018年道路数据
环境准备
这里的准备包括以下几项:
- 数据框坐标系
- 其坐标系默认与第一个导入的数据的坐标系保持一致
- 数据坐标系
- 如果需要计算面积、长度的话尽量采用投影坐标系来计算,因为地理坐标系是球面坐标,计算起来误差有点大
横轴墨卡托投影带计算方法:
建立格网
建立渔网的工具位于[Arctoolbox] - [数据管理工具] - [要素类] - [创建渔网]
打开工具界面如下:
这里面参数都很好理解,唯独有几个需要注意的地方
- 像元高度: 单位跟数据框的单位有关,因此这里在设置之前务必先设置好数据框坐标系。
- 几何类型: 这里常常被忽略,我们一般的渔网都是面类型(POLYGON),极少用到线类型。
- 输出数据: 输出的渔网是输入要素的最小外包矩形,因此仍需要进行裁剪(Clip) 才能得到目标形状的渔网。
让道路与格网在空间产生交集
两个矢量数据相交的方法有很多,这里我主要使用空间连接这个工具([Arctoolbox]-[分析工具]-[叠加分析]-[空间连接])
主要思想是根据空间位置上的相交关系,将道路数据写入格网数据的属性表里,进而可以在格网数据的属性表里看到每个格子与哪些道路相交了!
空间连接: 根据空间关系将一个要素类的属性连接到另一个要素类的属性。目标要素和来自连接要素的被连接属性写入到输出要素类.
这里需要注意的参数是:
连接操作:JOIN_ONE_TO_MANY
这个选项表示如果有目标要素与多个连接要素相交,会在属性表里保留全部相交的连接要素的属性记录,不会选择聚合。
如果选择了JOIN_ONE_TO_ONE,会进行属性的聚合,例如A要素与B要素的相交,一条属性是7,一条属性是3,那么聚合后输出的属性是10
运行完之后得到的格网的属性表如下:
该属性表里,TARGET_FID表示格网的编号,而JOIN_FID表示连接要素道路的编号。
可以看出每个格网都与若干条道路相交,因此下一步就是统计每个格网相交的道路的数量。
分组统计
接下来,我们以TARGET_FID为分组依据,言下之意就是以每个格子为单位,统计连接要素的记录条数(Count),所以这里我们采用汇总统计数据这个工具来实现。([Arctoolbox]-[分析工具]-[统计分析]-[汇总统计数据])
在下面的输出结果可以看到分组统计的结果,通过这样的方法,我们就成功算出了每个格网的道路数量。Count_JOIN_FID表示的是记录条数。
那么下一步,就是根据TARGET_FID这个字段与格网数据的FID字段进行连接即可!
属性表连接
我们选择分组统计结果表里的TARGET_FID字段与格网的FID字段进行匹配连接,验证连接显示所有的格网都能成功匹配,连接完成!
计算道路密度
首先呢,我们需要用一个双精度或者浮点型的字段来存储这个密度值,因此我们需要先添加字段,为了显得优雅,我设置了显示小数点后两位的限制。
然后就是用到字段计算器来得出我们所需的结果。
道路密度可视化
这一步根据密度值进行符号分级显示,效果显示也一切正常,完美结束!
总结
总的来说,上述的过程并不复杂,对于许多刚接触Arcgis不久的小伙伴而言,难的是不了解Arctoolbox里面的各种工具,以及令人一头雾水的参数。但其实这是十分十分正常的,随着我们对空间对象认识的加深和多次的实践,你会慢慢发现其实每一步、每一个工具的使用、每一个参数的设置都是那么顺其自然,那么符合我们的逻辑。
有时候,沉下心来,谦虚地接受多一点知识,你会发现这片从未涉足过的世界是莫大的惊喜!