Releases: Dozer3530/Plover
Release list
Plover 3.2.5
Plover 3.2.5
Plover now appears under the Vector menu (it's a vector tool) instead of the generic Plugins menu, matching its category=Vector and the QGIS plugin guidelines. The toolbar button and Processing algorithm are unchanged. No functional changes to routing.
Install
Download plover-v3.2.5.zip and install via Plugins -> Manage and Install Plugins -> Install from ZIP.
Plover 3.2.4
Plover 3.2.4
Minimal wireframe icon: the plover is now a clean monoline outline (no fills) standing above the dashed TSP route with hollow waypoint circles. Still 100% original vector art. No functional changes.
Install
Download plover-v3.2.4.zip and install via Plugins -> Manage and Install Plugins -> Install from ZIP.
Plover 3.2.3
Plover 3.2.3
New original icon — no more third-party photo.
The previous icon was derived from a background-removed photo of unclear provenance, which was a licensing risk to ship under MIT. It's replaced with 100% original vector art (assets/plover-icon.svg): a stylized piping plover standing above a dashed TSP route with waypoint dots. The old photo has been removed from the repository entirely.
No functional changes to routing.
Install
Download plover-v3.2.3.zip and install via Plugins -> Manage and Install Plugins -> Install from ZIP.
Plover 3.2.2
Plover 3.2.2
Packaging fix for the official QGIS plugin repository: the LICENSE file is now bundled inside the plugin package (plugins.qgis.org requires it), and license=MIT is declared in metadata. No functional changes.
Install
Download plover-v3.2.2.zip and install via Plugins -> Manage and Install Plugins -> Install from ZIP.
Plover 3.2.1
Plover 3.2.1
The visit-order layer now looks the part.
Previously the numbered visit-order points used QGIS's default marker and a small black label, so the layer looked plain next to the arrowed route line. Now each stop is a proper numbered-waypoint badge:
- An orange circle marker matching the route colour, with a white ring.
- The visit number centred on it in bold white with a dark-orange halo, so it stays readable over any basemap or imagery.
Purely cosmetic — routing behaviour is unchanged.
Install
Download plover-v3.2.1.zip and install via Plugins → Manage and Install Plugins → Install from ZIP.
Plover 3.2.0
Plover 3.2.0
The boundary is now optional.
The polygon boundary was always the constraint mechanism — it keeps the route inside a field and routes around holes — but it was never required by the TSP itself. As of 3.2.0 you can leave it out:
- With a boundary — same as before: the route stays inside it and dodges sloughs / exclusion zones.
- Without a boundary — Plover solves a plain straight-line (Euclidean) TSP: the shortest visiting order through your points, connected by direct lines, no obstacle avoidance. The working CRS falls back to the point layer's.
In the dialog, leave Boundary layer empty (the buffer and "points outside boundary" controls disable themselves). In Processing, the Boundary polygon(s) parameter is now optional (BOUNDARY can be omitted / None).
Install
Download plover-v3.2.0.zip and install via Plugins → Manage and Install Plugins → Install from ZIP.
Plover 3.1.0
Plover 3.1.0
New: choose what happens to points outside the boundary.
A new Points outside boundary option (in both the dialog and the plover:tsproute Processing algorithm):
- Fail if any point is outside (default) — Plover refuses to run and reports/selects the offending points. Same as before; best when every point should be in-field.
- Skip points outside the boundary — drops the outside points and routes only the ones inside. Handy when one big point layer spans many fields and you only want to route this field's points.
The start point is now resolved against the final in-boundary set; if your chosen start was skipped, Plover starts from the first inside point and warns.
Install
Download plover-v3.1.0.zip and install via Plugins → Manage and Install Plugins → Install from ZIP.
v3.0.0 - Plover
Plover 3.0.0
Biggest release yet — the routing engine, the dialog, and the repo were rebuilt end to end. 11x faster with ~5% shorter tours on a 100-point two-slough benchmark vs v2.7.0.
Fixed
- The boundary buffer now genuinely lets routes hug the field edge — points sitting exactly on the boundary line no longer become unreachable (previously they were silently connected with straight lines that could cross sloughs)
- Routing runs in a background task: QGIS stays responsive, runs are cancellable
- Layer dropdowns track the project (no more "Reload Plugin" workaround)
- Toolbar icon actually displays
- Points are auto-reprojected to the boundary CRS; geographic CRS gets a clear refusal
- Unreachable points are reported by number instead of being silently straight-lined
New
- Processing algorithm
plover:tsproute— use Plover in the Processing Toolbox, Model Designer, batch mode, and qgis_process - One-way routes (uncheck "Return to start")
- Numbered visit-order layer with labels and per-leg lengths; route styled with direction arrows
- GPX and KML export, auto-reprojected to WGS84 for handhelds/phones
- Use-only-selected-points mode and a start-point feature picker
- Multi-feature boundary layers; fully-enclosed features auto-treated as exclusion zones
Engine
- Visibility graph reduced to reflex (turn) vertices — a rectangular field contributes zero graph nodes
- Prepared-geometry edge tests instead of overlay operations
- One Dijkstra per waypoint instead of one per pair
- Multi-start nearest-neighbour + 2-opt + Or-opt local search
- Solver core is pure Python with 18 unit tests; 20 more headless QGIS integration tests
Install
Download plover-v3.0.0.zip below, then in QGIS: Plugins → Manage and Install Plugins → Install from ZIP. Compatible with QGIS 3.22+ and QGIS 4.x (Qt5 and Qt6).
v2.7.0-Plover
Refactor TSP: waypoint-only optimization, cached Dijkstra paths (v2.7.0) The previous algorithm mixed waypoints and boundary helper vertices in the same route list, so 2-opt was optimizing the wrong thing - it shuffled visibility-graph helpers while leaving waypoint crossings unfixed. Now find_tsp_route builds a waypoint-to-waypoint distance matrix using Dijkstra on the visibility graph, caching every path. Nearest-neighbour and 2-opt operate purely on the waypoint matrix. create_route_layer stitches the final geometry from the cached paths. The old second-pass boundary-correction code is removed - it was a workaround for the broken first pass.
v2.6.0
Fix sloughs and add GeoPackage export (v2.6.0) - Respect interior rings (holes) in visibility check so route goes around sloughs - Replace deprecated saveAs() with QgsVectorFileWriter.writeAsVectorFormatV3 - Default save format is GeoPackage; Shapefile and GeoJSON still available - Prompt user when target .gpkg already contains a TSP_Route layer