Fundamentals
pyqgis.com
Four core paths to learn PyQGIS
Focus your learning with dedicated guides for PyQGIS fundamentals, spatial automation, cartographic visualization, and QGIS plugin development.
processing.run("native:buffer", params)layer.renderer().symbol().setColor(color)PyQGIS is the Python interface to QGIS. More than 250 in-depth guides across four core topics let you choose a path that matches your current goal — setting up a reliable environment, loading and repairing data sources, automating spatial processing against files, databases, terrain, LiDAR point clouds, road networks and web services, styling, animating and labelling maps in code, or building plugins and data-entry forms that ship on both QGIS 3 and QGIS 4.
Automation
Spatial Data Processing & Automation
Build repeatable vector, raster and terrain workflows, use processing algorithms with confidence, and scale geospatial work beyond manual desktop steps.Open learning pathCartography
PyQGIS Cartography & Data Visualization
Style layers in code, stack symbol layers, build thematic maps, switch between map themes, and turn analysis into publication-ready cartography.Open learning pathPlugins
QGIS Plugin Development
Design, structure, and ship QGIS plugins with PyQGIS and Qt, from lifecycle basics through packaging and publishing workflows.Open learning pathStart here
Popular guides across the site
Hand-picked walkthroughs that show PyQGIS in action — dip into any of them, or work through a full topic from its overview page.
- Fundamentals
QGIS Python Console Basics
Run PyQGIS interactively, reach your layers, and prototype scripts in seconds. - Automation
Batch Processing with PyQGIS
Run algorithms across many datasets, isolate errors, and automate repetitive GIS work. - Automation
Coordinate Reference Systems
Assign, transform, and validate CRS so your data always lines up on the map. - Cartography
Programmatic Layer Styling
Configure renderers, symbols, and data-defined overrides entirely from code. - Cartography
Stack Symbol Layers in PyQGIS
Road casings, hatched fills and offset shadows — the draw order that decides what wins. - Automation
Generate Slope, Aspect and Hillshade
Terrain derivatives that mean something — the CRS and z-factor checks that come first. - Plugins
QGIS Plugin Boilerplate & Structure
Wire up metadata.txt, classFactory, initGui, and unload for a well-formed plugin. - Plugins
Qt Designer for Plugin Interfaces
Build .ui files, load them at runtime, and wire signals to your PyQGIS logic. - Automation
Run the PDAL Algorithms from PyQGIS
The stable API for LiDAR work — and the expression-syntax trap that fails silently. - Automation
Find the Shortest Path Between Points
One route or ten thousand — and the three checks that catch a confidently wrong one. - Automation
Query Layers with Virtual Layer SQL
Join a spreadsheet to a database table in one SQL view — and keep it fast. - Plugins
Configure Editor Widgets
Drop-downs, lookups, ranges and photo attachments that only accept valid values.
Newest guides
Newest topic areas and guides
Two new areas — where layers get their data, and the forms and actions people edit it through — plus a plugin port to QGIS 4 and the strongest new guides on rasters, projections, tiles and debugging.
- Automation
Layer Data Sources & Formats
CSVs, GeoPackage sublayers, SQL views and photos — and projects whose data moved. - Plugins
Attribute Forms & Layer Actions
Widgets, defaults, constraints and tabbed forms that keep hand-entered data clean. - Plugins
Port a Plugin to QGIS 4 and Qt6
One codebase for the 3.x LTRs and the Qt6 series — audit, migrate, test both. - Automation
Fix Broken Layer Paths in a Project
Repair hundreds of projects after a file server move, without losing a single style. - Automation
Read Raster Pixels with QgsRasterBlock
Grid-aligned blocks, NoData done right, NumPy in one step, national rasters in tiles. - Automation
Choose a Projected CRS for Analysis
National grid, UTM zone or equal-area — decided from the extent and checked for distortion. - Cartography
Generate XYZ Tiles and MBTiles
Your QGIS cartography as a web tile pyramid, with labels that survive tile edges. - Fundamentals
Debug Invalid Layer Loading
Why a layer loads as invalid without an error, and a helper that always says why.
Suggested learning flow
Build confidence from setup to shipping tools
- Start with fundamentals and environment setup
- Load data reliably, then automate vector, raster, terrain and point cloud workflows
- Style, label, animate and theme maps in code for publication
- Build plugin interfaces, forms and tooling
- Test, package and ship what you have built