Question

NumericRasteriser

  • 26 February 2016
  • 4 replies
  • 1 view

Badge

Hi,

I have been asked to complete some analysis to establish vegetation heights using a combination from LAS and DTM datasets. But I have some questions regarding the conversion of the LAS file to raster process. I am aiming to create a raster version of the LAS file and then subtract the z values from the DTM to find the vegetation heights

I am using FME 2015.1.0.2 build 15482.

I have read in the LAS file and have then used a point cloud filter to retain only classification 5 data. I then push the output to a numeric rasteriser to convert into a raster in advance of comparison with the DTM. My issue is that there appears to be no option to; account for, or set, the interpolation for instances where multiple point cloud data points fall within my stipulated cell size.

I ran the process anyway and I have completed some tests; and in the case where multiple points fall within a given cell, the resultant value of the output raster appears to be that of the last point cloud data point which goes through the cell (I think each value of the cell is overwritten each time a point is seen in the cell. Therefore the resultant cell value is purely derived on its order within the file and not through any ‘known’). I have also then checked the assigned values of the cell against all of the points which are were within the cell. Needless to say the delta can be substantially different in some instances for all the values within a given cell. I would really like to be able to control how the resultant cell value is assigned in these instances of multiple containment, i.e. min, max, avg, etc. Can anyone suggest a method to do this?

As an aside I have also created an alternate method of exploding the point cloud into points and then obtaining the diff with the DTM using a point on raster, but the problem is the amount of points within the LAS file is huge (unsurprisingly) and it is slow (or impossible in some situations for my computer to cope). Therefore I think that I definitely need to use a raster approach in the first instance for fine the vegetation height.

Thanks in advance,

Regards,

Rob


4 replies

Badge +3

Control of cellgeneration without interpolation would mean statisticcalculation based on cells or a grid.

There is a PointCloudStatistics calculator

I just tried it out A tiled PC of 24mil points clipped by 1500 objects (building is in my case) got me 1500 statistics sets in 2mins13sec.

Then you can use the PointCloudExpressionEvaluator to evaluate the points per cloudclip. (min, max, avg, etc)

Oh btw, after clipping the pointcloud you need to use a PointCloudConsumer (else the pc will still be the Original rather then clipped)

If you do this by some gridsize and then create a Raster with same gridsize you could use the RasterExpressionEvaluator tot calculate heightdifference between the 2 rasters.

Badge

Hi Gio,

Thanks for the pointers; I will check my understanding of your suggestions in a minute. Typically after I posted my original question I found the point cloud sorter.

Therefore; assuming that for the given analysis, (when creating the raster from the point cloud,) it is sufficient to use either the MIN or MAX value from the point cloud to assign to the raster (and assuming that the numeric rasteriser does keep the last value for the cell) then using the point cloud sorter before the numeric rasteriser will suffice.

But you are right in what you say, in that you might want to use a stat value which is not only MIN or MAX. Can I please check my understanding of your post? Following your suggestion of the Point Cloud Statistics Calculator I ran the post filtered PC though the stat calc, and got a single set of stat values for the filtered point cloud (i.e. even though the PC was class 5 points only, the stat values were for still just a single set). Ok so far, but obviously the calculated stats are for the whole point cloud and not for what will end up as the raster cells. Hence the reason you say to clip the point cloud up first, so that you can obtain stats at a more granular level.

So can I check the next part of your suggestion? Namely; should I create a vector grid of cells of the size and position that I want the raster to end up as? Then use these as multiple clippers to clip the original single point cloud data? Once this is done, I will have smaller point clouds, I can then use the stat calc to generate individual stats for. Once this is done, should I then;

1.Push the stat value (that I want to use) back into the Vector grid cells which I created for the clipping process in the first place. And then test the vector grid against the raster DTM. I.e. I am using a vector on raster process to compare the z values

2.Or, use the multiple point cloud and convert them to a Raster AND then test this vegetation raster against the DTM raster? i.e. use a raster on raster process to compare the z values

I am bit confused as when to flip from vector to raster and which parts to do in which. I am not quite sure whether I am effectively duplicating some processing tasks and therefore making my process inefficient, as trying to complete some processes as vectors is extremely processing heavy.

It seems a shame that when you create a raster using the numeric rasteriser that it does not allow you to select a cell assigning methods, i.e., centre cell, min, max, avg, sum, etc. etc. if so then this issue would be circumvented to begin with.

Any further advice would be appreciated, the pointers to the PC stat calc and clipping of PC is already a BIG help.

Thanks,

Rob

Badge +3

Hi You can do the proces without coercing to points.

When u clip the pc to a grid, you still have the overall pc.

If you use the stat calculator it will calculate stat on the clipped pc.

The stats are availabel per clip

1.Push the stat value (that I want to use) back into the Vector grid cells which I created for the clipping process in the first place. And then test the vector grid against the raster DTM. I.e. I am using a vector on raster process to compare the z values

No need for the push back.

You can then do the pc expressioncalculations.

Next you use a PointCLoudConsumer, it will output the filtered and or clipped objects.

You can use this then to create a raster ( i use a DEM- or surfacebuilder for its interpolation option and output the dem raster)

This you can use in the rasterexpressioncalculator together with your reference raster. You can then output a difference raster from there.

This is basicaly youre point 2.

2.Or, use the multiple point cloud and convert them to a Raster AND then test this vegetation raster against the DTM raster? i.e. use a raster on raster process to compare the z values.

 

You won't need to revert to pointobjects (vectors as you call it) No coersion i required.

 

Badge

Hi Gio,

Thanks again for the tips/advice.

I have done some more experimentation and I think I now understand things more clearly (slightly). More work still needs to be done as I have done things slightly differently, so I want to fully understand everything that you describe. But my temporary method is as follows, I have just described the part of moving and subtracting the z values from raster to pc.

1. read in GEOTIFF DTM

2. read in LAS PC

3. filter LAS PC classification 5 retain

4.connect outputs from 1 and 3 into PointCloudOnRasterComponentSetter. configure transformer to take band 0 (DTM_Z value) from GEOTIFF and create a new component in the point cloud called dtm_z

5. use a PointCloudExpressionEvaluator to subtract dtm_z value from PC_z.

Clearly at this stage the calculated delta z are not in an ordered ‘grid' format but associated with the 'chaotic' pc data. So I need to decide for the vegetation analysis whether I should create order first, in the form of a grid first (i.e. perform a clip as you describe) or keep the PC data as was but with both z values recorded. I guess the advantage of the latter is that the PC can be re-interpolated into a raster independently at later date, according to any change of need? But I need to think about this.

Anyway thanks again for your help, I will look again at the clipping method.

rob

Reply