Skip to main content
Question

Set Z value in LAS file

  • Aug 13, 2026 12:57 PM UTC
  • 4 replies
  • 152 views

pabloolivaresm
Supporter
Forum|alt.badge.img+6

Hi,

 

I have a LAS file already normalized, ground z value = 0, and other class z = height above ground. I need to set the z value to “0” to building class. I try this workflow and it’s seem to work but when I check the LAS writer, build and ground have the 8.847607091e-10 z value.

I dont know why this, but when I check property in FME, I realize that z value it’s different.

In my normalized LAS the z value

But in the output LAS I get this in z value

I tryied with PointCluidExpressionEvaluator instead remove and adder component but I get the same in Z value

Any idea why this happens?

4 replies

daveatsafe
Safer
Forum|alt.badge.img+24
  • Safer
  • Aug 14, 2026 7:01 PM UTC

Hi ​@pabloolivaresm,

There are a few things happening in your process to change the output LAS scaling and offset on the z component:

  • The PointCloudComponentAdder is setting the new z component to Uint32 on the Buildings, but the other untouched point cloud has z set to a scaled and offset Int32. When the PointCloudCombiner receives different types for the same component coming in, it saves it as Real64 to ensure no information is lost. The LAS writer than calculates a new scale and offset for the z component to fit it into the mandatory LAS Int32 data type
  • The PointCloudExpressionEvaluator used in your alternate scenario is not able to Preserve the data type of scaled/offset Int32, and so sets the output to Real64. This also triggers the LAS writer to recalculate the scale/offset Int32 for the z component.

I believe the PointCloudExpressionEvaluator should be able to Preserve the scaled/offset Int32 data types, and have created a problem report for our development team (FMEENGINE-99329). I will notify you when this issue is resolved.


pabloolivaresm
Supporter
Forum|alt.badge.img+6

​Hi @daveatsafe, 

thanks for answer.

I tryed now with a Scaler before PointCloudCombiner. I set as z=0.01. I changed also to Int32 in ComponentAdder  

It seems to work!

 


pabloolivaresm
Supporter
Forum|alt.badge.img+6

Update: to good to be true.

My workbench didn’t work with others color LAS tiles. 

My reader properties:

I get this warnings

LAS writer: Conversion of the “y” component from type “Real64” to “Int32”. If this conversion is not desired, consider explicitly changing the type

Its really strange because I dont modify y and x components. 

If I add a PointCloudComponentTypeCoercer before Writer

I get this warnings

@PointCloudInterpretation: No conversion will be performed on the “x” component as the source and destination types are already the same (Int32). However, the source component has a scale/offset factor. If a conversion is required, consider applying the scale/offset using a PointCloudTransformationApplier before this transformation.

 

EDIT: Just a projection problem, I removed spatial projection and It works


daveatsafe
Safer
Forum|alt.badge.img+24
  • Safer
  • Oct 14, 2026 7:17 PM UTC

I am happy to announce that we have updated the PointCloudExpressionEvaluator to properly preserve the data type of scaled/offset Int32. If the final result of the expression is outside the usable range of the scale/offset combination, then the data type will revert to Real64, in order to keep the proper value.

This update is available in FME 2026.4, builds 26803 and higher, which can be obtained at safe.com/beta.