ThinkGeo.com    |     Documentation    |     Premium Support

The shape you provided does not pass our simple validation

Hi, 



I get the error ‘The shape you provided does not pass our simple validation’ when trying to read in certain MapInfo tables.  I have attached a zip file with 2 MapInfo tables.  The ‘good’ table has a polyline with 2 line sections and ThinkGeo handles it fine.  The ‘bad’ table has a similar polyline, also with 2 line sections but I get the error when trying to read that one.  



Thanks,

Stephen


Hi Stephen, 
  
 Seems like we are unable to download the attached file, maybe it’s broken, would you please re-upload or send it to forumsupport@thinkgeo.com
  
 Thanks, 
 Johnny

Hi Johnny,



Something odd is happening when uploading files.  It’s happening on different browsers as well.  But I have emailed the files.



Stephen

Hi Stephen,



Thanks for your files.



It looks a Multiline in the bad file contains a line and a point, which isn’t valid shape.



Please see attached image.



Regards,



Don







Hi Don,



Yes I saw that when I opened it in MapInfo.  I realise this is bad data but our clients won’t know this as it opens in MapInfo with no issues at all.



But as soon as I try to open a table with these bad objects in them, I get a crash.  Below is how I try to open the file.



FeatureLayer lyr = null;

FileInfo fp = new FileInfo(filepath);



TabFeatureLayer tabLayer = new TabFeatureLayer(fp.FullName);

tabLayer.RequireIndex = false;

tabLayer.Name = fp.Name;



lyr = tabLayer;

lyr.Open();



Collection<FeatureSourceColumn> allColumns = lyr.FeatureSource.GetColumns();

// Crashes on the below line

Collection<Feature> allFeatures = lyr.QueryTools.GetAllFeatures(ReturningColumnsType.AllColumns);



allColumns is populated correctly but when I try to read the features it crashes. So I can’t even do my own validation on this to check if the table contains good or bad data.  But like I said, I can’t control the data coming in so this could happen on a fairly regular basis.



Any suggestions on how to handle this would be greatly appreciated.



Stephen

I also tested a Collection Object and that won’t read in either.  






Hi Stephen, 
  
 I am sorry it looks we cannot find a workaround to avoid this validation if you want to get the feature from tab file. This validation is thrown when we try to create feature, and all of our API need to return feature. 
  
 If you want to handle that, you can try something like this: 
  
 1. call worldLayer.FeatureSource.GetAllFeatures(IEnumerable<string> returningColumnNames, int startIndex, int takeCount), to get feature one by one, if anyone throw exception, just ignore that. 
  
 2. override GetAllFeaturesCore and implement your custom logic to read feature from tab file, but it looks our library about that is not public, so it’s not a good choice. 
  
  
 Regards, 
  
 Don