Skip to main content
Solved

Natural neighbour interpolation method in raster

  • October 18, 2018
  • 5 replies
  • 241 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

Best answer by jdh

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

This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

5 replies

jdh
Contributor
Forum|alt.badge.img+37
  • Contributor
  • 2002 replies
  • Best Answer
  • October 18, 2018

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


  • Author
  • 23 replies
  • October 19, 2018

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

 

 


jdh
Contributor
Forum|alt.badge.img+37
  • Contributor
  • 2002 replies
  • October 19, 2018
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

 

 


  • Author
  • 23 replies
  • October 19, 2018
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

jdh
Contributor
Forum|alt.badge.img+37
  • Contributor
  • 2002 replies
  • October 22, 2018
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.