QGIS Python Programming Cookbook(Second Edition)
上QQ阅读APP看书,第一时间看更新

Examining vector layer features

Once a vector layer is loaded, you may want to investigate the data. In this recipe, we'll load a vector point layer from a shapefile and take a look at the and y coordinates of the first point.

Getting ready

We'll use the same New York City Museums layer from the Loading a vector layer from a file recipe of this chapter. You can download the layer from https://github.com/GeospatialPython/Learn/raw/master/NYC_MUSEUMS_GEO.zip.

Unzip that file and place the shapefile's contents in a directory named nyc within your qgis_data directory, within your root or home directory.

How to do it...

In this recipe, we will load the layer, get the features, grab the first feature, obtain its geometry, and take a look at the values for the first point:

  1. First, load the layer:
            layer = QgsVectorLayer("/qgis_data/nyc/NYC_MUSEUMS_GEO.shp",
                                   "New York City Museums", "ogr") 
    
  2. Next, get an iterator of the layer's features:
            features = layer.getFeatures() 
    
  3. Now, get the first feature from the iterator:
            f = features.next() 
    
  4. Then, get the feature's geometry:
            g = f.geometry() 
    
  5. Finally, get the point's values:
            g.asPoint() 
    
  6. Verify that the Python console output is similar to the following QgsPoint object:
             (-74.0138,40.7038) 
    

How it works...

When you access a layer's features or geometry using the previously demonstrated methods, PyQGIS returns a Python iterator. The iterator data structure allows Python to work efficiently with very large datasets, without keeping the entire dataset in memory. It's important to note the object returned in step six is actually a QgsPoint, which is represented as a tuple.