You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow Performing Transforms with additionalTransforms (#265)
If src and target imodel's have differing local Helmert transforms,
transform target elements positions to maintain proper local positions.
The target imodel "additionalTransform" will always be maintained, even
if it is null. The source imodel when copied into the target will have a
combination of both helmert transforms applied to its elements
placements. This way the result will place the elements in a position
that when the targets "additionalTransform" is applied it will be in the
correct geographic position. If the target's "additionalTransform" is
null, then the we are simply applying the src's helmert transform
permanently to each elements position instead of just at render time. If
the src and target have different non null transforms, then the
resulting transform applied to the src elements will also negate the
helmert transform applied by the target model.
---------
Co-authored-by: Daniel Rodriguez <DanRod1999@users.noreply.github.com>
/** A flag that determines if spatial elements from the source db should be transformed if source and target iModel ECEF locations differ.
244
-
* @note This flag should only be used if imodels are linearly located
251
+
252
+
/**
253
+
* A flag that determines if spatial elements from the source db should be transformed if:
254
+
* source and target iModel GCS/CRS data is the same, but they have differing additional transforms
255
+
* source and target iModel ECEF locations differ
245
256
* @default false
246
257
*/
247
-
alignECEFLocations?: boolean;
258
+
tryAlignGeolocation?: boolean;
248
259
}
249
260
250
261
/**
@@ -385,10 +396,15 @@ export class IModelTransformer extends IModelExportHandler {
385
396
publicreadonlytargetDb: IModelDb;
386
397
/** The IModelTransformContext for this IModelTransformer. */
387
398
publicreadonlycontext: IModelCloneContext;
388
-
/** The transform to be applied to the placement of spatial elements when source and target db have different ECEF locations
389
-
* @note transform can only be used when source and target are linearly located imodels
399
+
/** The transform to be applied to the placement of spatial elements
400
+
* This transform should be applied when:
401
+
* - source and target db have different ECEF locations
402
+
* - source and target db have matching GCS/CRS data, but differing `geographicCoordinateSystem.additionalTransform.helmert2DWithZOffset`
403
+
* @note for ECEF transforms, this can only be used when source and target are linearly located imodels
404
+
* @note for non linearly located imodels, this transform will be a linear transform derived from Helmert Transforms from the src and target iModels.
405
+
* @beta
390
406
*/
391
-
publicecefTransform?: Transform;
407
+
private_linearSpatialTransform?: Transform;
392
408
private_syncType?: SyncType;
393
409
394
410
/** The Id of the Element in the **target** iModel that represents the **source** repository as a whole and scopes its [ExternalSourceAspect]($backend) instances. */
@@ -599,7 +615,7 @@ export class IModelTransformer extends IModelExportHandler {
0 commit comments