- QGIS Python Programming Cookbook
- Joel Lawhead
- 289字
- 2021-07-23 19:48:56
Adding a line feature to a vector layer
Adding a line to a vector layer in QGIS is identical to adding a single point, but here you just have to add more points to the QgsGeometry
object.
Getting ready
For this recipe, you will need to download a zipped line shapefile that contains two line features from https://geospatialpython.googlecode.com/svn/paths.zip.
Extract the ZIP file to a directory named paths
in your /qgis_data
directory.
How to do it...
In this recipe, we will load the line layer from the shapefile, build a list of points, create a new geometry object, and add the points as a line. We will also create a new feature, set the geometry, and add it to the layer's data provider. Finally, we will update the extent of the layer to make sure that the bounding box of the layer encapsulates the new feature:
- Start QGIS.
- From the Plugins menu, select Python Console.
- First, load the line layer and ensure that it is valid:
vectorLyr = QgsVectorLayer('/qgis_data/paths/paths.shp', 'Paths' , "ogr") vectorLyr.isValid()
- Next, access the layer's data provider:
vpr = vectorLyr.dataProvider()
- Now, build our list of points for a new line:
points = [] points.append(QgsPoint(430841,5589485)) points.append(QgsPoint(432438,5575114)) points.append(QgsPoint(447252,5567663))
- Then, create a geometry object from the line:
line = QgsGeometry.fromPolyline(points)
- Create a feature and set its geometry to the line:
f = QgsFeature() f.setGeometry(line)
- Finally, add the feature to the layer data provider and update the extent:
vpr.addFeatures([f]) vectorLyr.updateExtents()
How it works...
As with all the geometry in QGIS, we use the four-step process of building points, geometry, feature, and data provider to add the line. Interestingly, the QgsGeometry
object accepts Python lists for the collection of points instead of creating a formal object, as is done with the QgsPoint
object.
- Unity Virtual Reality Projects
- Vue.js 3.0源碼解析(微課視頻版)
- 網店設計看這本就夠了
- Python高效開發實戰:Django、Tornado、Flask、Twisted(第3版)
- PhpStorm Cookbook
- VMware虛擬化技術
- 低代碼平臺開發實踐:基于React
- Visual Basic程序設計上機實驗教程
- Java EE企業級應用開發教程(Spring+Spring MVC+MyBatis)
- Couchbase Essentials
- VMware vSphere Design Essentials
- 3D Printing Designs:Design an SD Card Holder
- 計算機軟件項目實訓指導
- Unity虛擬現實開發圣典
- MATLAB計算機視覺實戰