2023.1.05

ImprovementLuciadCPillar

LCP-771
Improved the label update performance when drawing a large amount of labels where the position of the label relative to the object changes frequently.

ImprovementLuciadCPillar

LCP-770
Improved performance when visualizing a large amount of labels or different icons on the map.

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-777
Fixed a crash in MouseGestureRecognizerMouseGestureRecognizerMouseGestureRecognizer when 2 consecutive mouse pressed events using the same mouse button arrive. This could only happen in rare circumstances, for example when using Alt-Tab or when another window steals focus.

Bug fixLuciadCPillar

LCP-773, LCP-716
FeatureLayerFeatureLayerFeatureLayer: fixed an issue that could, in rare cases, cause a crash of the application.

Bug fixLuciadCPillar

LCP-767
When a feature layer contains many moving features and/or many visible labels, the latency of getting them on the screen was decreased.

Bug fixLuciadCPillar

LCP-757
FeatureLayerFeatureLayerFeatureLayer: Fixed an issue where transparent lines would not have a consistent color in sharp corners or where they overlap themselves.

Bug fixLuciadCPillar

LCP-766
When updating a large amount of features (10000+) that are painted (all at the same time) using different labels, map updates were slow.

2023.1

2023.1.04

Bug fixLuciadCPillar

LCP-763
After a map's renderer has been destroyed and then re-created, zooming (or animations in general) wouldn't work correctly anymore. This has been fixed in the WinForms/WPF integration code that is shipped as part of the LucidCPillar samples. If you have a copy of this integration code, you can fix this issue by updating your copy of the ViewControl.cs file.

Bug fixLuciadCPillar

LCP-760
Fixed a rare issue where the license check would fail even though the license is valid.

Bug fixLuciadCPillar

LCP-745
Fix for slow rendering of Dted level 2 files.

Bug fixLuciadCPillar

LCP-759
Fix for point clouds initialized with Adaptive Point Size rendering incorrectly after a resize of the render window.

Bug fixLuciadCPillar

LCP-758
GdalModelDecoderGdalModelDecoderGdalModelDecoder could return a model with a reference with an ellipsoid equidistant cylindrical projection instead of a spherical equidistant cylindrical projection.

Upgrade considerationLuciadCPillar

The libbacktrace library has been updated to version 20210118.

2023.1.03

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.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.