2023.1.03
ImprovementLuciadCPillar
LCP-665
Feature::getValueFeature::getValueFeature::getValue
with a more specific geometry type as
type parameter.
Bug fixLuciadCPillar
LCP-756
Bug fixLuciadCPillar
LCP-749
2023.1
2023.1.02
ImprovementLuciadCPillar
LCP-752
ObservableObservableObservable
class can now be used with all geometry types instead of only a subset.
ImprovementLuciadCPillar
LCP-752
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
ImprovementLuciadCPillar
LCP-635, LCP-613
Bug fixLuciadCPillar
LCP-721
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
Bug fixLuciadCPillar
LCP-748
CoordinateReferenceProviderCoordinateReferenceProviderCoordinateReferenceProvider
is now more flexible in
accepting parameter names for the projection center.
Bug fixLuciadCPillar
LCP-736
Bug fixLuciadCPillar
Upgrade considerationLuciadCPillar
LCP-710, LCP-712
A couple of methods now use double values instead of integer values:
Map::resizeMap::resizeMap::resize
Map::getWidthMap::getWidthMap::getWidth
andMap::getHeightMap::getHeightMap::getHeight
Camera::getWidthCamera::getWidthCamera::getWidth
andCamera::getHeightCamera::getHeightCamera::getHeight
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
boost
library has been updated to version 1.83.0
.
2023.1.01
ImprovementLuciadCPillar
LCP-729
It is now possible to specify an OcclusionModeOcclusionModeOcclusionMode
when painting geometries and (non-label)
icons or text. This allows you to (partially) show 3D objects that would otherwise be obscured by other 3D
objects. See
FeatureCanvas::GeometryDrawCommand::occlusionModeFeatureCanvas::GeometryDrawCommand::occlusionModeFeatureCanvas::GeometryDrawCommand::occlusionMode
FeatureCanvas::IconDrawCommand::occlusionModeFeatureCanvas::IconDrawCommand::occlusionModeFeatureCanvas::IconDrawCommand::occlusionMode
FeatureCanvas::TextDrawCommand::occlusionModeFeatureCanvas::TextDrawCommand::occlusionModeFeatureCanvas::TextDrawCommand::occlusionMode
ImprovementLuciadCPillar
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
IFeatureModelIFeatureModelIFeatureModel
s 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
StyleExpressionFactory::casesStyleExpressionFactory::casesStyleExpressionFactory::cases
threw an exception when using it with boolean values.
Bug fixLuciadCPillar
LCP-715
IFeatureModelIFeatureModelIFeatureModel
's observer is called right before or while
a Map::RendererMap::RendererMap::Renderer
is destroyed.
Bug fixLuciadCPillar
LCP-707
Bug fixLuciadCPillar
LCP-706
Upgrade considerationLuciadCPillar
myVRArchive
library. This new dependency requires no code
changes.
2023.1
New featureLuciadCPillar
LonLatGridLonLatGridLonLatGrid
API documentation and
see the LonLat Grid article.
New featureLuciadCPillar
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
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
RasterStyleRasterStyleRasterStyle
class.
Specifically, you can now set:
- The raster
RasterStyle::Builder::opacityRasterStyle::Builder::opacityRasterStyle::Builder::opacity
- The raster
RasterStyle::Builder::brightnessRasterStyle::Builder::brightnessRasterStyle::Builder::brightness
- The raster
RasterStyle::Builder::contrastRasterStyle::Builder::contrastRasterStyle::Builder::contrast
- The raster
RasterStyle::Builder::modulationColorRasterStyle::Builder::modulationColorRasterStyle::Builder::modulationColor
RasterStyleRasterStyleRasterStyle
.
ImprovementLuciadCPillar
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
GraphicsEffectsGraphicsEffectsGraphicsEffects
, AtmosphereEffectAtmosphereEffectAtmosphereEffect
for details.
ImprovementLuciadCPillar
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::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
Bug fixLuciadCPillar
LCP-670
Bug fixLuciadCPillar
LCP-630
Upgrade considerationLuciadCPillar
Upgrade considerationLuciadCPillar
GDAL
library and its dependencies have been updated.
GDAL
: updated to version3.7.0
PROJ
: updated to version9.1.1
json-c
: version0.17
, used byGDAL
libtiff
: version4.5.1
, used byGDAL
nlohmann_json
: version3.11.2
, used byPROJ
Upgrade considerationLuciadCPillar
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
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
LineStyleLineStyleLineStyle
, FillStyleFillStyleFillStyle
, MeshStyleMeshStyleMeshStyle
, OnPathLabelStyleOnPathLabelStyleOnPathLabelStyle
,
PinStylePinStylePinStyle
, PointCloudStylePointCloudStylePointCloudStyle
, and TextStyleTextStyleTextStyle
are now
passed as values instead of shared_ptr
s. Setters that used to accept null
values, now accept nullopt
instead.
Upgrade considerationLuciadCPillar
LCP-619
Upgrade considerationLuciadCPillar
LCP-557
OpenSSL
library has been updated to version 3.0.11
.
Upgrade considerationLuciadCPillar
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
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
.