PyQGIS
Awesome links
Getting Started
Importing QGIS Modules
from qgis.core import *
from qgis.gui import *
from qgis.utils import *
Initializing QGIS Application
from qgis.core import QgsApplication
QgsApplication.setPrefixPath("/path/to/qgis/installation", True)
qgs = QgsApplication([], False)
qgs.initQgis()
Exiting QGIS Application
Loading Layers
Loading a Vector Layer
vector_layer = QgsVectorLayer("/path/to/vector.shp", "layer name", "ogr")
if not vector_layer.isValid():
print("Layer failed to load!")
Loading a Raster Layer
raster_layer = QgsRasterLayer("/path/to/raster.tif", "layer name")
if not raster_layer.isValid():
print("Layer failed to load!")
Adding a Layer to the Map
QgsProject.instance().addMapLayer(vector_layer)
QgsProject.instance().addMapLayer(raster_layer)
Layer Operations
Accessing Layer Fields
fields = vector_layer.fields()
for field in fields:
print(field.name(), field.typeName())
Iterating Over Features
for feature in vector_layer.getFeatures():
print(feature.id(), feature.attributes())
Selecting Features by Attribute
expression = QgsExpression("attribute_name = 'value'")
request = QgsFeatureRequest(expression)
features = vector_layer.getFeatures(request)
for feature in features:
print(feature.id(), feature.attributes())
Geometry Operations
Creating a Point Geometry
from qgis.core import QgsPointXY, QgsGeometry
point = QgsPointXY(10, 10)
geometry = QgsGeometry.fromPointXY(point)
Creating a Line Geometry
line = [QgsPointXY(10, 10), QgsPointXY(20, 20)]
geometry = QgsGeometry.fromPolylineXY(line)
Creating a Polygon Geometry
polygon = [[QgsPointXY(10, 10), QgsPointXY(20, 20), QgsPointXY(20, 10), QgsPointXY(10, 10)]]
geometry = QgsGeometry.fromPolygonXY(polygon)
Spatial Operations
Buffer
buffer = geometry.buffer(10, 5)
Intersection
intersection = geometry1.intersection(geometry2)
Difference
difference = geometry1.difference(geometry2)
CRS (Coordinate Reference System)
Setting a Layer CRS
crs = QgsCoordinateReferenceSystem("EPSG:4326")
vector_layer.setCrs(crs)
from qgis.core import QgsCoordinateTransform, QgsProject
transform = QgsCoordinateTransform(QgsCoordinateReferenceSystem("EPSG:4326"), QgsCoordinateReferenceSystem("EPSG:3857"), QgsProject.instance())
transformed_point = transform.transform(QgsPointXY(10, 10))
Map Rendering
Creating a Map Canvas
from qgis.gui import QgsMapCanvas
canvas = QgsMapCanvas()
canvas.setCanvasColor(Qt.white)
canvas.setExtent(vector_layer.extent())
canvas.setLayers([vector_layer])
canvas.show()
Saving Map as Image
from qgis.gui import QgsMapRendererCustomPainterJob
image = QImage(QSize(800, 600), QImage.Format_ARGB32_Premultiplied)
image.fill(Qt.white)
painter = QPainter(image)
renderer = QgsMapRendererCustomPainterJob(canvas.mapSettings(), painter)
renderer.start()
renderer.waitForFinished()
painter.end()
image.save("/path/to/map.png", "png")
Plugins
Loading a Plugin
from qgis.utils import loadPlugin, startPlugin
loadPlugin("plugin_name")
startPlugin("plugin_name")
Accessing Plugin Methods
plugin_instance = qgis.utils.plugins["plugin_name"]
plugin_instance.method_name()