ThinkGeo.com    |     Documentation    |     Premium Support

Extracting Data from multiple sources on a slow link

Hi,


I have a situation where the users of the system will have their own shape files to load plus the files that I provide. The users will be based in other pacific Island countries where internet link can be very slow (56k).


The requirement is to allow the users to update their list of shape files occasionally. The users will also read some data directly from SQL Server which I will host inside my organisation or elsewhere on the cloud.


SInce the users need the data updates all the time and the link is slow I was thinking of providing with a update mechanism to support this. I am also think of downloading data from sql server to their pc's from time to time so that they are able to work offline as well.


What would you suggest is the best way to implement this? Does the product have something to assist with this requirement?



Bimal, 
  
 Thank you for the post! 
  
 While Map Suite doesn’t have in any built in data update mechanism it does have API’s that will allow you to build a custom offline/update mechanism yourself.   Based on the high level requirements you have provided one approach you might consider is reading the data from your SQL Server when your client wants to get an update and then saving this data locally on the client in shapefiles.  To do this you will want to familiarize yourself with some of the API’s off of the ShapeFileFeatureLayer like below: 
  
 ShapeFileFeatureLayer.CreateShapeFile - This static method allows you create new shapefiles and will be useful if you SQL Server has new data available where you need to create a brand new shapefile. 
  
 For Adding, Updating and Deleting features to your new shapfiel you should take a look at the EditTools off of your ShapeFileFeatureLayer.  Below are some code snippets of how you could edit your local shapefile so it is in Sync with your SQL database. 
  
             ShapeFileFeatureLayer myShapeFile = new ShapeFileFeatureLayer(@“C:\MyPath.shp”); 
             //Start the Transaction For your Edits 
             myShapeFile.EditTools.BeginTransaction(); 
             foreach (Feature f in YourFeaturesFromSQLServer) 
             { 
                 //To Add New Features to your shapefile from SQL Server 
                 myShapeFile.EditTools.Add(f); 
                 //To update features to your shapefile from SQL Server 
                 myShapeFile.EditTools.Update(f); 
                 //To Delete features from your shapefile 
                 myShapeFile.EditTools.Delete(f); 
             } 
              
             TransactionResult myResult = myShapeFile.EditTools.CommitTransaction(); 
             MessageBox.Show(myResult.TransactionResultStatus.ToString()); 
  
 I hope these API’s and approach will give you a good start.  There are also some How Do I samples that use the API’s that you can look at too.  Please let us know if you have any additional questions. 
  
 Thanks!