当前位置:   article > 正文

Python地学分析 — 建立矢量数据缓冲区 06_pycharm中画点的缓冲区

pycharm中画点的缓冲区

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

该公众号将为您奉上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半径范围内的城市数量。最后输出符合要求的城市数量,具体实现代码如下:

  1. # _*_ coding: utf-8 _*_
  2. __author__ = 'xbr'
  3. __date__ = '2018/11/6 12:17'
  4. from osgeo import ogr
  5. shp_ds = ogr.Open(r'D:\osgeopy-data\US')
  6. volcano_lyr = shp_ds.GetLayer('us_volcanos_albers')  # 火山矢量数据
  7. cities_lyr = shp_ds.GetLayer('cities_albers')  # 城市矢量数据
  8. memory_driver = ogr.GetDriverByName('memory')
  9. memory_ds = memory_driver.CreateDataSource('temp')
  10. buff_lyr = memory_ds.CreateLayer('buffer')  # 创建缓冲区
  11. buff_feat = ogr.Feature(buff_lyr.GetLayerDefn())
  12. for volcano_feat in volcano_lyr:
  13.     buff_geom = volcano_feat.geometry().Buffer(15000)  # 建立15KM的缓冲区
  14.     tmp = buff_feat.SetGeometry(buff_geom)
  15.     tmp = buff_lyr.CreateFeature(buff_feat)
  16. result_lyr = memory_ds.CreateLayer('result')
  17. # 将火山点与城市矢量进行重叠
  18. buff_lyr.Intersection (cities_lyr, result_lyr)
  19. # 统计15KM内城市的个数
  20. print('Cities: {}'.format(result_lyr.GetFeatureCount()))

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

Cities: 72

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/278230
推荐阅读
相关标签
  

闽ICP备14008679号