1. 程式人生 > >Python地學分析 — 建立向量資料點、線、面 04

Python地學分析 — 建立向量資料點、線、面 04

歡迎關注博主的微信公眾號:“智慧遙感”。

該公眾號將為您奉上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的魔力與強大。