官术网_书友最值得收藏!

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:

  1. Start QGIS.
  2. From the Plugins menu, select Python Console.
  3. First, load the line layer and ensure that it is valid:
    vectorLyr = QgsVectorLayer('/qgis_data/paths/paths.shp', 'Paths' , "ogr")
    vectorLyr.isValid()
    
  4. Next, access the layer's data provider:
    vpr = vectorLyr.dataProvider()
    
  5. 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))
    
  6. Then, create a geometry object from the line:
    line = QgsGeometry.fromPolyline(points)
    
  7. Create a feature and set its geometry to the line:
    f = QgsFeature()
    f.setGeometry(line)
    
  8. 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.

主站蜘蛛池模板: 治多县| 海口市| 凤山县| 泉州市| 措美县| 历史| 三亚市| 毕节市| 剑阁县| 信宜市| 天全县| 大竹县| 榆中县| 绵阳市| 松阳县| 乾安县| 玛沁县| 江陵县| 南丰县| 和林格尔县| 花垣县| 余姚市| 柯坪县| 泸溪县| 无极县| 子长县| 永修县| 陇西县| 荔浦县| 沅江市| 尚志市| 仲巴县| 无锡市| 万山特区| 上饶县| 水富县| 新巴尔虎左旗| 那曲县| 襄垣县| 南城县| 钟祥市|