1.0.1 - RidgeSlide sub-brand in the name - Display name is now "GPS Road Builder (RidgeSlide)" to link the plugin to its RidgeSlide engine while staying discoverable; the window title and header match. The package folder and settings keys are unchanged 1.0.0 - Sprint 13: RidgeSlide boundary and first production release - RidgeSlide carved into a clear, QGIS-agnostic core: renamed core/slide -> core/ridgeslide (files refine.py, kernel.py) with a small public API façade (RidgeSlide / RidgeSlideConfig / RidgeSlideResult) so the method can be reused as a library; the plugin pipeline stays a client - The RidgeSlide core is MIT-licensed (core/ridgeslide/LICENSE + NOTICE, with the paulmach/slide + Guo 2020 lineage); the plugin stays GPLv3 (compatible) - Added CITATION.cff and AUTHORS; documented the dual licensing - A guard test enforces that the algorithm core imports no qgis/PyQt - First production release (1.0.0) 0.17.0 - Sprint 12: topology and an accurate preset - Break at crossings (Post-process): split two edges that cross geometrically but share no node, inserting a real junction (GRASS v.clean break) — improves connectivity of visually crossing but broken roads. Optional (creates a false junction at bridges/overpasses) - Junction consolidation (Post-process): merge clusters of nearby junction nodes into one, cleaning the bushy intersections from 8-connectivity - New preset "Sparse / RidgeSlide (accurate)": finer cell/resample, less smoothing and micro-loop cleanup for geometry closer to the reference (slower — numba recommended) 0.16.0 - Sprint 11: UI polish, RidgeSlide branding, QGIS 3.x - Window: the minimize button now works (WindowMinimizeButtonHint) - Tabs: reverted the bold font that clipped the active tab's last letter; selection is shown by colour only, with a robust tab width (no clipping) - About dialog redesigned as a styled card (like Support), highlighting the RidgeSlide method and its authorship - Support dialog: removed the "Maybe later" button (donate or close via X) - Language switcher shows real flag icons (Windows does not render flag emoji) - UI now says "RidgeSlide" everywhere instead of bare "Slide" (tab, method, backend, presets, tooltips); internal setting values are unchanged - Compatibility: documented support for the whole QGIS 3.x branch (tested on 3.44 "Solothurn"); qgisMaximumVersion=3.99 keeps 4.x/Qt6 out until it is separately supported 0.15.0 - Sprint 10: scenario presets - New one-click presets beyond forestry, since the engine is method-agnostic: "Dense tracks (running / cycling)", "Urban vehicles / logistics", "OSM traces (heterogeneous)" and "Sparse vessels / AIS" - Each encodes assumptions about the data (cell size, resample step, gap segmentation, threshold mode) as a starting point — expect to tune - Dense/urban/OSM use the RidgeSlide method; urban and OSM use the robust percentile threshold; AIS uses coarse scale and wide segmentation gaps 0.14.2 - More connectivity + post-processing logging - Directional bridge: connect dead-ends that face each other (their road continuations point at one another) even beyond the normal radius - Component stitching: join the nearest nodes of separate components into one network (Kruskal over k-nearest neighbours), up to a max distance - Post-processing runs now log their full settings and result counts (bridged/snapped/faced/stitched/dropped) to the file log and the run manifest, like build runs 0.14.1 - Node-to-edge gap bridging (post-processing connectivity) - "Bridge gaps" now also snaps a dangling end to the nearest point on a neighbouring edge (a T-gap), splitting that edge — not only end-to-end. This is the common road gap that end-to-end bridging could not close, so post-processing barely changed the graph before. The Post-process log now reports bridged/snapped/components-dropped counts 0.14.0 - Sprint 9: new input sources - Load input from a project vector layer (points or lines) or a GPX/KML/SHP file, not only CSV/XLSX. Vector inputs need no coordinate columns — the geometry provides them; device/time are auto-detected from field names or synthesized; line layers treat each line as one track; GPX uses its track_points sub-layer - Data tab: an "Input source" selector (files / project layer / vector file) 0.13.1 - RidgeSlide authorship - Documentation states throughout that RidgeSlide was conceived, generalized, developed and completed by Alexander Kobyakov (README, ALGORITHMS, USER_GUIDE, metadata) 0.13.0 - Sprint 8: product (docs, RidgeSlide, UI fixes) - The custom Slide reimplementation is now named RidgeSlide (roads = ridges of the density surface); metadata/README/ALGORITHMS updated accordingly - Marked production-ready (experimental=False); positioning generalized beyond forestry (logistics, sports, off-road, vessels, OSM, ...) - New docs at repo root: rewritten README, USER_GUIDE.md, ALGORITHMS.md - UI fixes: the active tab no longer clips its last letter (bold applied to all tab states); the AOI group on the Data tab is now visible without scrolling; the build script excludes test_temp/memory 0.12.1 - Sparse/Slide threshold fix (per-tile Otsu blow-out) - The ui5 run showed per-tile Otsu thresholds ranging 0.03..374: tiles with a town/yard got a huge threshold and dropped almost all roads (sparse result). The "Sparse / Slide" preset now uses the percentile threshold (scale-adaptive per tile) instead of Otsu, and a slightly finer cell (10 m) - Tip: lower the threshold percentile for a denser network 0.12.0 - Sprint 7: KDE quality and device attributes - KDE quality (WS-KDE): percentile threshold mode (robust on sparse data where Otsu cuts above roads); KDE now uses all points incl. single fixes; mask hole-filling and micro-loop removal kill the skeleton "crossings"; medial-axis (centerline) skeletonizer option; the sparse KDE preset uses these by default - Device attributes (WS-Dev): n_devices per edge (unique GPS devices near the edge), written to the layer, GeoJSON and GraphML - WS-Perf: resuming from a checkpoint already skips the input re-read (Sprint 5); parallel tiles (A5) intentionally deferred — numba already parallelizes Slide across cores and a process pool is unsafe in QGIS 0.11.4 - Drop remaining "FGIS LK" mentions - Removed "ФГИС ЛК" from the KDE method label and its tooltip (kept only the generic sparse-data description) 0.11.3 - Preset naming fix - Sparse presets renamed: "Разреженные / Slide (рекоменд.)" and "Разреженные / KDE (эксперим.)" — dropped "ФГИС ЛК" from the KDE preset name and unified the spelling (разреженные) across the UI 0.11.2 - Backend clarity (numba vs numpy) - The log now records the resolved Slide backend (setting -> using) so it is clear whether numba or numpy actually ran - The numpy backend option is relabelled "numpy (slow, reference)" and the Slide-backend tooltip explains that installing numba on the Dependencies tab does not select it — pick "Auto" or "numba" 0.11.1 - Sparse/Slide performance fix - "Sparse / Slide" preset: numba backend + coarse resample (K=50, gap 700) so sparse points no longer explode into tens of millions (was ~83M / 225 tiles); coarser cell for fewer tiles - Guard: Slide on the numpy backend with >15M points now aborts early with guidance instead of grinding for hours; a warning is logged when numba is available but numpy is selected - Log now shows the resample point-count inflation (before/after/ratio) 0.11.0 - Sprint 6: post-processing and connectivity - Connectivity (WS-Conn): bridge dangling ends within a radius, drop small components, keep only the largest network; optional morphological mask closing for the Slide method too (core/graph/connect.py) - New "Post-process" tab (WS-Post): improve an already-built graph (or a chosen line layer) without a full rebuild — bridge gaps, smooth, clean components; shared orchestrator core/graph/postops.py - Area of interest (WS-AOI): clip input points by a polygon from a file or a project layer before processing (removes points in the sea / out of zone) - Connectivity/AOI settings also apply during a normal build 0.10.0 - Sprint 5: transparency and a working result - Logging for parameter tuning (WS-L): the run now logs the full resolved settings and per-stage metrics (per-tile binarization threshold, edges/ nodes before/after merge and cleanup) with per-stage durations; a compact per-run manifest is appended to gps_road_builder_runs.jsonl; log rotation raised to 5 MB; resuming from a checkpoint no longer re-reads the input - New "Sparse / Slide (recommended)" preset — Slide builds a connected network on sparse FGIS LK data; the KDE preset is marked experimental - Polyline smoothing (WS-Smooth): optional Chaikin smoothing removes the raster-skeleton stair-steps (Graph tab, keeps edge ends fixed) - UI fixes (WS-U): the tab bar no longer scrolls away (scrolling moved inside each tab) and tab titles are no longer truncated (+ tab tooltips) - Presets now apply to all parameter tabs, not just Density/Graph 0.9.0 - Sprint 4 (WS-G): quality and attributes - Graph post-cleaning against fragmentation: pass-through (degree-2) nodes are merged into single polyline edges (always on); optional removal of short dangling spurs (Graph tab, "remove dangling spurs shorter than") - Edge attributes: road_class (main/improved/ordinary/winter by traversal frequency quantiles) and a "reconstructed" flag (inferred segment with no track coverage); written to the layer, GeoJSON and GraphML - REB / anti-spoofing preprocessing filter (Preprocess tab): drops teleports (>120 km/h), jumps >200 m in <60 s and A->B->C spikes - Overview histograms use log-spaced bins with range labels, so skewed frequency/length distributions are readable instead of one dominant bin 0.8.1 - WS-E completion: tooltips and method-aware fields - Tooltips on every parameter of the Preprocess, Density/Slide, Graph and Scale tabs (plain-language hints with recommendations) - Fields irrelevant to the chosen method are greyed out: KDE disables resample, Slide backend, sigma1/sigma2, kernel sharpness and Slide loops; Slide disables KDE radius/buffer 0.8.0 - Big update, Sprint 3: tester convenience - Checkpoints: cleaned points and projected tracks are saved to a chosen cache folder; a run can start from a saved stage or stop after a stage, so you re-tune later steps without re-running the expensive early ones - Presets can be saved to and loaded from JSON files (not only the built-ins) - Output tab: cache folder, "start from stage" and "stop after stage" 0.7.0 - Big update, Sprint 2: sparse-data method - New "KDE + buffer" method for sparse GPS logging data (FGIS LK: a fix every 15 min / 5 km) — kernel density on points, gap bridging by a buffer, no resampling/Slide; the Guo "Density + Slide" method stays for dense tracks - Method and backend selection in the UI (Slide backend, skeletonizer, KDE radius/buffer); "Sparse data / FGIS LK" preset 0.6.1 - Big update, Sprint 1: performance on large sparse datasets - Tile assignment via per-track bbox (was O(tiles*tracks)); single vectorized projection; near-duplicate thinning (numba); default cell 5 m + raster guard; file log fixed, step plan/ETA/available-libraries reporting 0.6.0 - Phase 5: polish - Export to GeoJSON / GraphML (pure) and SHP / GeoPackage (QgsVectorFileWriter) - Rotating file log in the QGIS profile for debugging - User guide (docs/USER_GUIDE.md), README, cross-platform CI (Linux + Windows) - Plugin packaging script excluding data/docs/tests 0.5.0 - Phase 4: functional GUI - Real tab controls (Data...Output), field presets, tooltips, result histograms; Build runs the pipeline in a QgsTask and adds the road layer styled by traversal frequency; progress, log and cancel 0.4.0 - Phase 3: scalability - Split-and-merge over overlapping tiles with boundary fixing; close-node merge that also cleans junction clusters 0.3.0 - Phase 2: MVP pipeline - Density surface, improved Slide (numpy reference + numba backend, verified against the reference implementation), skeleton -> graph, edge weights and (f, l) artifact filtering 0.2.0 - Phase 1: data and CRS - Robust CSV/XLSX reader (delimiter and datetime auto-detection), cleaning, deduplication, segmentation, equidistant resampling; data-centered Transverse Mercator working CRS 0.1.0 - Phase 0: plugin skeleton and UI chassis - Tabbed main dialog (header with language selector, Support and About) - Dependency installer framework (pip-into-target and prebuilt-wheels), no silent auto-install; runs only on explicit user action - Background task scaffold (QgsTask), settings persistence, RU/EN interface - Offline unit tests and CI
yes
aleko
2026-07-15T14:41:30.621153+00:00
3.22.0
3.99.0
-
no
Plugin Tags