Skip to main content
Solved

raster - outofmemory exception


Forum|alt.badge.img

Hi,

I get an OutOfMemory exception with raster transformer.

Input file is just 300MG TIFF (uncompressed). Transformer is ReframeReprojector (coordinate system transformation). In TaskManager I can observe that FME gobbles up memory quickly and runs out of memory after less than a minute. What can I do? (I'm not overly familiar with FME).

W2008R2, 6GB, FME 2014 SP4, W64

Thank you, Rob

Best answer by david_r

Hi

This is a known issue with the ReframeReprojector. Internally it does an affine transformation on all the pixels, skewing and interpolating along the way, which is very memory intensive.

You might want to ask yourself if subpixel accuracy makes sense in your context. If it is important to you, consider using the Tiler to split the raster into smaller units before sending them off to the ReframeReprojector. But the tiles might not line up perfectly after and the edges might not be completely straight (empty pixels will be set to NODATA).

For most rasters, it will suffice to use the CsMapReprojector, which is slightly less precise but a lot faster, as it uses a simpler grid transformation.

Another option is to find the center point of each raster using the CenterPointReplacer, reproject the point using the ReframeReprojector, calculate the offset and then apply the offset on the whole raster using the Offsetter. This has the bonus of being fairly accurate, very fast and will preserve perfectly straight edges in the resulting raster. My colleague has written a fews words on this here (in french), look under "Transformation par bloc".

David

View original
Did this help you find an answer to your question?
This post is closed to further activity.
It may be a question with a best answer, an implemented idea, or just a post needing no comment.
If you have a follow-up or related question, 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.

3 replies

jdh
Contributor
Forum|alt.badge.img+28
  • Contributor
  • January 26, 2016

Do you need to use the ReframeReprojector? If it's only a planimetric conversion (not changing the altimetric reference frame) you should be able to use the Reprojector.


david_r
Celebrity
  • Best Answer
  • January 26, 2016

Hi

This is a known issue with the ReframeReprojector. Internally it does an affine transformation on all the pixels, skewing and interpolating along the way, which is very memory intensive.

You might want to ask yourself if subpixel accuracy makes sense in your context. If it is important to you, consider using the Tiler to split the raster into smaller units before sending them off to the ReframeReprojector. But the tiles might not line up perfectly after and the edges might not be completely straight (empty pixels will be set to NODATA).

For most rasters, it will suffice to use the CsMapReprojector, which is slightly less precise but a lot faster, as it uses a simpler grid transformation.

Another option is to find the center point of each raster using the CenterPointReplacer, reproject the point using the ReframeReprojector, calculate the offset and then apply the offset on the whole raster using the Offsetter. This has the bonus of being fairly accurate, very fast and will preserve perfectly straight edges in the resulting raster. My colleague has written a fews words on this here (in french), look under "Transformation par bloc".

David


Forum|alt.badge.img
  • Author
  • January 27, 2016
david_r wrote:

Hi

This is a known issue with the ReframeReprojector. Internally it does an affine transformation on all the pixels, skewing and interpolating along the way, which is very memory intensive.

You might want to ask yourself if subpixel accuracy makes sense in your context. If it is important to you, consider using the Tiler to split the raster into smaller units before sending them off to the ReframeReprojector. But the tiles might not line up perfectly after and the edges might not be completely straight (empty pixels will be set to NODATA).

For most rasters, it will suffice to use the CsMapReprojector, which is slightly less precise but a lot faster, as it uses a simpler grid transformation.

Another option is to find the center point of each raster using the CenterPointReplacer, reproject the point using the ReframeReprojector, calculate the offset and then apply the offset on the whole raster using the Offsetter. This has the bonus of being fairly accurate, very fast and will preserve perfectly straight edges in the resulting raster. My colleague has written a fews words on this here (in french), look under "Transformation par bloc".

David

Hi David,

many thanks for your reply. At the moment I just looking at different options and do some preliminary tests. We haven't yet decided how to transform our raster data sets. Your reply has already helped me a lot,

Regards, Robert


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings