Python地學分析 — 建立向量資料點、線、面 04
阿新 • • 發佈:2018-12-08
歡迎關注博主的微信公眾號:“智慧遙感”。
該公眾號將為您奉上Python地學分析、爬蟲、資料分析、Web開發、機器學習、深度學習等熱門原始碼。
Python的小夥伴們,咱們又見面啦!
本節給大家帶來得知識點是通過OGR建立點、線、面。
本人的GitHub程式碼資料主頁(持續更新中,多給Star,多Fork):
https://github.com/xbr2017
~~~~~~~~~~~~~~~~~~~~~~~~~~
程式設計環境:
作業系統:windows
Python版本:2.7
IDE版本:PyCharm 2018.2.4專業版
~~~~~~~~~~~~~~~~~~~~~~~~~~
建立點的程式碼:
# _*_ coding: utf-8 _*_ __author__ = 'xbr' __date__ = '2018/11/4 23:17' from osgeo import ogr import matplotlib.pyplot as plt from ospybook.vectorplotter import VectorPlotter point = ogr.Geometry(ogr.wkbPoint) # 構建幾何型別:點 point.AddPoint(59.5, 11.5) # 建立點01 x, y = point.GetX(), point.GetY() # Python的任性賦值方式 # 呼叫VectorPlotter類 vp = VectorPlotter(True) vp.plot(point, 'bo') # 畫出藍色圓點 point.AddPoint(59.5, 13) # 在點01基礎上新增點02 vp.plot(point, 'rs') # 畫出紅色方點 plt.show() # 少了這句話則影象不顯示
生成的結果圖:
建立線的程式碼:
# _*_ coding: utf-8 _*_ __author__ = 'xbr' __date__ = '2018/11/4 23:25' from osgeo import ogr import matplotlib.pyplot as plt from ospybook.vectorplotter import VectorPlotter line = ogr.Geometry(ogr.wkbLineString) # 構建幾何型別:線 line.AddPoint(54, 37) # 新增點01 line.AddPoint(62, 35.5) # 新增點02 line.AddPoint(70.5, 38) # 新增點03 line.AddPoint(74.5, 41.5) # 新增點04 # 呼叫VectorPlotter類 vp = VectorPlotter(True) vp.plot(line, 'r-') plt.show() # 少了這句話則影象不顯示
生成的結果圖:
建立多邊形的程式碼:
# _*_ coding: utf-8 _*_
__author__ = 'xbr'
__date__ = '2018/11/4 23:33'
from osgeo import ogr
import matplotlib.pyplot as plt
from ospybook.vectorplotter import VectorPlotter
ring = ogr.Geometry(ogr.wkbLinearRing) # 構建幾何型別:線
ring.AddPoint(58, 38.5) # 新增點01
ring.AddPoint(53, 6) # 新增點02
ring.AddPoint(99.5, 19) # 新增點03
ring.AddPoint(73, 42) # 新增點04
yard = ogr.Geometry(ogr.wkbPolygon) # 構建幾何型別:多邊形
yard.AddGeometry(ring)
yard.CloseRings()
# 呼叫VectorPlotter類
vp = VectorPlotter(True)
vp.plot(yard, fill=False, edgecolor='blue')
ring = yard.GetGeometryRef(0)
for i in range(ring.GetPointCount()):
ring.SetPoint(i, ring.GetX(i) - 5, ring.GetY(i))
vp.plot(yard, fill=False, ec='red', linestyle='dashed')
plt.show() # 少了這句話則影象不顯示
生成的結果:
注:需要解釋一下的就是面與多邊形的關係,本節中第三個程式碼生成的是多邊形,但是本節標題中提到的是面,其實面就是填充後的多邊形 ^_^。
最後,希望能夠推薦給您的好友,讓更多人來學習Python,感受Python的魔力與強大。