ThinkGeo.com    |     Documentation    |     Premium Support

TabFeatureLayer

Hi,


I am new to ThinkGeo development so maybe this question is answered somewhere though I wasn't able to find an answer.


I have a few MapInfo .TAB files (with correposning DAT, ID and MAP files).


I am trying to display them but so far are not seeing any results.


I did a server side layer:



TabFeatureSource.BuildIndexFile(MapPath("~/app_data/MyTabFile.TAB"));
TabFeatureLayer tabFeatureLayer = new TabFeatureLayer(MapPath("~/app_data/MyTabFile.TAB"));
...
erverLayerOverlay tabOverlay = new ServerLayerOverlay("TabServer");
tabOverlay.Layers.Add(tabFeatureLayer);
SilverlightMapConnector1.ServerLayerOverlays.Add(tabOverlay);

I Then on the client:



ServerLayerOverlay tabOverlay = new ServerLayerOverlay("TabServer", "SilverlightMapConnector1");
Map1.Overlays.Add(tabOverlay);

But I see nothing.


When I am trying to use such layer on the client side I don't even find the TabFeatureLayer.


I've seen an example but it is only for Desktop clients and not silverlight.


Is there a way to do it on the client? Is there additional code I need to do in the server to properly display TAB data?



Thanks,
Tomer



Hi Tomer, 
  
 Thanks for your post. 
  
 Time is not enough today, I will try to reproduce your problem and update any progress tomorrow. 
  
 Regards, 
  
 Don

Hi Tomer,  
  
 It looks our silverlight edition don’t support really server side tab shape file. 
  
 But it can support the native server tab render. 
  
 You can get the USA.TAB data from wiki.thinkgeo.com/wiki/File:DesktopEditionSample_NativeTabFileSupport_CS_110524.zip 
  
 And then change the SimpleServerRendering class and default class in our SilverLight HowDoISample project like this: 
  
 For SimpleServerRendering class: 
  
 private void UserControl_Loaded(object sender, RoutedEventArgs e) 
         { 
             Map1.MapUnit = GeographyUnit.DecimalDegree; 
             Map1.CurrentExtent = new RectangleShape(-96.51477,30.759543,-94.355788,28.910652); 
  
             ServerLayerOverlay serverLayerOverlay = new ServerLayerOverlay(“NativeServer”, “SilverlightMapConnector1”); 
             Map1.Overlays.Add(serverLayerOverlay); 
  
             Map1.Refresh(); 
         } 
  
 For default.aspx.cs: 
  
 TabFeatureLayer tabFeatureLayer = new TabFeatureLayer(MapPath("~/app_data/USA.TAB")); 
                 tabFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.StandardColors.White, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green)); 
                 tabFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
                 tabFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City1; 
                 tabFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.Canal1; 
                 tabFeatureLayer.RequireIndex = false; 
  
                 // Native Server 1 
                 BackgroundLayer backgroundLayer = new BackgroundLayer(new GeoSolidBrush(GeoColor.FromArgb(255, 156, 187, 216))); 
                 ServerLayerOverlay layerOverlay = new ServerLayerOverlay(“NativeServer”); 
                 layerOverlay.Layers.Add(backgroundLayer); 
                 layerOverlay.Layers.Add(tabFeatureLayer); 
                 SilverlightMapConnector1.ServerLayerOverlays.Add(layerOverlay); 
  
 Don’t forget move the USA.TAB to target folder. 
  
 I render the tab file (native server) succeed. 
  
 Regards 
  
 Don 
  


Hi Don,


I ran your code and I indeed see the map.


I think it might have to do with the map units - I've change it to Meters and I do see some data.


So to conclude this, I can only draw Tab (MapInfo) by preparing them on Server and consuming in the client? (that is, no MapInfo support on Silverlight client)?


Is there a way to display DecimalDegree and Meter "layer" on the same map or do I have to somehow convert the data?

 


I've explored a little more the documentation and it seem to be missing - is there a full complete or what is posted online is most current?


Thanks!


Tomer



Hi Tomer, 
  
 I think maybe both of us have some misunderstand for the client side or server side, I will make sure that and give you more excatly reply. For now, I think my reply is you can render your tab in client side and synchronous that with server side via mapconnector. 
  
 If you want to show Meter data in DecimalDegree layer, you need convert them by our Proj4Projection class to implement convert shapes or convert whole layer, you can search that in our forum or wiki. We use that class the same way in all of our products. 
  
 Sorry our online documentation is not enough detail, I think you can did some search in our wiki, and if your question related with some core features you can reference other products, the usage is the same about core features. 
  
 Regards, 
  
 Don

Hi Don,


On the SERVER Side I am able to use the TabFeatureLayer class from ThinkGeo.MapSuite.Core namespace on the server (e.g. ASP.NET page, WCF service) as per your example above. I manage to create index if required, create the layer using the .TAB file and then retrieve it from the CLIENT (Silverlight application's code behind).


I was not able to see that class or a corresponding one to render a .TAB file (from resources or isolated storage) in the client side (either one of the DLLs for client).


Am I missing something? Is my terminology confused?


As for the projections - I will try to look as per your suggestion.


Thanks,


Tomer



Hi Tomer, 



Today I talk with our developer, and make sure that I have some misunderstand about silverlight. 



I am sorry to confuse you.  I made sure the tab only supportted in server side but not supportted in client side. 



I understand the "client side" incorrect before, sorry for that again. 



For projection, if you have any question please let me know. 



Regards, 



Don