Solved

Natural neighbour interpolation method in raster

  • 18 October 2018
  • 5 replies
  • 27 views

Hi,

I cannot find "Natural neighbour" as a interpolation method in any raster transformers in FME.

 

I have FME Home Edition, ver: FME(R) 2018.1.0.3 (20180926 - Build 18552 - WIN64).

The function is in the arcgis program, see more here Natural neighbour

I have tried RasterDEMGenerator transformer in FME with "Auto", "Planar" and "Constant" as interpolation methods and with "Surface Tolerance" = 0 but the result is not as good as with QGIS or ArcGis.

Will there be a future support for "Natural Neighbour" as a interpolation method in raster transformers in FME?

 

I attache a raster done in QGIS from LIDAR point cloud and Grid 1 x 1 meter and the same done in FME so you can compare the difference.Best regards,Jonas
icon

Best answer by jdh 19 October 2018, 00:23

View original

5 replies

Badge +22

There is not one currently. You can post it as an idea https://knowledge.safe.com/content/idea/post.html?space=155 to garner votes for development.

 

 

That said, the algorithm seems like a relatively straightforward implementation and can be done with VoronoiDiagrammer and AreaOnAreaOverlayer.

 

 

naturalneighbour.fmw

There is not one currently. You can post it as an idea https://knowledge.safe.com/content/idea/post.html?space=155 to garner votes for development.

 

 

That said, the algorithm seems like a relatively straightforward implementation and can be done with VoronoiDiagrammer and AreaOnAreaOverlayer.

 

 

naturalneighbour.fmw

Hi jdh,

 

Holy cow! That one I did not understand how you did :-)

 

Anyhow I tried it now with my LIDAR data and it does not recognize the "_random_number" in the creation of the "_weightedValue" attribute.

 

What shall I do to fix this?

 

Best regards,

 

Jonas

 

 

Badge +22
Hi jdh,

 

Holy cow! That one I did not understand how you did :-)

 

Anyhow I tried it now with my LIDAR data and it does not recognize the "_random_number" in the creation of the "_weightedValue" attribute.

 

What shall I do to fix this?

 

Best regards,

 

Jonas

 

 

The _random_number is an attribute storing the value you wish to interpolate (presumably Z). The thiessen polygons generated from the VoronoiDiagrammer need to have an attribute containing that value.

 

 

If your source data is a point cloud, you will need to either coerce the cloud into individual points, each containing the the Z value as an attribute prior to the VoronoiDiagrammer, or figure out a way to transfer the values to the thiessen polygons after generation.

 

 

In the AttributeCreator you need to change the _weightedValue expression to use the appropriate attribute name.

 

 

The workspace above was more a proof of concept than anything. I used this description of the algorithm to design the workspace:

 

The natural neighbors of any point are those associated with neighboring Voronoi (Thiessen) polygons. Initially, a Voronoi diagram is constructed of all the given points, represented by the olive-colored polygons. A new Voronoi polygon, beige color, is then created around the interpolation point (red star). The proportion of overlap between this new polygon and the initial polygons is then used as the weights.

 

 

 

http://desktop.arcgis.com/en/arcmap/10.3/tools/spatial-analyst-toolbox/how-natural-neighbor-works.htm

 

 

The _random_number is an attribute storing the value you wish to interpolate (presumably Z). The thiessen polygons generated from the VoronoiDiagrammer need to have an attribute containing that value.

 

 

If your source data is a point cloud, you will need to either coerce the cloud into individual points, each containing the the Z value as an attribute prior to the VoronoiDiagrammer, or figure out a way to transfer the values to the thiessen polygons after generation.

 

 

In the AttributeCreator you need to change the _weightedValue expression to use the appropriate attribute name.

 

 

The workspace above was more a proof of concept than anything. I used this description of the algorithm to design the workspace:

 

The natural neighbors of any point are those associated with neighboring Voronoi (Thiessen) polygons. Initially, a Voronoi diagram is constructed of all the given points, represented by the olive-colored polygons. A new Voronoi polygon, beige color, is then created around the interpolation point (red star). The proportion of overlap between this new polygon and the initial polygons is then used as the weights.

 

 

 

http://desktop.arcgis.com/en/arcmap/10.3/tools/spatial-analyst-toolbox/how-natural-neighbor-works.htm

 

 

Good evening jdh,

 

I think I made the right modification but nothing comes out to the inspector.

 

See attached picture...What do I do wrong?

Best regards,

 

Jonas
Badge +22
Good evening jdh,

 

I think I made the right modification but nothing comes out to the inspector.

 

See attached picture...What do I do wrong?

Best regards,

 

Jonas
Your Clipper-clipper need to be a polygon of the area of interest, not the individual points. A BoundingBoxReplacer, or BoundingBoxAccumulator would make one, depending on where in the workflow you place it.

 

 

 

Reply