ThinkGeo.com    |     Documentation    |     Premium Support

Using files out of application

Hi, 


I'm wondering if there is a way to load up .shp files if they reside outside of the application itself.  I can download the file, no problem, but I'm not sure what I should do with it once I have it.  It seems the stream loading method used in the 'how-tos' is simply for files inside resident in the application.  Thanks for the help.


-Dustin



 


Dustin,
 
I think the ServerOverlay is better for loading up and rendering the shapefiles. For the mentioned sample, the client rendering for shapefile needs to set the stream property during loading the data to instance the feature, but I’m wondering how to get file stream from downloader. Below are some tips:
            
                foreach (FileInfo file in opd.Files)
                {
                    System.IO.Stream filestream = file.OpenRead();
                    switch (file.Extension)
                    {
                        case ".shp":
                            e.AlternateStream = filestream;
                            break;
                        case ".dbf":
                            e.AlternateStream = filestream;
                            break;
                        case ".shx":
                            e.AlternateStream = filestream;
                            break;
                        case ".idx":
                            e.AlternateStream = filestream;
                            break;
                        case ".ids":
                            e.AlternateStream = filestream;
                            break;
                        default:
                            break;
                    }
                                     }
 
Thanks,
 
Johnny

Johnny,


I believe if I get a better idea of how the StreamLoading event works, I might be able to work this out.  I am currently calling a web service to retrieve the files, which I am then storing in Streams, so they're already half way there.  My question is on the StreamLoading though. I'm going to try to step through my knowledge of how it works, so please correct me where I'm wrong.


 



        
  1. A new ShapeFileFeatureLayer is created with a path (let's use "test.shp").  It seems like this can be any arbitrary name, as long as it ends with .shp.

  2.     
  3. The StreamLoading event is assigned for the ShapeFileFeatureLayer's FeatureSource.

  4.     
  5. The layer is loaded, popping the StreamLoading event.

  6.     
  7. (Here's where I'm unclear) The StreamLoading event's completed delegate asks for one of each of the file extensions (.shp, .dbf, etc.) and for a stream for each of them. 

  8.     
  9. The layer is displayed on the map. 


So, if my thoughts are correct, I could easily assign one of my streams to the AlternateStream property of the StreamLoadingEventArgs, right?  If you can confirm my thoughts on the above steps, I would vastly appreciate it. 


-Dustin



Dustin, 
  
 Sorry for the delay. I’m sure you understand the flow totally. The items descript are what we do. Just as you said, you can assign you streams to the AlternateStream of the StreamLoadingEventArgs.  
  
 Thanks, 
 Johnny