Python地学分析 — 建立矢量数据缓冲区 06

欢迎关注博主的微信公众号:“智能遥感”。

该公众号将为您奉上Python地学分析、爬虫、数据分析、Web开发、机器学习、深度学习等热门源代码。

Python的小伙伴们,你们好!上一节讲的是矢量数据重叠面积的解析应用,本节的应用主要建立缓冲区,来统计缓冲区内的矢量点的个数,希望对大家有所帮助。

本人的GitHub代码资料主页(持续更新中,多给Star,多Fork):

https://github.com/xbr2017

CSDN也在同步更新:

https://blog.csdn.net/XBR_2014

~~~~~~~~~~~~~~~~~~~~~~~~~~

编程环境:

操作系统:windows

Python版本:2.7

IDE版本:PyCharm 2018.2.4专业版

~~~~~~~~~~~~~~~~~~~~~~~~~~

分析地理特征时的另一个常见问题是确定它们彼此之间的距离。例如,住房刚需者在买房前很可能综合考虑多个候选小区到其周边学校、医院、超市、公交站等基础设施的实际距离。此时,本节的知识可能就会有助于购房者先进行空间分析,再作出买房的决定。

OGR包含两个测量工具:一个用于测量几何之间的距离,另一个用于创建缓冲多边形。缓冲区是一个多边形,它与原始几何体之间的距离延伸一定距离。 

点、线、多边形缓冲区示意图

这里以美国有多少城市距离火山点15KM以内为例,下图是美国地区城市(灰色点)与火山(红色三角)分布图。

先将火山数据集缓冲15KM,由于整个图层上没有缓冲功能,因此需要单独缓冲每个火山点并将其添加到临时图层。完成后,可以将缓冲层与城市图层相交,以获得落在该15KM半径范围内的城市数量。最后输出符合要求的城市数量,具体实现代码如下:

# _*_ coding: utf-8 _*_
__author__ = 'xbr'
__date__ = '2018/11/6 12:17'

from osgeo import ogr

shp_ds = ogr.Open(r'D:\osgeopy-data\US')
volcano_lyr = shp_ds.GetLayer('us_volcanos_albers')  # 火山矢量数据
cities_lyr = shp_ds.GetLayer('cities_albers')  # 城市矢量数据
memory_driver = ogr.GetDriverByName('memory')
memory_ds = memory_driver.CreateDataSource('temp')
buff_lyr = memory_ds.CreateLayer('buffer')  # 创建缓冲区
buff_feat = ogr.Feature(buff_lyr.GetLayerDefn())
for volcano_feat in volcano_lyr:
    buff_geom = volcano_feat.geometry().Buffer(15000)  # 建立15KM的缓冲区
    tmp = buff_feat.SetGeometry(buff_geom)
    tmp = buff_lyr.CreateFeature(buff_feat)

result_lyr = memory_ds.CreateLayer('result')
# 将火山点与城市矢量进行重叠
buff_lyr.Intersection (cities_lyr, result_lyr)
# 统计15KM内城市的个数
print('Cities: {}'.format(result_lyr.GetFeatureCount()))

可以分析出有72个城市距离火山点在15KM范围之内:

Cities: 72

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值