[general]
name=Road Centerline Extractor
qgisMinimumVersion=3.28
description=Extracts clean, topologically segmented centerlines from road, river, or other corridor-shaped polygons.
about=Version 2.0.0 generalizes this plugin beyond roads and moves it from an interactive dialog to a QGIS Processing algorithm. It converts corridor-shaped polygons (roads, rivers, or similar elongated networks) into centerlines via Voronoi-based skeleton extraction, available from the Processing Toolbox, in batch mode, inside Graphical Models, and from the Python console. Optional processing steps, each independently configurable: segmentation at T-junctions and intersections (splitting the output into individual features between nodes), pruning of short spurious branches below a minimum length, and exclusion of sections narrower than a minimum width. Output length is reported per feature in the unit of choice (m, km, mi, ft). Requires the shapely, networkx and centerline Python packages.
version=2.0.0
author=Roberto Geraldes
email=rob.filipe007@hotmail.com

tracker=https://github.com/Lyghtnyng/road-centerline-extractor/issues
repository=https://github.com/Lyghtnyng/road-centerline-extractor
homepage=https://github.com/Lyghtnyng/road-centerline-extractor


tags=centerline,skeleton,voronoi,medial axis,polygon,road,river,network,processing,line extraction

category=Vector
icon=icon.png

experimental=False
deprecated=False

hasProcessingProvider=yes

changelog=2.0.0
    - BREAKING: the interactive dialog has been removed. The plugin is now exposed exclusively as a Processing Toolbox algorithm ("Extract Centerlines"), enabling batch processing, use in Graphical Models, and console access.
    - Generalized beyond roads: the algorithm works on any corridor-shaped polygon (roads, rivers, or similar). There is no separate "road mode" - segmentation, pruning, and width filtering are independent parameters.
    - Added: "Segment at T-junctions" toggle (was previously always on).
    - Added: "Extend tips to polygon boundary" toggle, off by default. Dead-end tips are now left at the last genuine skeleton point (equidistant from the polygon walls) rather than stretched to the boundary, trading a small amount of network coverage for centering accuracy that holds to the tip. Enable this toggle to restore full-coverage behavior.
    - Added: a width-relative safety floor to spur pruning, applied on top of the existing length threshold - a branch shorter than roughly one local polygon width is now removed as skeleton noise regardless of the absolute pruning setting.
    - Fixed: the input CRS is now validated before running; geographic (degree-based) CRS are rejected with a clear message instead of silently producing incorrect results.
    - Fixed: processing can now be cancelled cooperatively; the previous abrupt thread termination has been removed.
    - Fixed: the minimum-width parameter's description no longer incorrectly implies it affects skeleton resolution - it only filters which sections are kept.
    - Fixed: endpoint extension (when enabled) now uses an exact boundary intersection instead of fixed-step sampling, reducing the shortfall previously left at narrow tapering tips.
    0.x-1.1.0
    - Initial dialog-based releases.
