Leica Geosystems
Release Notes 2026.0.0
Product
Leica LGSx SDK 2026.0.0
Date
July 7, 2026
Developed by
Reality Capture Software Product Management
Important notes
-
The Sensor Info API is stable. However, sensor information is only available when present in the source LGSx file. For existing files, sensor-related fields may be unavailable or return default values.
Changelog
Added
-
Metadata type
MetadataType_DOUBLEARRAYfor arbitrary length double arrays. -
Non-truncating API alternatives for all public functions that previously used fixed-size
wchar_toutput buffers: -
Buffer overflow fixes (critical):
wcscpyreplaced with safe copy in model node and model name handling. -
Pattern C getters (call after MoveNext, before End):
Lgsx_ReaderGetCurrentSetupName(),Lgsx_ReaderGetCurrentTargetLabel(),Lgsx_ReaderGetCurrentSetupCameraName(). -
"2" variants (atomic alternatives):
Lgsx_ReaderMoveNextRun2(),Lgsx_ReaderMoveNextCoordSystems2(),Lgsx_ReaderGetModelNodeInfo2(),Lgsx_ReaderGetModelInfo2(). -
AssetHandle API: new handle type
AssetHandlewithLgsx_ReaderGetGeoTagAssetHandle(),Lgsx_ReaderGetAssetHandle(),Lgsx_AssetRelease(), and gettersLgsx_AssetGetName(),Lgsx_AssetGetType(),Lgsx_AssetGetMimeType(),Lgsx_AssetGetFilename(),Lgsx_AssetGetUrl(),Lgsx_AssetGetGuid(),Lgsx_AssetGetId(),Lgsx_AssetGetCreationTime(),Lgsx_AssetGetModificationTime(),Lgsx_AssetIsExternalUrl(),Lgsx_AssetGetMetadata(),Lgsx_AssetHandleReadImage(),Lgsx_AssetHandleReadBinary(). -
Function-level "2" variants:
Lgsx_WriterGetLastError2(),Lgsx_GetProductVersion2(),Lgsx_ReaderGetLUTImage2(),Lgsx_ReaderGetLUTImageOfSetup2(),Lgsx_ReaderGetSetupCameraImage2(). -
All returned
wchar_t**strings must be freed withLgsxUtil_FreeMem(). All returnedconst wchar_t**strings are read-only and bound to the handle lifetime. -
Lgsx_MetaGetDoubleArraySize()function to query the size of a double array in metadata. -
Lgsx_MetaGetDoubleArray()function to retrieve double array values from metadata. -
Cubemap face index enumeration
CubemapFaceIndex -
Cubemap functions
Lgsx_ReaderGetCubemapImageBytes(),Lgsx_ReaderGetCubemapFaceMetadata(),Lgsx_ReaderGetCubemapMetadata(),Lgsx_ReaderGetCubemapFaceSize(),Lgsx_ReaderGetCubemapMaxLevel(),Lgsx_ReaderGetCubemapImageType(),Lgsx_ReaderGetCubemapImageBytes. -
Lgsx_GetCubemapFaceOrientation()to retrieve the default orientation quaternion for a specific cubemap face. -
LgsxUcsExamplesample application demonstrating User Coordinate System (UCS) functionality. -
LgsxExtractCubemapsExamplesample application demonstrating how to extract cubemap images as bytes, without a need to decode. -
LgsxSetupIndexExamplesample application demonstrating how to read setup index (PM_SETUPIDX) from point data and count points per setup, with subsampling support. -
Lgsx_ReaderEndTargets()added to finish target enumeration. -
Lgsx_ReaderEndGeoTags()added to finish geotag enumeration. -
Lgsx_ReaderEndSitemaps()added to finish sitemap enumeration. -
Lgsx_ReaderEndAssets()added to finish asset enumeration. -
Lgsx_ReaderEndSetupCameras()added to finish setup camera enumeration. -
Lgsx_ReaderEndCoordSystems()added to finish coordinate system enumeration. -
GeotagAnchorTypetype added. -
Lgsx_GeoTagGetId()added for the handle-based GeoTag API. -
Handle-based sitemap API with new types
SitemapHandle,SitemapItemHandle,SitemapItemType,SitemapImageType, andCYSITEMAPIMAGECORNERS2D: -
Enumeration:
Lgsx_ReaderEnumSitemaps(),Lgsx_ReaderGetSitemapHandle(),Lgsx_ReaderEndSitemaps(),Lgsx_SitemapRelease(). -
Per-sitemap accessors:
Lgsx_SitemapGetId(),Lgsx_SitemapGetGuid(),Lgsx_SitemapGetName(),Lgsx_SitemapGetOrderingIndex(),Lgsx_SitemapGetIsMaster(),Lgsx_SitemapGetMetadata(),Lgsx_SitemapGetActiveCoordSystemId(). -
Per-item accessors:
Lgsx_SitemapEnumItems(),Lgsx_SitemapGetItem(),Lgsx_SitemapItemGetId(),Lgsx_SitemapItemGetType(),Lgsx_SitemapItemGetGuid(),Lgsx_SitemapItemGetPose(). -
Per-image accessors:
Lgsx_SitemapHasImage(),Lgsx_SitemapImageGetHandle(),Lgsx_SitemapImageGetMetadata(),Lgsx_SitemapImageRead(),Lgsx_SitemapImageReadBinary(),Lgsx_SitemapImageGetIsBlank(),Lgsx_SitemapImageGetCorners(). -
UCS accessors for current coordinate system during enumeration:
Lgsx_ReaderGetCurrentCoordSystemId(),Lgsx_ReaderGetCurrentCoordSystemGuid(). -
Lgsx_AssetHandleReadImageBinary()reads raw encoded image bytes (jpg/png/jxr) from anyAssetHandle, stripping SDK metadata. The caller can verify the asset is an image beforehand usingLgsx_AssetGetMimeType(). -
LgsxExtractSitemapsExamplesample application demonstrating sitemap enumeration, sitemap item inspection, and decoded sitemap image extraction. -
Field
poseadded toCYTRAJECTORYINFO. -
Lgsx_ReaderRunGetGuid()function to get run GUID. -
Point cloud file-like access API:
Lgsx_ReaderPointCloudFileOpen(),Lgsx_PointCloudFileClose(),Lgsx_PointCloudFileGetSize(),Lgsx_PointCloudFileRead(),PointCloudFileHandle. -
EnumPointsConfigHandleand associated functions (Lgsx_InitEnumPointsConfig(),Lgsx_ReleaseEnumPointsConfig(), setters) provide a handle-based configuration for point enumeration—including an optional memory-hint to limit reader memory usage. -
Lgsx_ReaderEnumPointsEx2()now accepts anEnumPointsConfigHandleinstead of individual parameters, enabling future extension without signature changes. -
Lgsx_MetaIsEmpty()function to check if a metadata object contains any entries. -
SensorInfo handle type
SensorInfoHandleand functionsLgsx_ReaderHasSetupSensorInfo(),Lgsx_ReaderGetSetupSensorInfo(),Lgsx_SensorInfoGetGuid(),Lgsx_SensorInfoGetDeviceInfoCaptureTime(),Lgsx_SensorInfoGetManufacturer(),Lgsx_SensorInfoGetScannerType(),Lgsx_SensorInfoGetSerialNumber(),Lgsx_SensorInfoGetArticleNumber(),Lgsx_SensorInfoGetHardwareVersion(),Lgsx_SensorInfoGetFirmwareVersion(),Lgsx_SensorInfoGetDeviceInfoSnapshot(),Lgsx_SensorInfoRelease()to handle sensor info associated with setup. -
ProcessingInfo handle type
ProcessingInfoHandleand functionsLgsx_ReaderEnumSetupProcessingInfos(),Lgsx_ReaderGetSetupProcessingInfo(),Lgsx_ProcessingInfoRelease(),Lgsx_ProcessingInfoGetGuid(),Lgsx_ProcessingInfoGetProcessingTimestamp(),Lgsx_ProcessingInfoGetAppName(),Lgsx_ProcessingInfoGetAppVersion(),Lgsx_ProcessingInfoHasLibraryVersion(),Lgsx_ProcessingInfoGetLibraryVersion(),Lgsx_ProcessingInfoGetOrderIndex(),Lgsx_ProcessingInfoGetPipelineInfo()to handle processing info associated with setup. -
Run-level SensorInfo functions
Lgsx_ReaderHasRunSensorInfo(),Lgsx_ReaderGetRunSensorInfo()to access sensor info through the current run's phantom setup. -
Run-level ProcessingInfo functions
Lgsx_ReaderEnumRunProcessingInfos(),Lgsx_ReaderGetRunProcessingInfo()to access processing info through the current run's phantom setup. -
Scan handle type
ScanHandleand functionsLgsx_ReaderEnumSetupScans(),Lgsx_ReaderGetSetupScan(),Lgsx_ScanRelease(),Lgsx_ScanGetGuid(),Lgsx_ScanGetScanType(),Lgsx_ScanGetScanRole(),Lgsx_ScanGetPointCount(),Lgsx_ScanGetCreationTimestamp(),Lgsx_ScanGetModificationTimestamp(),Lgsx_ScanHasWindow(),Lgsx_ScanGetWindowMinAzimuth(),Lgsx_ScanGetWindowMinElevation(),Lgsx_ScanGetWindowMaxAzimuth(),Lgsx_ScanGetWindowMaxElevation(),Lgsx_ScanGetCaptureTimestamp(),Lgsx_ScanGetScanDensity(),Lgsx_ScanGetCaptureInfoSnapshot()to access scan metadata (type, role, point count, window, capture info) per setup. -
Run-level Scan functions
Lgsx_ReaderEnumRunScans(),Lgsx_ReaderGetRunScan()to access scans through the current run's phantom setup. -
LgsxSensorProcessingInfoExamplesample application demonstrating how to read SensorInfo and ProcessingInfo data associated with setups and runs. -
String conversion utility functions for safer UTF conversion: bounded-buffer variants
LgsxUtil_A2WEx()andLgsxUtil_W2AEx()add explicit output-size parameters for UTF-8/UTF-16 conversion, and allocating variantsLgsxUtil_AllocA2W()andLgsxUtil_AllocW2A()allocate the required output buffer and return it to the caller. Buffers returned by the allocating variants must be freed usingLgsxUtil_FreeMem().
Changed
-
Lgsx_SitemapImageGetCorners()extended with automatic fixes of corner positions, controlled by flags (pFlagsparameter). -
SDK sample applications were refactored from one monolithic reader example into focused reader examples (
LgsxProjectInfoExample,LgsxSetupsExample,LgsxRunsExample,LgsxPointCloudExample,LgsxGeoTagsExample,LgsxAssetsExample,LgsxTargetsExample, andLgsxSitemapsExample).LgsxUcsExampleandLgsxSetupIndexExampleremain cohesive advanced examples. Package verification scripts, test package execution, and getting-started sample indexing were updated accordingly. -
Lgsx_ReaderGetProjectInfo()no longer fails if project thumbnail is missing. -
Sitemap API replaced: the experimental cursor-based functions and structs have been removed (see Removed) and replaced by the handle-based sitemap API (see Added).
-
Lgsx_GeoTagGetSetupIndex()renamed toLgsx_GeoTagGetAnchor()and extended, as the name was misleading and not providing all required info. -
WinDllExport.hppreplaced byLgsxExport.h(export macros) andLgsxPlatform.h(platform types). Update includes accordingly. -
LinearAlgebra.hrenamed toLinearAlgebra.hpp. -
All public C headers (
.h) are now valid C11. Struct and enum declarations usetypedefform.PROPERTY_NAME_LENGTHis now a#define. -
LgsxPlatform.his now a pure C header; C++ standard library includes are no longer provided transitively. -
M3DPinholeDistortionenum extracted fromM3DPINHOLEstruct and renamed toM3DPINHOLEDISTORTION. Enum values renamed withM3DPINHOLEDISTORTION_prefix: e.g.distortionK1->M3DPINHOLEDISTORTION_K1,distortionElements->M3DPINHOLEDISTORTION_COUNT.
Removed
-
Deprecated cursor-based sitemap functions:
Lgsx_ReaderMoveNextSitemap(),Lgsx_ReaderMoveNextSitemapImage(),Lgsx_ReaderMoveNextSiteMapImage(),Lgsx_ReaderGetSitemap(),Lgsx_ReaderGetSitemapImage(),Lgsx_ReaderEnumSitemapItems(),Lgsx_ReaderEndSitemapItems(),Lgsx_ReaderMoveNextSitemapItem(). Use the handle-based sitemap API instead. -
Deprecated structs
CYSITEMAPandCYSITEMAPIMAGE. The handle-based API returns individual fields via dedicated getters.
Fixed
-
Lgsx_ReaderGetAssetHandle()now keeps at most one temp file on disk at a time and returns a non-zero error code on extraction failure. More information in documentation forLgsx_ReaderGetAssetHandle(). -
Lgsx_ReaderEnumPointsEx()now correctly honors thesubSampleparameter for point cloud subsampling. -
Lgsx_ReaderEnumTarget()follows the documentation and returns targets for the whole project and not just for current setup. -
Lgsx_ReaderEnumTargetOfSetup()does not require the setup to be in currently enumerated setup list. -
Lgsx_ReaderEnumGeoTags()no longer requires prior enumeration of setups and is no longer affected by stage of the setup enumeration. -
Lgsx_ReaderEnumGeoTagsOfSetup()no longer requires prior enumeration of setups and is no longer affected by context of the setup enumeration. -
Lgsx_ReaderEnumGeoTagsOfSetup()documentation was clarified that it returns geotags visible or related to setup, not attached to setup. -
Lgsx_ReaderEnumSetupCamera()documentation was clarified, that it returns cameras for current setup in enumeration and not in the project. -
Lgsx_ReaderGetLUTImage()andLgsx_ReaderGetLUTImageOfSetup()documentation corrected:typeNameis an output parameter (the SDK writes the type name into the caller-provided buffer), not an input. The stale "no workaround" warnings were updated to referenceLgsx_ReaderGetLUTImage2()andLgsx_ReaderGetLUTImageOfSetup2()respectively. -
Multiple documentation fixes across public headers: corrected parameter directions, removed phantom entries referencing non-existent parameters, and fixed recurring typos.
-
GUID contract clarification in API documentation: GUID-returning getters may return an empty string when a source object has no persisted GUID (including
Lgsx_AssetGetGuid(),Lgsx_GeoTagGetGuid(),Lgsx_ReaderGetSetupGuid(), andLgsx_ReaderRunGetGuid()).
Additional Notes
Existing owners of LGS files will need to convert them to the LGSx format before opening or importing the LGSx content. The Leica LGS Converter Tool is available online (free of charge without any license).
Packaging
-
Windows Package (ZIP) - Made for Windows 10 and 11 (64-bit) using Visual Studio 2022 (19.43.34809.0).
-
Linux Package (TGZ) - Made for Ubuntu 22.04 LTS version (available on the Microsoft App Store) using gcc11.
Both packages include all applicable libraries, header and source files, sample programs, LGSx dataset, documentation (release notes, API documentation, Getting Started Guide).
Only the new LGSx format is supported. LGSx allows access to HSPC point clouds and other datasets.
The latest documentation is available on the Reality Capture SDK site.
Licensing
The LGSx SDK is available only to partners who have signed up for the Geosystems Partners Network (GPN).
A developer license key will be provided to enable the API, allowing Licensee developers to access the available functionality. The developer key must not be distributed with the integrated product.
A deployment license key will be provided to enable the API in the distributed integrated product.
The Licensee must have the LGSx SDK installed to start coding against the API.
Questions or Comments? Contact LGSx SDK Support
Copyright (c) 2026, Leica Geosystems, Inc.