Skip to content

Releases: ObjectVision/GeoDMS

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

GeoDms 20.1.0

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 11 Jun 18:00
Immutable release. Only release title and notes can be modified.

GeoDms 20.1.0's headline is first-class Linux support: the GeoDMS engine and the Qt GUI now build and run natively on Linux, distributed as a .deb package and a portable tarball alongside the Windows installers. This release also brings a UTF-8 overhaul across all modules, several map/table-view improvements, a first-class pow operator, and a refreshed dependency baseline.

Builds are provided at the same source revision in three flavors:

Flavor Platform Asset
.m Windows x64 (MSBuild) GeoDms20.1.0.m-Setup-x64.exe
.c Windows x64 (CMake) GeoDms20.1.0.c-Setup-x64.exe
.l Linux x64 (WSL / Ubuntu 24.04) GeoDms20.1.0.l-linux-x64.deb (+ .tar.gz)

🐧 Linux support (new)

  • GeoDmsRun and the GeoDmsGuiQt GUI now run on Linux (built under WSL/Ubuntu, Qt 6), shipped as a .deb and a portable tarball.
  • Completed the narrow → wide (UTF-8) migration: shv and every module now build as Unicode, and the Windows executables embed a UTF-8 active-code-page manifest, so paths and text behave consistently across platforms.
  • Fixed a Linux GUI exit segfault during window teardown (OnStatusText dereferencing an already-cleared main window).
  • Known issue: some Qt libraries are missing in the Linux install; they will be included in a next version. This might only affect the workings of GeoDmsGuiQt, not GeoDmsRun. Workaround: Install Qt version 6.4. See #1137

