Skip to content

GeoDms 20.3.0

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 21 Jun 23:33
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 DrawImageTransformed primitive 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 / .feather extensions 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, and points2multi_point variants of points2sequence.
  • depreciation warnings when value composition is different than expected in various functions.
  • geos_buffer (#1038) dispatches on argument ValueComposition;
  • recollect_by_cond now warns when its 2nd/3rd arguments have a mismatched ValueComposition.

⚡ Stability

  • WmsLayer::Draw is 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 .l setup 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 a void* (UB), a pointer-vs-string-literal comparison, a 16-bit truncation when printing a ULONG, a 1 << 63 shift-count overflow, and an always-false IsInTrans().
  • #1133: the /L log 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_DEPENDS on 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 a CLAUDE.md build/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

https://geodms.nl/tests/reports/20_3_0_m___16_0_5.html