Navigating the PyQGIS API
The QGIS Python API, also known as PyQGIS, allows you to control virtually every aspect of QGIS. The ability to find the PyQGIS object you need in order to access a particular feature of QGIS is critical to automation.
Getting ready
The PyQGIS API is based on the QGIS C++ API. The C++ API is kept up to date online and is well documented.
Note
The QGIS API's web page is located at https://qgis.org/api/modules.html.
The PyQGIS API documentation is not updated frequently because it is nearly identical to the structure of the C++ API. A tool named SWIG, which creates wrappers for multiple languages for C++ libraries, is used to create the PyQGIS API, making the documentation for the C++ API highly applicable for argument types and order. However, the QGIS project on https://github.com/ maintains a list of all the PyQGIS classes for the latest version. The PyQGIS APIs for different versions are located at https://github.com/qgis/QGIS/blob/master/python/qsci_apis/.
You can locate the documented class in the main C++ API and read about it. Then, look up the corresponding Python module and class using the PyQGIS API listing. In most cases, the C++ API name for a class is identical to that in Python. You should note that the PyQGIS versions are tracked separately from the QGIS version and have different version numbers.
In this recipe, we'll locate the PyQGIS class that controls labels in QGIS.
How to do it...
We will perform the following steps to see in which PyQGIS module the QGIS Label object and Qgs Label are located:
- Go to the QGIS API page at http://qgis.org/api/index.html.
- Click on the Modules tab.
- Click on the link QGIS core library.
- Scroll down the list of modules in alphabetical order until you see QgsPoint.
- Click on the QgsPoint link to access the label object documentation.
- Now go to the PyQGIS API listing at https://github.com/qgis/QGIS/blob/master/python/qsci_apis/PyQGIS-2.2.api.
- Scroll down the alphabetical class listing until you see qgis.core.QgsPoint?1().
How it works...
The QGIS API is divided into five distinct categories, as follows:
- Core
- GUI
- Network analysis
- Server
- Plugins
Most of the time, it's easy to find the class that targets the functionality you need, with most of QGIS being contained in the catch-all core module. The more you use the API, the quicker you'll be able to locate the objects you need for your scripts. You'll also notice that the API file contains the methods for each class with the type of parameters the class accepts.
There's more...
If you're having trouble locating a class containing the keyword you need, you can use the search engine on the QGIS API website.
Tip
Beware, however, that the results returned by this search engine may contain items you don't need and can even send you in the wrong direction because of the use of similar keywords in different modules.