ThinkGeo.com    |     Documentation    |     Premium Support

GdiPlusRasterLayer - performance

Hello I have a question about the GdiPlusRasterLayer. It appears that the constructor only excepts a file path. Is there any way to make it accept an image or stream. 


 
I’m using a local rasterlite (sqlite) database and I query the image out and then have to save it to disk then your constructor reads it again. I’m just trying to improve performance. 
 
GdiPlusRasterLayer rasterLayer = new GdiPlusRasterLayer(filePath,
                                                                         canvas.CurrentWorldExtent);
 
Thanks, Dan

Dan,


Thanks for your post and questions.
 
Try to use the SteamLoading event:
rasterLayer.StreamLoading += new EventHandler<StreamLoadingEventArgs>(rasterLayer_StreamLoading);
 
Following sample is provided in our wiki, please take a look if you are interested:
wiki.thinkgeo.com/wiki/File:...100701.zip
 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale

Thanks, but I still need help.


I’m using a custom rasterLayer that accepts an image and uses the canvas.CurrentWorldExtent as it's world file when constructed.
I'm hoping that i can supply a stream and the canvas.CurrentWorldExtent as the world file.
I'm not quite sure how your example for my situation. Where I wont have an image on disk to use at all.
I’ve attached my custom layer for your review. I’m trying to remove the save method and use the stream directly to improve performance.
 
Thanks, Dan

RasterLiteLayer.cs (6.64 KB)

Dan,


Thanks for your post and question.
 
I am sorry to say that I cannot get the cs file you provided (RasterLiteLayer.cs), so I am not quite understand your purpose. While I am curious that you have taken any chance to try to understand the way the sample our wiki provided, the reason it is using the disk file instead of others is just for easy to show, in fact, the stream can be from anywhere.
 

void MainForm_StreamLoading(object sender, StreamLoadingEventArgs e)
{
       if (e.StreamType == "Image File")
       {
           Stream stream; //This steam is for tif stream chich can be from network or anyplace.
           e.AlternateStream = stream;
       }
 
       if (e.StreamType == "World File")
       {
    //This steam is for tfw stream chich can be from network or anyplace.
           Stream stream;
           e.AlternateStream = stream;
       }
}

 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale