ThinkGeo.com    |     Documentation    |     Premium Support

Not Valid WKT?

I have downloaded the following (see below) from the Census as the polygon definition of the zip code 08037.


However, when I execute the following code, I get the following error:


PolygonShape polyShape = new PolygonShape(WKT);


wellKnowText

Parameter name: The shape you provided does not pass our simple validation.


string WKT = " POLYGON ((-74.930051996403492 39.68872300061183 0 0, -74.930003 39.688638999999995 0 0, -74.929919 39.688545 0 0, -74.929807 39.688441999999995 0 0, -74.928685 39.688212 0 0, -74.928203 39.687946 0 0, -74.927916 39.687881 0 0, -74.927737 39.687791 0 0, -74.927729 39.687726999999995 0 0, -74.927686 39.687644 0 0, -74.927522 39.687491 0 0, -74.92739 39.687523 0 0, -74.927368 39.687523 0 0, -74.927236999999991 39.687523 0 0, -74.927092 39.687438 0 0, -74.927062996763411 39.687324001842363 0 0, -74.927094 39.687221 0 0, -74.927134 39.687096 0 0, -74.927182 39.686988 0 0, -74.92718599915122 39.686972002473162 0 0, -74.927151 39.686862 0 0, -74.92704599999999 39.686735999999996 0 0, -74.92694 39.686755999999995 0 0, -74.926881999999992 39.686715 0 0, -74.926883 39.686622 0 0... It goes on quite a bit more...


What am I doing wrong?  On the SQL Server 2008 spatial tab the zip displays correctly.


bob


 



Hello Bob, 
  
 This exception is very clear, the polygon does not validate, could you please paste the full WKT data then I can make some test on it? 
  
 Regards, 
  
 Gary

There are a number of things that could be wrong, like the polygon crossing over itself (a figure eight) or perhaps the starting and ending points are not identical.  We have seen tiny little sliver artifacts where the outside crossed over itself only when zoomed in really, really, far.  ESRI products seem to like to make these little tiny slivers when processed in certain ways which become invalid when moved from shapefiles to SQL Server.  ThinkGeo might have implemented more checks of their own. 
  
 This page gives you an idea of the kind of things that can make a shape invalid: 
 blogs.msdn.com/b/edkatibah/archive/2009/06/05/working-with-invalid-data-and-the-sql-server-2008-geography-data-type-part-2.aspx 
  
 Allen 
  
  


I discovered my problem.  It was I was querying SQL using geographyfield.ToString() when I should have used geographyfield.STAsText(). 
  
 The problem has gone away. 
  
 Thank you. Sorry for the trouble… 
  
 bob

Glad to hear that your problem has been solved Bob, and more, thank you for your help on this post Allen, you are right, we are using the CLR Types as our default geometry topology function which is more strict than NTS we used before, so maybe some geometries could pass the validation before we integrate the CLR types and now are regarded as invalid. If some one wants to work with the invalid geometries which are valid before, one property should be set: 
 BaseShape.GeometryLibrary = GeometryLibrary.Managed; // use the old NTS logic. 
 BaseShape.GeometryLibrary = GeometryLibrary.Unmanaged; // use the new CLR Types logic. 
  
 Edgar