ThinkGeo.com    |     Documentation    |     Premium Support

Raster layer from memory

 Hi -


I'm wondering if it's possible to take some in-memory data, in an internal format, and get it to display as a raster layer within a bounding box without turning it into a stream or (worse yet) writing it to disk.  I've got the Raster Layer with Extent example from your code base and I understand what it's doing.  I can easily generate my own bounding box from my internal data.  I have looked at and understand your Image Stream Loading demo, where I could theoretically serialize my in memory raster data to a MemoryStream and read it back using a StreamLoading event.  That's still less than ideal for my application.


My question is, is there any way to directly create a RasterLayer from a BitmapSource-derived object without having to go through all that stream and GDI stuff.  I imagine that I'm far from the only developer who could make use of such a thing.


Thanks in advance for your help.


Dave Anderson

Lead Developer

Boston University Hearing Research Center



Hi Dave, 
  
 It’s a good idea to have a BitmapSource based RasterLayer. But currently, we have a 3rd part library to support the raster stuff which is stable. While to implement a RasterLayer with Wpf feature, there might be some disadvantages. For example the BitmapImage, RenderTargetBitmap or WritableBitmap, these BitmapSources are not able to access crossing the thread. Which means panning and zooming is unable to process during its rendering. For the Gdi+ stuff, bitmap is allowed drawing on the other thread and we can optimize the user experience a lot. 
  
 Also, to maintains a big raster in the memory might slow down your performance. We used to try a BitmapImage with a 40M as its source, and then do the panning, it costs high CPU on the DX drawing; and it feels like a low frame animation playing; please try it if you are interesting in it. 
  
 Also, we have several inherited classes of RasterLayer, to have all of them supported needs time. So hope you understand, and feel free to let us know if you have more queries. 
  
 Thanks, 
 Howard