Part 1 covers the parts of the application that have been stable for months:
signing in and district scoping, the map screen, navigation, base maps, layers,
locations, measuring, an orientation to Analyse, exporting, working offline,
GPS, settings, and a troubleshooting table. Nine pages, built from the Analyse
tutorial so it matches the existing guides rather than looking like a new
document — same cover, header, footer, headings, call-outs and tables.
Held back deliberately: the drawing and digitising tools, which changed across
v15-v23 and want a settling period in the field, and anything depending on
server endpoints that are not deployed. Those are Parts 2 and 3. The manual is
stamped with the application version it describes (23), because an older
installation behaves differently around the toolbar.
Section 7.2 documents the Markers layer behaviour, including that switching it
off yourself will not stick, since that is the part most likely to look like
data loss.
On the two guides: I had said they were stale because they described the removed
Add Location button. That was wrong — neither mentions it, and I asserted it
without checking. What they did need was smaller. Both gain a Related documents
section so the three files read as a set, and the Analyse guide's manual-selection
instruction now says where the Select tool is, which it could not have when it
was written before the toolbar was banded into groups.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contours hillshade layer
- Wired to the new endpoint POST /api/contours/get_by_district.php. It sits in
its own /contours module rather than /spatial_planning, so remotedb gained a
resolveEndpoint() helper: a bare filename still resolves inside
/spatial_planning, a path resolves against the API root. The endpoint also
names the district parameter `districtid` (numeric, no underscore) unlike
every other endpoint, which is an easy trap — documented at the call site.
- Each contour is labelled with its `elev` value. Labels are decluttered
(addGeoJSONLayer gained a declutter passthrough, since OpenLayers only allows
it at construction time) and gated by resolution, so the map shows an
occasional elevation value rather than one per segment.
- Verified against the live endpoint: district 1 returns 2,676 features, 11
elevation values at 10 m intervals, median feature ~50 m. The response uses
the standard {success, data:[…]} envelope; the reader also tolerates a bare
array.
Analyse: fail loudly instead of silently
- Overlays are polygon-only, but line inputs were being filtered out silently,
producing an empty result and the misleading "the layers may not overlap".
They now raise a message naming the geometry actually found and pointing at
Zonal statistics. Union checks each layer separately, so a line layer paired
with a polygon layer can no longer be dropped unnoticed.
- Zonal statistics returns warnings alongside the result — shown in the panel
and written into the Excel workbook — for figures that are valid but easy to
misread: total area over non-polygon inputs (always 0), and mean over line
inputs, which is not an area-weighted average of the surface. The mean
warning is restricted to lines; averaging over points is a normal statistic.
Measurements are read-only
- The Measurements layer carries selectable:false, honoured by both the Select
interaction and box-select. Previously a measured circle showed vertex
handles while the Digitise tool was active, and dragging one reshaped the
measurement: the intersection test followed the new shape while the reported
radius and area did not. Double-click analysis is unaffected — it hit-tests
the map directly rather than going through Select.
- Circle Analysis now reads the radius from the geometry instead of the
`_radius` snapshot taken at draw time, so the reported figure cannot drift
from the area analysed (that figure also feeds the PDF export). The property
is kept but marked as a snapshot, not a source of truth.
Documents
- New Buffer (Circle) tool user guide: the tool is named Circle rather than
Buffer, it takes two clicks rather than a drag, and the analysis only appears
on a double-click — the three things users were getting stuck on.
- New technician training plan: 12 topics over 60 days, derived from the
technologies actually used in this code base, including Docker.
- Analyse guide: elevation per zone from the contours layer, with the
min/max-versus-mean caveat.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>