上一节讲了矢量数据的读取,这一节说说矢量数据的创建,该节为点、线、面矢量数据的创建初级版,下节说说中级版。
一 创建点矢量
# _*_ coding: utf-8 _*_
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的任性赋值方式
'''画图'''
vp = VectorPlotter(True) # 调用VectorPlotter类
vp.plot(point, 'bo') # 画出蓝色圆点
point.AddPoint(59.5, 13) # 在点01基础上添加点02
vp.plot(point, 'rs') # 画出红色方点
plt.show()
plt.pause(5) #画图窗口显示5秒后自动关闭
结果图如下:
二 创建线矢量
# _*_ coding: utf-8 _*_
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
'''画图'''
vp = VectorPlotter(True) # 调用VectorPlotter类
vp.plot(line, 'r-')
plt.show()
plt.pause(5) # 画图窗口显示5秒后自动关闭
结果图如下:
三 创建面矢量
# _*_ coding: utf-8 _*_
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()
'''画图'''
vp = VectorPlotter(True) # 调用VectorPlotter类
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()
plt.pause(5) # 画图窗口显示5秒后自动关闭
效果图如下:
注意:如果程序报错(‘no module named ospybook’),则需要下载ospybook模块
下载链接:https://github.com/cgarrard/osgeopy-code/raw/master/ospybook-latest.zip
直接使用pip安装即可,比如:pip install C:\Users\Administrator\Downloads\ospybook-latest.zip