Parcel subdivision engine for QGIS — split zoning blocks with width variation, row asymmetry, fishbone offsets and residual merging.
Hand-drawing parcels inside zoning blocks is slow, and naive equal-width splits look artificial. ParcelFlux subdivides blocks into parcels with natural variation — tunable width ranges, asymmetric rows, fishbone boundary offsets — while keeping every parcel inside the repaired real block footprint and cleaning up slivers automatically.
Comprehensive Academic Reference Manual — complete documentation of every algorithm, parameter, and workflow. Hosted on GitHub Pages.
Complete by construction: the output always covers the input. A parcel that cannot satisfy your area or frontage envelope is split further or flagged — never quietly deleted — and every run reports its coverage so you can see that for yourself.
- Single/double-row auto-detection — narrow blocks get one parcel row; wider blocks split into two opposing rows.
- Planning constraints — minimum street frontage, explicit front-row depth, and corner-plot widening, applied during subdivision rather than fixed up afterwards.
- Guaranteed coverage — oversized parcels are bisected across their long axis until they fit; anything still outside the envelope is kept and marked in
pf_flag. - Quality report — parcel and block counts, coverage %, area min/median/max, mean frontage, merge and re-split counts after every run.
- Preview before committing — results arrive as a dashed temporary layer with Apply / Discard.
- Seed comparison — run four seeds at once and pick the layout you like from rendered side-by-side thumbnails.
- Width variation — per-parcel random width within a configurable range for natural-looking streetscapes.
- Row width asymmetry — different parcel widths on opposite sides of the centerline.
- Fishbone offset — organic zigzag at division-line endpoints that mimics traditional settlement morphology.
- H-line shift — asymmetric front/rear depths by moving the centerline away from the geometric midpoint.
- 3-pass residual merging — slivers, undersized parcels and under-fronted parcels merge into the neighbor with the longest shared edge.
- Actual-geometry subdivision — irregular or invalid blocks are repaired and split inside the real footprint; the OBB is only a layout guide.
- Computed facade metrics — exterior frontage, side frontage, rear-edge proxy, corner flag and cardinal front direction.
- Collision-safe schema — generated fields fall back to
planx_*names when the source layer already uses ParcelFlux names.
From the QGIS Plugin Hub (recommended): Plugins → Manage and Install Plugins… → search for "ParcelFlux" → Install.
From a release zip: download the latest zip from Releases → Plugins → Install from ZIP.
Requires QGIS 3.28 or newer (QGIS 4.x supported). No external Python dependencies; cancellation-safe background worker.
- Load a zoning block polygon layer.
- Open ParcelFlux from the menu or toolbar — the dock panel appears.
- Select the block layer, set your target lot width (and any constraint/variation options), then click RUN.
- Check the Result card — coverage should read 100% — then Apply the preview to keep it. Not sure which layout you want? Compare seeds runs four and lets you pick.
The complete algorithm reference — every parameter with formulas and a step-by-step workflow — lives in docs/guide.html.
| Component | Where |
|---|---|
| Dock panel UI & run logic | dialogs/dock.py |
| Seed comparison gallery | dialogs/seed_gallery.py |
| Standalone subdivision engine | algorithms/parcel_flux_core.py |
| Algorithm & parameter guide | docs/guide.html |
| Headless engine & dock tests | tests/smoke_core.py, tests/smoke_dock.py |
Run the tests against a real QGIS from the plugins parent directory:
python-qgis-ltr.bat -m parcelflux.tests.smoke_core # QGIS 3 LTR
python-qgis.bat -m parcelflux.tests.smoke_dock # QGIS 4Full version history: CHANGELOG.md
This plugin is one of 15 open-source QGIS plugins for urban planning by the same author:
| Planning & analysis | CAD & production | 3D & visualization |
|---|---|---|
| PlanX — spatial-planning suite | PlanX CAD Toolset — drafting-grade CAD | PlanX 3D City — Three.js city viewer |
| GeoStats Lab — spatial statistics | EasyFillet — tangent-arc fillet | 3D OSM Model — OSM → 3D city in browser |
| Suitability Lab — raster MCDA | Settlement Toolset — 9-stage settlement plans | OSM Quick 3D — OSM → native QGIS 3D |
| DataCube Lab — spatiotemporal cubes | UIP Toolset — Turkish master-plan automation | Urban Procedural 3D — parametric zoning lab |
| Urban Resilience — 28 resilience tools | ParcelFlux — parcel subdivision | CartoLab — publication cartography |
GPL-3.0-or-later © Yusuf Eminoğlu — bug reports and feature requests welcome in Issues.