2023.1.03

ImprovementLuciadCPillar

LCP-665
It is now possible to call Feature::getValueFeature::getValueFeature::getValue with a more specific geometry type as type parameter.

Bug fixLuciadCPillar

LCP-756
After a map's renderer has been destroyed, adding, removing or moving a layer caused a crash as soon as a new renderer was created for the map.

Bug fixLuciadCPillar

LCP-749
Fixed an issue where the raster layer data extent that is shown when zoomed out far covers an area larger than the model data bounds.

2023.1

2023.1.02

ImprovementLuciadCPillar

LCP-752
The ObservableObservableObservable class can now be used with all geometry types instead of only a subset.

ImprovementLuciadCPillar

LCP-752
The ObservableGeometryUtilObservableGeometryUtilObservableGeometryUtil class now has methods to derive observables for all geometry types. The ObservableBezierCurveUtilObservableBezierCurveUtilObservableBezierCurveUtil was also added. This class can derive observable instance for each point that defines a bezier curve.

ImprovementLuciadCPillar

LCP-742
Support for sparse WMTS raster layers, i.e., WMTS raster layers with a tile-set structure characterized by missing tiles along the tile pyramid, has been improved. LuciadCPillar now allows tiles of higher zoom levels to be displayed even if parent tiles of lower zooms level are unavailable.

ImprovementLuciadCPillar

LCP-635, LCP-613
Improved visualization performance for raster layers characterized by a highly irregular tile pyramid.

Bug fixLuciadCPillar

LCP-721
The default value of MgrsGridSetting::Builder::labelStyleMgrsGridSetting::Builder::labelStyleMgrsGridSetting::Builder::labelStyle has been made consistent with the styling of the default grid: it now uses a black halo by default instead of no halo.

Bug fixLuciadCPillar

LCP-717
The throughput of adding new features with point geometries on the map has been improved by 10%-20%.

Bug fixLuciadCPillar

LCP-748
When using a WKT string as input, CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider is now more flexible in accepting parameter names for the projection center.

Bug fixLuciadCPillar

LCP-736
Fixed a possible invalid memory access when loading 3D OGC Tiles.

Bug fixLuciadCPillar

Fixed a crash when using a WMS or WMTS server that returns a response with status code 200, but with an empty body.

Upgrade considerationLuciadCPillar

LCP-710, LCP-712

A couple of methods now use double values instead of integer values:

This was done to avoid precision loss due to rounding errors. In rare cases, this precision loss could lead to incorrect behavior like:

  • map-wide jittering effects
  • a (small) black border at the side of the map
  • the map content being stretched out very slightly

Upgrade considerationLuciadCPillar

LCP-737
The boost library has been updated to version 1.83.0.

2023.1.01

ImprovementLuciadCPillar

You can now use BASED_ON_DATA as a new FacetCullingTypeFacetCullingTypeFacetCullingType when you are styling mesh data for a TileSet3DLayerTileSet3DLayerTileSet3DLayer. You can use it if you are unsure about the face culling type or if you are using a 3D Tiles set that uses GLTF version 2, or if you are mixing double-sided and non-double-sided material.

ImprovementLuciadCPillar

LCP-701

The precision of WKT and EPSG references that use an ellipsoidal version of the Lambert azimuthal equal area projection has been improved. This affects the following EPSG codes:

  • 3035
  • 3571 to 3576
  • 5633, 5635, 5636, 5638
  • 6931, 6932
  • 9039
  • 9947

Bug fixLuciadCPillar

LCP-716
FeatureLayerFeatureLayerFeatureLayer: fixed an issue that could cause a double free error on application exit when lines are visualized on the map.

Bug fixLuciadCPillar

LCP-718
GeoPackage IFeatureModelIFeatureModelIFeatureModels persistenceManager::getChanges now gives the actual changes instead of an empty list.

Bug fixLuciadCPillar

LCP-660

The C# WinForms and WPF integration code has been improved to more easily support scenarios where a Map is removed from the application window, and moved to a different component in that same application window. An example of such a scenario is when the WinForms or WPF Map components are used within a docking UI framework.

Before this improvement, this would either cause crashes or the map component would not paint its Map content anymore.

Bug fixLuciadCPillar

LCP-730

Bug fixLuciadCPillar

