Python地學分析 — 建立向量資料緩衝區 06
阿新 • • 發佈:2018-12-08
歡迎關注博主的微信公眾號:“智慧遙感”。
該公眾號將為您奉上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