【Arcpy】快速计算一个要素类中两个要素相交面积百分比

# 问题所在

一个要素类(也就是一个图层内)中有两类,比如地块建筑

我们想要统计一个数据,即地块内的建筑面积总数,这可能存在两种情况:

  • 情形1:建筑完全在地块内,面积可直接加到建筑面积总数上
  • 情形2:建筑和地块边缘相交,我们要判断建筑和建筑相交面积站建筑自身面积的百分比,若相交面积大于建筑面积50%,则加到建筑面积上,否则忽略

通过分析可以发现,判定两个要素是否相交并且计算他们相交面积占建筑要素的百分比是难点所在。

按正常思路,我们需要做双重循环,逐个遍历地块和建筑要素,判断他们是包含关系还是相交关系,在此基础上再计算相交面积百分比。问题是,如果建筑要素数量极大,比如超过10000个,这种双重循环将耗费大量时间。

另一个问题是,如何在一个要素类中求得两个要素之间的相交部分?

# 解决方案

通过多次试验探索,总结出一条可行的思路:

  1. 基于空间位置选择要素:使用arcpy.SelectLayerByLocation_management,以地块要素图形为界限,选择其周围的建筑要素;
  2. 判定要素空间关系:步骤1已经选出要素类中所有和地块存在重叠、包含、相交等关系的要素,可以使用geometrycontainsequals方法做条件判定,过滤出相交情形;
  3. 相交要素插入临时要素类,做相交分析:把相交的的两个要素分别插入(insertRow)事先建立的临时要素类,使用相交分析(Intersect_analysis),得到相交要素类,获得相交要素类和建筑要素类的面积并计算比例;相交分析完成后,分别清空临时要素类并删去相交要素类;
  4. 面积汇总及更新地块要素。

查看全文【Arcpy】快速计算一个要素类中两个要素相交面积百分比

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值