本文整理自 【街区开发强度】:GIS统计街区建筑密度、容积率
由于本文中使用的都是 shp ,故给字段命名时有长度要求,因此都用了英文的简写来辨识。
# 创建街区范围
仍旧是自行获取路网和建筑的数据。我获取的建筑数据里没有 Shape_area ,要自己用字段计算器的 Python 函数 !Shape.Area!
计算一下,下文有记录.
先对 路网 要素转面 通过道路围合生成街区面。系统工具箱 >> Data Management Tools.tbx >> 要素 >> 要素转面 。
给每个街区添加街区编号。对 街区.shp 右键打开属性表,添加新字段 街区id
,通过字段计算器将其赋值为编号 FID 的值(有可能是 OBJECTID 等)。
计算建筑的 shape area 。添加新字段 shape_area ,字段编辑器使用 Python 的 !Shape.Area! 函数计算面积。
# 连接街区与建筑数据
# 计算街区建筑基底面积及建筑总面积
建筑基底面积 = shape_area
层数 height / 3,因为数据的 height 都是 3 的倍数,图方便就直接除以3得到大概的数据了。
建筑总面积 = 基地面积 * 层数
对刚刚输出的 建筑交街区.shp 右键 >> 打开属性表,分别添加 基底area (建筑基底面积)和 Total_area (建筑总面积) 字段,分别计算 建筑基底面积 和 建筑总面积。
汇总街区建筑基底面积
基底area 右键汇总,导出dbf表(dBASE 表),命名为 街区建筑面积计算.dbf 。
这里已经导出过了,截图演示注意一下保存类型为 dBASE 表。
汇总街区建筑总面积
汇总 建筑总面积 条目
# 连接统计结果表与街区图层数据
就是一个操作:分别连接,添加新字段,赋值,移除连接
总结就是分别连接两个表,在 街区 这个表中新建字段,把刚才连接的表里 用到的数据赋值给这个新建的,然后断开连接(为了不干扰下一个表的连接和赋值),重复下一个。
右键打开刚才保存的这两个表,再打开 街区 的属性表
通过连接与关联,通过 街区id
进行连接。
降序排列 Sum_基底area
添加新字段 Sum_base (建筑基底面积汇总),得到 街区.Sum_base
移除连接。
再连接 街区建筑总面积计算 ,依旧对 Sum_Total_area 降序排列,添加字段,建筑总面积汇总,之后赋值。
移除连接
#计算容积率和建筑密度
添加字段 建筑密度 Density 和 容积率 Ratio (双精度)
计算公式:
建筑密度 = 总基底面积/总用地面积*100
容积率 = 总建筑面积/总用地面积
这里要用到总用地面积,即每个街区的面积,为了不和上面的建筑 Shape_area 混淆,就放到这里计算。
先计算出 街区的 Shape_area,依旧是用 Python 的 !Shape.Area!
。
然后用 字段计算器 分别计算 建筑密度 和 容积率 并赋值。
建筑密度
容积率
筛选并剔除空值:按住 Shift 去选表左侧的表头,选中之后关闭表,对 街区 右键 导出数据,命名为 街区开发强度.shp 。(视频中导出的是 文件和个人地理数据库要素类,我这里导出了 Shapefile)
最后在 属性 >> 符号系统 里调整