GeoDms 20.3.0
Immutable
release. Only release title and notes can be modified.
GeoDms 20.3.0's headline is interactive view rotation and tilt in the MapView — the map can now be yawed and tilted into an oblique / perspective view, with horizon-aware rendering across raster, WMS background, polygon, arc and graticule layers, plus OGR Parquet/Arrow/Feather support.
This release also a new interactive Chart view (#75), template-driven editor presets, a routing/connectivity fix, operator improvements, a self-contained Linux package, and a large Linux/GCC warning cleanup. The sections below cover everything since 20.1.0.
Builds are provided at the same source revision in three flavors:
| Flavor | Platform | Asset |
|---|---|---|
.m |
Windows x64 (MSBuild) | GeoDms20.3.0.m-Setup-x64.exe |
.c |
Windows x64 (CMake) | GeoDms20.3.0.c-Setup-x64.exe |
.l |
Linux x64 (WSL / Ubuntu 24.04) | GeoDms20.3.0.l-linux-x64.deb (+ .tar.gz) |
🗺️ Map view: rotation & tilt (new)
- View rotation (yaw) and tilt end-to-end: the MapView can be rotated and tilted into an oblique / perspective projection (yaw direction matches the Google-Maps feel; tilt clamped to 0–75°, no negative tilt or upside-down flip).
- Rotated rasters: rotated raster georeferences are parsed into a projective coordinate transformation, and a new
DrawImageTransformedprimitive blits rotated/tilted raster tiles. - Horizon-aware rendering under tilt so nothing above the horizon renders as an artifact: polygon fills and borders, arcs, feature layers, the graticule and WMS background tiles are all horizon-clipped — fixing "UFOs" in the sky, the foreground being cut off, fills ballooning into slabs, and stray outline lines.
- WMS background under rotation/tilt: counter-rotation, white-seam, tile-enumeration and pan-follow fixes so the background stays aligned with the foreground.
📊 Chart view (#75, new)
- New Chart data view with a histogram mode and a series mode.
- Series layers: scatter and line rendering via a dedicated
ChartLayer, with thematic colouring and menu synchronisation. - Bar mode: bar draw mode with an X-axis picker, a categorical X axis, and side-by-side grouped bars for multiple bar layers.
🖱️ View & interaction
- Reactivating a layer in the Layer Control now redraws immediately.
- Fixed MapView keyboard-focus drift after app re-activation / view switch.
- Fixed pan corrupting tilted views (full repaint when the scroll is not a pure translation).
➗ Operators, storage & calculation
- GDAL (#1142):
.parquet/.arrow/.featherextensions now map to the OGR Parquet / Arrow drivers. connect/ routing (#1138, #1136, #793): fixed a cut sort-key regression from the #793 parallelization that silently disconnected split road segments (severing origins and destinations from the routed network and diverging the land-use output); connectivity now matches the pre-#793 results.area/arc_length(#1119) now convert the result to the requested unit and gain a unary auto-derive form.
Value Composition: arc, polygon, multi_point
points2arc,points2polygon, andpoints2multi_pointvariants ofpoints2sequence.- depreciation warnings when value composition is different than expected in various functions.
geos_buffer(#1038) dispatches on argumentValueComposition;recollect_by_condnow warns when its 2nd/3rd arguments have a mismatchedValueComposition.
⚡ Stability
WmsLayer::Drawis now suspendible/resumable (ResumableCounter port) making MapView navigation faster- #1126: dropped a false-positive DeadLock detection in
lock_shared.
🐧 Linux & build
- Self-contained Linux package (#1137) — the
.lsetup now bundles the Qt6 runtime (with rpath$ORIGIN), so the GUI runs on machines without a system Qt6 install (e.g. headless servers). - GCC/Linux warning cleanup — the Linux/CMake build's warning surface was cut ~67k → ~450 with no behavior change. A handful of latent bugs were fixed along the way: a
delete[]of avoid*(UB), a pointer-vs-string-literal comparison, a 16-bit truncation when printing aULONG, a1 << 63shift-count overflow, and an always-falseIsInTrans(). - #1133: the
/Llog now carries explicit severity + category tags; the profiler parses both the tagged and the legacy log formats. - The executable now self-determines its exe-root directory, and Help/About reports the running executable.
- Build housekeeping: project-local vcpkg MSBuild integration,
CONFIGURE_DEPENDSon CMake source/header globs, de-hardcoded repo-root paths in build/test scripts, LOC tooling, version/buildstamp headers generated once per build session, restored vcpkg runtime DLLs on a no-relink incremental MSBuild, and aCLAUDE.mdbuild/run policy.
Verifying the Linux download
sha256sum -c GeoDms20.3.0.l-linux-x64.tar.gz.sha256
The accompanying .p7s is a detached SHA-256 signature of the checksum file (GlobalSign EV).
Full Changelog: v20.1.0...v20.3.0