{"name": "Align Features to Path", "package_name": "align_features_to_path", "version": "10.2.0", "experimental": false, "qgis_min": "3.28.0", "qgis_max": "4.99.0", "downloads": 309, "uploaded_by": "MustafaELghazaly", "upload_datetime": "2026-06-12T05:00:58.832624", "changelog": "v10.2.0: Smart Fit mode + Square End audit. New METHOD_SMART_FIT adds (1) intersection-significance pre-filter: features that only clip a corner of the buffer (L-corner pulls, crossing lines) are skipped based on a configurable overlap-ratio threshold; (2) proximity-weighted vertex movement: vertices near the path snap almost fully, distant vertices move gently (quadratic falloff), eliminating aggressive global pull. UI: new \"Smart Fit\" method card between \"Fit to Path\" and \"Preserve Shape\"; Advanced panel grows a Smart Fit Options section (Min. Overlap % spinner + Proximity-weighted checkbox) visible only in Smart Fit mode. Square End buffer preview (_update_tol_preview, _on_path_updated) already uses _get_end() \u2014 confirmed correct. Backward compatible: all previous methods unchanged.\nv10.1.8: Buffer Distance Fix. The Tolerance value now correctly acts as the hard containment boundary \u2014 only features whose geometry intersects the tolerance buffer of the drawn path are aligned (matching ArcGIS Pro behaviour). Previously the algorithm silently expanded search_buffer to tolerance*2, pulling in features outside the drawn buffer. Fixed: search_buffer clamp is now max(search_buffer, tolerance) instead of tolerance*2. Dialog _get_features() bbox pre-filter updated from tol*2 to tol to match.\nv10.1.7: Coherent Fit to Path gap-closing fix. Densification + master-path projection for Fit to Path so adjacent parcels share identical boundary coordinates.\nv10.1.1: QGIS 4 loading fixes. Declared qgisMaximumVersion=4.99 so the plugin is allowed to load under QGIS 4 (a 3.x-only maximum silently blocked it before). Fully scoped every Qt and QGIS enum that PyQt6 no longer exposes in unscoped form (Qt.*, Qgis.MessageLevel.*, QgsWkbTypes.GeometryType/Type.*, QFrame/QSizePolicy/QSlider widget enums, QgsVertexMarker.IconType.*, QgsPointLocator.Type.*). QAction import now falls back from QtWidgets to QtGui (moved in Qt6). Enums relocated to the Qgis namespace in QGIS 4 (layer filters, feature-request flags, tolerance unit) are resolved defensively at import time with QGIS 3 fallbacks. All v10 master-path snapping logic and the v10.1 buffer/curve shims are unchanged.\nv10.1.0: QGIS 4 compatibility groundwork. Buffer style resolution now uses a module-level _resolve_buffer_styles() helper that probes five API strategies (Qgis.EndCapStyle, QgsGeometry.CapRound, QgsBufferParameters, integer fallback) at import time. _make_buffer() tries four QgsGeometry.buffer() call signatures. QgsWkbTypes.isCurvedType wrapped in _is_curved_wkb_type() shim. QgsMessageLog guarded for headless environments. QgsWkbTypes.displayString guarded for QGIS 4. All v10 master-path snapping logic unchanged.\nv10.0.0: Global Master Boundary Alignment. Deterministic master-path snap forces all near-path vertices to the exact same coordinates across all polygons \u2014 bitwise-identical shared boundary, zero gaps. Two-tier: exact vertex pin at kinks (Tier 1) + segment projection (Tier 2).\nv9.2.0: Hardened shared-boundary alignment. Global merge via spatial hash, deterministic trace direction, zero-length edge cleanup.\nv9.0.0: Coherent Multi-Polygon Boundary Alignment. Enforce Shared Boundary option (default ON).\nv8.0.0: True path tracing. Trace Mode button. Arc/curve-aware densification. Improved Chaikin smoothing.\nv7.1.0: Trace & Smooth method with resample + snap + Chaikin smoothing.\nv7.0.0: 4-step dock UI, spatial index, 5-level undo, preview rubber band.", "external_deps": "", "download_url": "https://plugins.qgis.org/plugins/align_features_to_path/version/10.2.0/download/"}