Python-GDAL教程:点、线、面矢量数据的创建-初级

上一节讲了矢量数据的读取,这一节说说矢量数据的创建,该节为点、线、面矢量数据的创建初级版,下节说说中级版。

一 创建点矢量

# _*_ 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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值