LCP-715
Fixed a potential crash when a IFeatureModelIFeatureModelIFeatureModel's observer is called right before or while a Map::RendererMap::RendererMap::Renderer is destroyed.

Bug fixLuciadCPillar

LCP-707
Draped geometries that are defined using a geocentric reference (for example EPSG:4978) were displayed at a wrong location, or not at all.

Bug fixLuciadCPillar

LCP-706
Invalid memory reads could occur while removing features from the map.

Upgrade considerationLuciadCPillar

LuciadCPillar now depends on the myVRArchive library. This new dependency requires no code changes.

2023.1

New featureLuciadCPillar

You can now add a LonLat grid to a map. This new feature is demonstrated in the samples. For more information, read the LonLatGridLonLatGridLonLatGrid API documentation and see the LonLat Grid article.

New featureLuciadCPillar

You can now add a MGRS grid to a map. This new feature is demonstrated in the "Symbology" sample. For more information, read the MgrsGridMgrsGridMgrsGrid API documentation and see the MGRS Grid article.

New featureLuciadCPillar

ComplexStrokeLineStyleComplexStrokeLineStyleComplexStrokeLineStyle API has been added and FeatureCanvas::GeometryDrawCommandFeatureCanvas::GeometryDrawCommandFeatureCanvas::GeometryDrawCommand has been extended to accept it. Using this, you can stroke a line with repeated patterns and decorations. They can also be used for editor lines and RasterLayerRasterLayerRasterLayer outlines. See ComplexStrokePatternFactoryComplexStrokePatternFactoryComplexStrokePatternFactory for an overview of available patterns. See the complex stroke tutorial for a step-by-step guide.

New featureLuciadCPillar

MgrsFormatMgrsFormatMgrsFormat has been added which allows to format geodetic points to MGRS UTM/UPS coordinates. It can also be used to parse MGRS UTM/UPS coordinates to a geodetic point. See the MGRS Grid article for more information.

New featureLuciadCPillar

It is now possible to create 3D icons from glTF files in LuciadCPillar by using the FeatureCanvas::drawIcon3DFeatureCanvas::drawIcon3DFeatureCanvas::drawIcon3D method. FeatureCanvas::Icon3DDrawCommandFeatureCanvas::Icon3DDrawCommandFeatureCanvas::Icon3DDrawCommand allows you to set the glTF source file to load as well as other properties such as transformations: scale, rotation, orientation and translation. As well as color modulation, mesh position, query-ability of the mesh and a setting to tell if the mesh contains transparent surfaces.

The camera sample demonstrates how to import a glTF file. This information can also be found in the article Learn how to load and visualize your glTF data.
For information about the limitation of our glTF support in LuciadCPillar please refer to the article Which glTF version is supported and what are the limitations?.

New featureLuciadCPillar

Decoded GeoPackages can now be edited. To get an editable GeoPackage from the GeoPackageModelDecoderGeoPackageModelDecoderGeoPackageModelDecoder the isEditable flag in the GeoPackageModelDecoderOptionsGeoPackageModelDecoderOptionsGeoPackageModelDecoderOptions needs to be set to true. To save the changes made to an edited GeoPackage, the IFeatureModelIFeatureModelIFeatureModel's FeatureModelPersistenceManagerFeatureModelPersistenceManagerFeatureModelPersistenceManager needs to be used. See the GeoPackage feature editing article for more information.

New featureLuciadCPillar

It is now possible to customize the style of raster data by means of the new RasterStyleRasterStyleRasterStyle class. Specifically, you can now set: The style of the raster layer can be either set at layer construction time or at runtime. For more information please refer to the article Learn how to style your raster data. and the API documentation of RasterStyleRasterStyleRasterStyle.

ImprovementLuciadCPillar

It is now possible to make a FeatureLayerFeatureLayerFeatureLayer not queryable, see FeatureLayer::setQueryableFeatureLayer::setQueryableFeatureLayer::setQueryable. When a layer doesn't have features that can be selected, this method prevents it from happening for the entire layer. I then also reduces the performance overhead for that layer in the Map::queryFeaturesMap::queryFeaturesMap::queryFeatures method.

ImprovementLuciadCPillar

LCP-687
LuciadCPillar now offers configuring enabling/disabling atmosphere effects on 3D maps and the colors used by this effect. See GraphicsEffectsGraphicsEffectsGraphicsEffects, AtmosphereEffectAtmosphereEffectAtmosphereEffect for details.