🗺️ Map & table views

  • WMS/WMTS legends (#405): the map-view layer control can now fetch and display a remote legend image.
  • Name disambiguation (#418, #620): view captions and value-info panels qualify non-distinct item names so duplicates are distinguishable.
  • Focus highlight (#1039): the focused MapView/TableView is marked with a clear magenta highlight.
  • Single-point zoom (#374): opening a single point no longer over-zooms.
  • Multi-column resize (#1121): pooled column-width resizing across a multi-column selection.
  • Fixed a duplicated column when activating a container (#1122).
  • Window position and size are now persisted between sessions.

➗ Operators & calculation

  • pow / ^ is now a first-class operator (#839) instead of being rewritten as exp(b·log(a)) — correct results for integer, negative, and zero bases, with less precision loss.
  • Fixed a conversion regression (#1098).
  • Fixed grid-range upper-bound clamping on large grids (unsigned rounding past 32767).
  • StorageTileSizeXPropDef = 0 on non-storage-holders is no longer treated as an error.
  • Clearer NetCDF diagnostic when a raster band is missing.

⚡ Performance & stability

  • #933: storage reads no longer block worker threads on a storage manager's critical section, improving throughput on storage-heavy models.

🔧 Build & dependencies

  • Upgraded the vcpkg baseline to 2026.05.25 — boost 1.91, GDAL 3.12, CGAL 6.1, PROJ 9.8 — via an in-repo vcpkg submodule that auto-bootstraps on a fresh checkout (both MSBuild and CMake).
  • Pinned the toolchain to MSVC 14.50.35717 to avoid a GEOS miscompile in 14.51 that caused buffer-operation crashes.
  • Corrected PROJ/GDAL data deployment so PROJ 9.8 ships a current proj.db.
  • Packaging fixes (ship tinyxml2.dll; drop stale uriparser/vcpkg DLL references) and a large build-warning cleanup.

Verifying the Linux download

sha256sum -c GeoDms20.1.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.0.4...v20.1.0

Known regresssion in the connect operator that is now multi-treaded but has a sorting issue in this version. Has been resolved for the next release: see #1138

Test results

https://geodms.nl/tests/reports/20_1_0_c___17_9_2.html
https://geodms.nl/tests/reports/20_1_0_m___17_9_2.html
See https://github.com/ObjectVision/GeoDMS/wiki/Full-test for context

GeoDms 20.0.4

GeoDms 20.0.4 Pre-release
Pre-release

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 02 Jun 11:21
Immutable release. Only release title and notes can be modified.

Public pre-release of the 20.0.4 line with three installer flavors:

  • Windows CMake (.c) flavor — GeoDms20.0.4.c-Setup-x64.exe
  • Linux/WSL (.l) — signed .deb + .tar.gz
  • Windows MSBuild (.m) — GeoDms20.0.4.m-Setup-x64.exe, available for comparison with the .c flavor; may be phased out to reduce the number of build tools.

Same source, three build paths — pick whichever matches your workflow.

This release supersedes and retracts 20.0.0c; its release notes are folded in below so nothing is lost.

For installation steps see the wiki:

Linux-only verification of the signed .tar.gz is documented in nsi/VERIFY-LINUX.md.

What's new since v20.0.0c

Security / hardening

  • GDAL + DLL search path hardened against config-driven RCE
  • LastConfigFile: validate the registry path before silent auto-load, and confirm before reopening on startup
  • ConfigFileName: cap #include nesting depth at 64; FS-aware path compare for include-recursion detection

Storage (#1098, #1106)

  • ReadUnitRange now defines StorageManager-determined unit ranges using the block size the external file actually has (tif and gdal.grid)
  • Expose native TIFF tile/strip size as StorageTileSizeX/Y
  • gdal_base: register user-specified GDAL_DRIVER on the read path (#1106)

GUI

  • #946 indirect StorageName components are now clickable
  • #621 F2 traces the error through FenceContainer
  • #1112 fix in-cell editing regression in PaletteEditor / TableView
  • #1093 MultiPointLayer: PointCount column + sequence_element_count operator
  • #212 square symbol support
  • #1109 tooltip values capped at 400 characters
  • #1100 follow-ups: ScrollDevice no longer blanks the MapView on pan; XOR-mode line/polygon carets with redraw bracketing and resize/straddle artifact fixes
  • #1113 refactor suitability-map retrieval and error handling
  • GridLayer: restore SRCAND blit so white pixels keep underlying layers visible
  • Restore treeview / detail-pages width after a window squeeze
  • layercontrol length-attribute fix
  • Reject out-of-envelope ROI; harden Round.h against NaN / out-of-range input

Correctness / threading

  • Reverted the experimental post-order supplier-DAG drain (Actor::SuspendibleUpdate / UpdateMetaInfo, FuncDC R2 phases) that caused worker-pool starvation; kept the stack-safety refactors that convert deep recursion to explicit worklists
  • tile_task_group: keep the CheckThis sum-vs-counter invariant in bulk-completion paths
  • Catch exceptions before they propagate to Qt; richer context when a DmsException is thrown
  • Fixed #1108, #1110, #1111, #1114, #1115

Windows integration

  • #499 GeoDMS installs now register in Windows Apps & Features

Build & release

  • windeployqt: use --translationdir (not --translations)
  • Build-staleness guard switched from empty FileVersion metadata to an mtime check; cmake (.c) guard checks DmRtc.dll (always relinked) to avoid a false abort when ABI-unchanged dependents skip relink

Linux

  • -Wl,-z,stack-size=67108864 for GeoDmsRun and GeoDmsGuiQt
  • Longer regression time-out for t641 under WSL

What's new since v19.3.0 (carried over from the retracted 20.0.0c)

Cross-platform / Linux port

  • Full Linux/WSL2 build via CMake + Qt 6 (linux-x64-release / linux-x64-debug presets)
  • New flavor-suffixed install layout (GeoDms<ver>.{m,c,l}) so all three can coexist
  • Unit test suite (TestLinuxDebugUnit.sh, TestLinuxReleaseUnit.sh) and Linux regression harness (full.py -version local-linux-release)

GUI (#1100)

  • Bold table-header text, 1-px padding fix in DataItemColumn; correct row-height unit in tabular controls
  • dmsscript: BringToFront keyword to raise the GUI in Z-order

Filesystem & Unicode (#1101)

  • Three-pass UTF-8 → wide-char audit across Windows filesystem calls (incl. IsFileOrDirWritable_waccess)
  • Linux ConvertDmsFileName lexically normalises .. so includes through .dms-stem subdirs work cross-platform

Correctness (other)

  • #1103 / #462 lookup: propagate V::UNDEFINED through merged-unsigned proxy — fixes the 407K-row BAG snapshot regression where IPoint NULLs leaked as (-1, -1)
  • #1102 IsMainThread()IsMetaThread() sweep across rtc/tic/stx/sym/clc/stg
  • connect: fix dangling SA_Reference from temporary SA_Iterator
  • stg/shp: ShpHeader / ShpRecordHeader / ShpPolygonHeader long → Int32
  • qtgui: construct QApplication before the try block
  • UnifyValues regression fix (bee4cd22, 6c421f66)

Performance / memory

  • rtc/FixedAlloc: drop power-of-2 guard from SpecialSize
  • stg/tic: expose native GDAL block size as StorageTileSizeX/Y props

CLI ergonomics

  • GeoDmsRun / GeoDmsGuiQt: unknown command-line options are diagnosed (Windows /<x>, Linux -<x>) instead of silently treated as a config-file name
  • StxInterface: Cannot open configuration file '<path>'. error now also reports the CWD

Build & release

  • nsi/GeoDmsVersion.cmd — single source for MAJOR.MINOR.PATCH, shared across the three BuildSignAndCreateSetup{,Cmake,Linux}.bat scripts
  • DMS_PLATFORM title-bar tag distinguishes cmake vs msbuild builds
  • Signed .deb + .tar.gz produced via PowerShell SignedCms; verification recipe in VERIFY-LINUX.md

Known issues

  • The .m setup in this release was built from 193fc052 (the 20.0.4 version bump), one commit before the windeployqt --translationdir fix; its bundled Qt translations layout differs cosmetically from .c. The .m is provided only for comparison.
  • Linux regression: t641_* (RSopen MakeBaseData / Variant / Allocatie) needs WSL memory ≥ 64 GB; on smaller VMs they OOM. Native Linux is unaffected.
  • Profiler bokeh series flat-lines for the .l flavor (#1104) — cosmetic; test status is still correct.
  • Python binding version matching (#1105) — .m geodms.pyd links Python 3.13, .c links Python 3.12, no runtime is bundled. Users supply their own matching Python.

Full changelog

v19.3.0...v20.0.4

GeoDms 19.3.0

GeoDms 19.3.0 Pre-release
Pre-release

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 03 Apr 10:19
Immutable release. Only release title and notes can be modified.

Known isssue: #1103, don't use this version.

Full Changelog: v19.0.0...v19.3.0

https://github.com/ObjectVision/GeoDMS/milestone/73?closed=1
https://github.com/ObjectVision/GeoDMS/milestone/72?closed=1
https://github.com/ObjectVision/GeoDMS/milestone/70?closed=1
https://github.com/ObjectVision/GeoDMS/milestone/69?closed=1
https://github.com/ObjectVision/GeoDMS/milestone/68?closed=1

What's Changed

Ctrl+Shift+F for finding Items by name

Maintenance

  • V17 #928 #934
  • refactored clc code for rlookup, classify, lookup, and operconv.

New Contributors

Full Changelog: https://github.com/ObjectVision/GeoDMS/commits/v19.3.0

GeoDms 19.2.0b

GeoDms 19.2.0b Pre-release
Pre-release

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 30 Mar 16:29
Immutable release. Only release title and notes can be modified.

Known isssue: #1103, don't use this version.

Full Changelog: v19.1.0...v19.2.0b

GeoDms 19.1.0

GeoDms 19.1.0 Pre-release
Pre-release

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 04 Mar 19:42
Immutable release. Only release title and notes can be modified.

Known isssue: #1103, don't use this version.

Fully implemented Tooltips, see #740
Fixed hanging large calculations due to skipping a tile_task when suspending, see #1070

Test results

https://geodms.nl/tests/reports/19_1_0___17_9_2.html Now also Hestia is included in the release testing, including performance results.
See https://github.com/ObjectVision/GeoDMS/wiki/Full-test for context

Full Changelog: v19.0.3...v19.1.0

v19.0.3

v19.0.3 Pre-release
Pre-release

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 02 Mar 13:31

Full Changelog: v19.0.2...v19.0.3

New feature: Tooltips on TextControls, TableView text, Layered Features, and raster data, see #740
Experimental solution for: pbl-nl/model-RSopen#18

https://github.com/ObjectVision/GeoDMS/milestone/72

v19.0.2

v19.0.2 Pre-release
Pre-release

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 17 Feb 16:45

GeoDms 19.0.0

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 05 Feb 16:17

Compiled with Visual Studio 2026.

In this major release, all ambiguous syntax for points with 2 coordinates are obsolete, i.e. no longer supported.
In calculation rules, use either point_xy or point_yx In data blocks, use xy(...) or yx(...).

Furthermore, the internal object inheritance structure has been adapted, and the reference counting mechanism has been updated to better differentiate between unique ownership, and duplication of shared ownership that blocks the further non-concurrent mutability. DataView and GraphicObject are no longer (indirectly) derived from SharedObj and therefore don't have an unused and ambivalent m_RefCount member as their lifetime is managed by std::shared_ptr's

Refix of #976
Fixed #1058

Test results

https://geodms.nl/tests/reports/19_0_0___17_9_2.html Now also Hestia is included in the release testing, including performance results. Hestia will be green in these test results in a near future version after setting and checking reference results, See ObjectVision/GeoDMS-Test#16
See https://github.com/ObjectVision/GeoDMS/wiki/Full-test for context

Full Changelog: v18.2.2...v19.0.0.b

v18.2.2

v18.2.2 Pre-release
Pre-release

Choose a tag to compare

@MaartenHilferink MaartenHilferink released this 22 Dec 09:34