ThinkGeo.com    |     Documentation    |     Premium Support

MsSql2008FeatureLayer not displaying

Hi,


I am trying to display a layer from a sql server 2008 db. The layer is the cntry02.shp that comes with the samples and I imported it using Shape2Sql program and set the srid to 4326. However, when I run the map I get a completely blank map. I have done a count and I get the same count as the number of records in the db.


 


This is my code snippet:


Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));

                Map1.MapUnit = GeographyUnit.DecimalDegree;

                string connectString = "Data Source=xxx.xxx.xxx.xxx;Initial Catalog=xxxxx;User Id=xx;Password=xxx;";

               

                MsSql2008FeatureLayer sql2008Layer = new MsSql2008FeatureLayer(connectString, "cntry02", "id_col");

                sql2008Layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;

                sql2008Layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

                sql2008Layer.Srid = 4326;



                

                LayerOverlay worldOverlay = new LayerOverlay("WorldOverlay");

                worldOverlay.Layers.Add(sql2008Layer);

                worldOverlay.Name = "ThinkGeo Map";

                Map1.CustomOverlays.Add(worldOverlay);



                Map1.SyncClientZoomLevels(sql2008Layer.ZoomLevelSet);



Leon,


Thanks for your post and questions.
 
Could you have a try on the following code snippet to see if you could get all the features back?
 

string connectString = "Data Source=xxx.xxx.xxx.xxx;Initial Catalog=xxxxx;User Id=xx;Password=xxx;";
 
MsSql2008FeatureLayer sql2008Layer = new MsSql2008FeatureLayer(connectString, "cntry02", "id_col");
sql2008Layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;
sql2008Layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
sql2008Layer.Srid = 4326;
sql2008Layer.Open();
Collection<Feature> allFeatures = sql2008Layer.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns);
int count = allFeatures.Count;

 
Any more information would be appreciated.
 
Thanks.
 
Yale

Hello Yale,


I have tried the snippet and it does in deed return all the features but still nothing on the map.


 


Thanks


 


 



Hello Yale, 
  
 Is there something specific I am missing? To my understanding, the code is consistent with the examples provided but there are no results.  
  
 Is there any help someone can offer. Please.

Leon, 
  
 Since you can get all the features successfully, we can say the data provider and feature source are working fine. I guess the problem lays in other part of the code such as where you set the extent or the map unit. So could you please check: 
  
 1, if the MapUnit is correct. Maybe it should be Meter or something else instead of DecimalDegree. 
  
 2, if map’s CurrentExtent is set correctly. We can use “layer.open(); Map1.CurrentExtent = layer.GetBoundingBox();” to set the full extent. 
  
 3, if the style is set correctly. For example, If the features in feature source are all polyline shapes, it will not display anything if we only set DefaultAreaStyle, we need to set DefaultLineStyle instead. 
  
 If the problem still exists, could you please send us your database backup file so we recreate it here? 
  
 Thanks, 
  
 Ben

Hi Ben,


Thank you for the assistance.


I applied the changes and they helped. I also noticed that if one has used the msscmd command on a db before, it can cause issues.


 


 


 



Hi Ben,


Thank you for the assistance.


I applied the changes and they helped. I also noticed that if one has used the msscmd command on a db before, it can cause issues.


 


 


 



Leon, 
 Glad that it helped and any questions please let us know. 
 Thanks, 
 Johnny 


 Hello, 



I have the same problem in this post, but I could not recognize the problem. Here is my Code: 



string connectString = "Data Source=XXXXXXXXXX;Initial Catalog=XXXX;User Id=XX;Password=XXXX;"; 



MsSql2008FeatureLayer sql2008Layer = new MsSql2008FeatureLayer(connectString, "dbo.capital", "ID"); 

sql2008Layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1; 

sql2008Layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 

sql2008Layer.Srid = 4326; 

//sql2008Layer.CustomGeometryColumnName = "geom"; 

sql2008Layer.Open(); 

Collection<feature> allFeatures = sql2008Layer.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns); 

int count = allFeatures.Count; 

//Map1.CurrentExtent = sql2008Layer.GetBoundingBox(); 

sql2008Layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimpleCircleStyle(GeoColor.StandardColors.White, 7, GeoColor.StandardColors.Brown); 



sql2008Layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level05; 



sql2008Layer.ZoomLevelSet.ZoomLevel06.DefaultPointStyle = PointStyles.Capital3; 



sql2008Layer.ZoomLevelSet.ZoomLevel06.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 





Map1.StaticOverlay.Layers.Add(worldLayer); 



LayerOverlay worldOverlay = new LayerOverlay("WorldOverlay"); 

worldOverlay.Layers.Add(sql2008Layer); 

Map1.CustomOverlays.Add(worldOverlay); 





By the way, all features are loaded correctly, but there is no effect on the map. 



My database table (dbo.capital) is created using shape2sql program. 



I do not know where is the problem. </feature>


 
Thanks in advance,
regards,
Victor Zakhary

could be: "dbo.capital", ? 
  
 Fire up Profiler to see what is being asked to MSSqlServer.

Victor, 
  
 MsSql2008FeatureLayer is related with your database setting and format, please provide more detail information, so that we can work for that. 
  
 Regards, 
  
 Don

hello everyone, 
 I have the same problem! 
 every thing is set correctly, and the amazing thing is that when loading the corresponding shapefile with ShapeFlieFeatureLayer Class, it renders all features correctly!! but when it comes to MsSql2008FeatureLayer, i don’t see nothing rendered on the WpfMap tool!!  
  
  
 MsSql2008FeatureLayer myDataLayer = null; 
         LayerOverlay overlay; 
         private void loadMap() 
         { 
             mapPane.MapUnit = GeographyUnit.DecimalDegree; 
             ShapeFileFeatureSource.BuildIndexFile(@“C:\Users…\RWA.shp”); 
             ShapeFileFeatureLayer mnShape = new ShapeFileFeatureLayer(@“C:\Users…\RWA.shp”); 
             mnShape.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country2; 
             mnShape.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
                 
             String connectionparams = “Data Source=XX;Initial Catalog= XX; User=XX;Password=XX;”; 
              
             myDataLayer = new MsSql2008FeatureLayer(connectionparams, “RWA_Boundaries”, “IDColumn”); 
              
            
             myDataLayer.Open(); 
             Collection <Feature> colFeature = myDataLayer.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns); 
             int number = colFeature.Count; 
             Console.WriteLine("umubare wa Features za Database ngizi: "+number); 
  
  
             myDataLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country2; 
             myDataLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
             overlay = new LayerOverlay(); 
             overlay.Layers.Add(new BackgroundLayer(new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean))); 
             mapPane.CurrentExtent = myDataLayer.GetBoundingBox(); 
             //overlay.Layers.Add(“mon-shape”, mnShape); 
             overlay.Layers.Add( “RwaSQLDB” , myDataLayer); 
             mapPane.Overlays.Add(overlay); 
             mapPane.Refresh(); 
              
         } 
  
 the Feature count returns the exact number of features contained in the database, but still can’t see nothing.

Hi Ben, 
  
 Could you please provide the wkt of the first record in the database layer? I think it’s the unit problem or style problem, 
  
 Thanks, 
 Edgar