ImprovementLuciadCPillar

It is now possible to observe changes to the MapMapMap, see Map::addObserverMap::addObserverMap::addObserver.

ImprovementLuciadCPillar

LuciadCPillar has been upgraded to support .NET standard 2.0. It is now much easier to use the LuciadCPillar C# binary on newer .NET implementations. LuciadCPillar already supported .NET Framework 4.7.2 (or later). It now also supports all .NET Core and .NET versions (5 or later).

Note that building and running the LuciadCPillar C# samples still requires .NET Framework 4.7.2.

ImprovementLuciadCPillar

LCP-659
GdalModelDecoderGdalModelDecoderGdalModelDecoder now supports GeoTIFF elevation data using unsigned 16-bit integers. For more information, please read the GdalModelDecoderGdalModelDecoderGdalModelDecoder API documentation and see the updated How to load elevation data article.

ImprovementLuciadCPillar

Feature ids can now be removed in the builder using Feature::Builder::resetIdFeature::Builder::resetIdFeature::Builder::resetId. This can be useful when needing to remove the id of an existing feature. For example, to let an IFeatureModelUpdaterIFeatureModelUpdaterIFeatureModelUpdater assign a new id to it.

Bug fixLuciadCPillar

LCP-694
Fixed a rare crash that could occur while navigating on a 3D map.

Bug fixLuciadCPillar

LCP-670
When zooming close to the earth surface and tilting the camera, labels of features behind the horizon were often still painted.

Bug fixLuciadCPillar

LCP-630
A bug in the Android samples where the BottomSheet swipe gesture would break after changing the screen orientation has been fixed.

Upgrade considerationLuciadCPillar

The class ImageIconImageIconImageIcon has been moved. In case you are using this class you need to change the following in your code:
  • C++: include <luciad/drawing/ImageIcon.h>
  • C#: using Luciad.Drawing
  • Android: import com.luciad.drawing.ImageIcon

Upgrade considerationLuciadCPillar

The GDAL library and its dependencies have been updated.
  • GDAL: updated to version 3.7.0
  • PROJ: updated to version 9.1.1
  • json-c: version 0.17, used by GDAL
  • libtiff: version 4.5.1, used by GDAL
  • nlohmann_json: version 3.11.2, used by PROJ

Upgrade considerationLuciadCPillar

It's now possible to get notifications when the EditState of an IEditHandleIEditHandleIEditHandle has changed. For this purpose, the IEditHandleIEditHandleIEditHandle interface has been extended with the IEditHandle::addEditStateObserverIEditHandle::addEditStateObserverIEditHandle::addEditStateObserver and the IEditHandle::removeEditStateObserverIEditHandle::removeEditStateObserverIEditHandle::removeEditStateObserver methods, which must be implemented now.

Upgrade considerationLuciadCPillar

LCP-683
The ExpressionFactoryExpressionFactoryExpressionFactory now supports an expression representing a LIKE operation. You can find it as ExpressionFactory::likeExpressionFactory::likeExpressionFactory::like.
As a consequence the IExpressionVisitorIExpressionVisitorIExpressionVisitor interface has been extended with the method IExpressionVisitor::visitLikeIExpressionVisitor::visitLikeIExpressionVisitor::visitLike which must be implemented now.

Upgrade considerationLuciadCPillar

Upgrade considerationLuciadCPillar

LCP-619
The minimum required version of Visual Studio has been raised from Visual Studio 2017 (v15.7) to Visual Studio 2019 (v16).

Upgrade considerationLuciadCPillar

LCP-557
The OpenSSL library has been updated to version 3.0.11.

Upgrade considerationLuciadCPillar

The boost library has been updated to version 1.83.0.

Upgrade considerationLuciadCPillar

IFeatureModelIFeatureModelIFeatureModel now has API that allows to save changes to the model using the getPersistenceManager() method. See FeatureModelPersistenceManagerFeatureModelPersistenceManagerFeatureModelPersistenceManager. This change breaks existing IFeatureModelIFeatureModelIFeatureModel implementations. These can be fixed by implementing the new method, and returning null.

Upgrade considerationLuciadCPillar

The AsBitmap and the FromBitmap methods on Luciad.Drawing.Image were removed from the API to improve compatibility with multiple .NET versions. A class containing these utility methods was added to the sample code instead: Common.Drawing.ImageUtils.