ThinkGeo.com    |     Documentation    |     Premium Support

MSSql2008FeatureLayer Geography Column Not Displaying in Map

Hi,


I have a SQL Server 2008 database with a table that has a column with the data type geography.


I am trying to run the LoadAMSSQL2008FeatureLayer demo...I've confirmed that I am connecting correctly to the database and the table.The errors I receive when displaying the map is:


"An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alsias to a valid name. Incorrect syntax near '.'."


AND


"Can not find the geometry column. Please set the CustomGeometryColumnName property to specific it."


I tried setting the CustomGeometryColumnName to the name of my geography column, but then I get the error: "Operand type clash: sys.geography is incompatible with sys.geometry." This makes sense, since I am using geography columns.


Does anyone know what I should try next?


Thanks,


Treasa



 Hi  Treasa,


 
We didn’t find the error you described, what version are you using? Can you provide some of your data and your code for us to test?
 
Here is our test code
Data table:

Create table test
(
id int identity(1,1),
data geography
)

INSERT INTO test (data)
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656 )', 4326));

Code:

            MsSql2008FeatureSource msSql2008FeatureSource = new MsSql2008FeatureSource(ConnectionString,tablename, idcolumn);
 
            msSql2008FeatureSource.CustomGeometryColumnName = "data";
            msSql2008FeatureSource.Open();          
            Feature feature = msSql2008FeatureSource.GetFeatureById("1", ReturningColumnsType.AllColumns);

Regards,
 
Gary
 

Hi Gary,


I am using Map Suite Web Evalution Edition 6.0. My code is modifying the sample LoadAMSSQLServer2008FeatureLayer provided with the evaluation edition.


I've confirmed I can open the layer, query the features, and close it.


MsSql2008FeatureLayer sql2008Layer = new MsSql2008FeatureLayer(sql_connection_string_builder.ToString(), "rm_GPSSchema.GPSNavigationData", "ID"); 

sql2008Layer.CustomGeometryColumnName = "Location";

sql2008Layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.Capital1;

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

Map1.StaticOverlay.Layers.Add("Sql2008Layer", sql2008Layer);



 



 


 

 




Other information:


I tested with your code, and it works fine. In fact, that is how I tested that I was correctly connecting to the database and getting data from it. I am successful in getting MsSql2008FeatureSource to work.


I am trying to get the MSSql2008FeatureLayer to work, not the MsSql2008FeatureSource. It is my understanding that this layer will automatically read from my database, and display the geographic data into my website. However, as displayed in my previous post, I am getting errors using the MSSql2008FeatureLayer.


I used your test table in my database, and when I try to make a MSSql2008FeatureLayer from it - I still get the same error of "Operand type clash: sys.geography is incompatible with sys.geometry".


 Please advise.


 



Hi Treasa,


I'm sorry we cannot reproduce your issue, we made a video here, please have a look to see if there is anything different with yours, and attached is out test code.


Regards,


Edgar



post10962.txt (1.2 KB)

I copied your code exactly and am still experiencing the same error. I even tried it with 2 different MS Sql databases (one the express version and one the enterprise version) - same error from both databases (operand type clash sys.geography is incompatible with sys.geometry). The error has to be coming from the ThinkGEO code because that error string is being displayed directly on the map - but I have no idea what else to try. Is there a newer library/dll I should download or something? What version of SQL Server are you using? We are using SQL Server 2008 R2 Express for development.


In the meantime, I have written the following code as a workaround (and it displays nicely):


InMemoryFeatureLayer inMemoryLayer = new InMemoryFeatureLayer();

inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.Capital1;

inMemoryLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

MsSql2008FeatureSource sql2008source = new MsSql2008FeatureSource(sql_connection_string_builder.ToString(), "rm_GPSSchema.GPSNavigationData", "ID");

sql2008source.CustomGeometryColumnName = "Location";

sql2008source.Open();

foreach (Feature feature in sql2008source.GetAllFeatures(ReturningColumnsType.AllColumns))

{

    inMemoryLayer.InternalFeatures.Add(feature);

}

sql2008source.Close();

Map1.DynamicOverlay.Layers.Add("Sql2008Layer", inMemoryLayer);


Basically I convert the FeatureSource into an InMemoryFeatureLayer. It is an extra step coding-wise, but will there be a performance hit doing it this way? Are there any other workarounds you might recommend?


 



Are you using the latest version 6.0.248.0 or the 6.0.0.0? We get it worked with the latest version but it threw exceptions with the 6.0.0.0. Could you please try the latest version? 
  
 Thanks, 
 Edgar

Hi,


I updated the references in my project - I had to also upgrade my project to .NET Framework 4.0 - is this right for these new dlls?


Regardless, I am still receiving the same error: "Operand type clash: sys.geography is incompatible with sys.geometry"


Please advise.



As there is still problem in you case, I think the best way is to send us your sample and the backup of your database table, then we could have a test with them, you can send them to forumsupport@thinkgeo.com
  
 P.S. The if you can make a simple sample(small enough) that could recreate the issue, that’ll be good. 
  
 Thanks, 
 Edgar

Hi, I have sent an email with the requested information. Please let me know what you find out.



Treasa, 
  
 Thanks for your sample, you just need to change the table name from dbo.ThinkGEOTestTable to ThinkGEOTestTable. 
  
 Regards, 
 Edgar

Thank you! Thank you! Thank you!


It works great now. I appreciate all the effort you provided in helping me resolve this issue.


Treasa



You’re welcome, if you have any other questions, please let us know. 
  
 Regards, 
 Edgar