ThinkGeo.com    |     Documentation    |     Premium Support

Why does the runtime error happen?

Hi Yale


I am not sure why the runtime error, " The Shape you provided does not pass our simple validation. There are no points in the shape", happens when trying to generate the second WGS84 file. After stopping debugger, the shape file was actually generated and can be seen in Map Explorer without the "no point" problem. What could be wrong?


Please take a look at the attachment. Sorry the attached file was a wrong one. Please use the updated one for reference.

I notices the second shp file generated has certain broken line. But do not understand why it happens after executing the second

conversion command for WGS84_pipeline.shp generation. Could you take a look at the attached?


 


Thanks.


 


 


 



001_MapFile.txt (1.33 KB)

Franklin,


I doubt there are some line features in the target shape file (shoreline.shp) lack points (point number is 0 or 1), which cannot form a valid line shape.
 
I notice you did not set any projection to the shape file, and does use the spatial index for it, so I think it should behave the same way with Map Suite Explorer. Could you provide me the target shape file to verify? It definitely would be helpful to identify the problem.
 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale

Hi Yale, 





Could you please read the updated message (001_MapFile.txt) in the above? I uploaded the wrong file and now have it corrected. How could the execution of the 2nd command for generating the WGS84_pipeline.shp suffer from the problem of lack of points? I did notice the generated shp file contains certain broken line, how can this be avoided? Thanks alot.


On second thought, were you implying that the projection has to be defined each time a local map goes through the transformation to its WGS84 counterpart?



Franklin 

 



Hi Franklin: 
  
 We don’t know where the problem is just according to the code snippet. So could you give us more information? Such as Exception stack-trace. If you are at debug mode, could you catch the exception and dump the current shape that couldn’t pass the validation. 
 We would recreate your issue if we have the shape files. Don’t worry about the data’s copyright, we will delete them after solving your issue. If size is limited or it’s private data, you can send to forumsupport@thinkgeo.com and let him forward to James. 
 By the way, which file version of DesktopEdition you are using? 
  
 Thanks, 
 James

Hi James, 
  
  I am sending the rar file for the problematic shp file generation test to forumsupport. Could you place the decompressed files  in the directory path below and perform the following: 
 Proj4Projection proj4Projection = new Proj4Projection(); 
             proj4Projection.InternalProjectionParametersString = "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.9996 +x_0=500000 +y_0=10000000 +ellps=bessel +towgs84=-404.78,685.68,45.47,0,0,0,0 +units=m +no_defs no_defs"; 
  
             proj4Projection.ExternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326); //Geodetic (Longitude/Latitude) 
             proj4Projection.Open(); 
  string pipelinepath = @"C:\Map shp files\WGS84\WGS84_pipeline.shp"; 
  if (!File.Exists(pipelinepath)) 
             ShapeFileFeatureLayer.SaveToProjection(@"C:\Map shp files\pipeline.shp", @"C:\Map shp files\WGS84\WGS84_pipeline.shp", proj4Projection, OverwriteMode.Overwrite); 
 The program will stop at the last statement due to "no points in the shp file" problem. 
 The pipeline.shp can be shown correctly in my wpfmap before the transformation. 
 Could you please shed light on solving the problem? 
 Thanks very much. 
  
 Franklin

Franklin,


I found the problem is caused by the wrong shape files, the 1573 record is incorrect, because it's a multi line shape, but with out any lines.


You can try following code to see it:


            ShapeFileFeatureSource source = new ShapeFileFeatureSource(@"C:\Map shp files\pipeline.shp");
            source.Open();
            Feature feature = source.GetFeatureById("1587", ReturningColumnsType.AllColumns);
            MultilineShape line = feature.GetShape() as MultilineShape;
            if (line.Lines.Count == 0)
            {
                throw new Exception("The Shape you provided does not pass our simple validation.");
            }
            source.Close();

Thanks,


James



Hi James, 



Thanks very much for the enlightening. How did you figure out the magic number 1587? You are terrifically awesome! 



Franklin



Hi James, 
  
   Did you judge the map feature (pipeline) as Multiline shape by looking at its geometry with non-closed line segments in ThinkGeo Explorer?  
 I am still not sure what made you think of the 1587?  
 Thanks again. 
  
 Franklin

 


Franklin,
 
It is MapSuite’s magic, I tell you three steps to find it.
Create ShapeFileFeatureSource
GetAllFeatures
Loop each Feature and call IsValid() method, I found feature which is 1587 is not valid.
 
1587 is an empty multi line shape, you couldn’t see anything when you display it on the map, but no exception. When you call ShapeFileFeatureLayer.SaveToProjection(), it will throw the exception because the shape of feature is  invalid that it lack of many thing, such as boundingbox, well known text.
 
I don’t know how you create this shapefiles, if you use our API to create a shapefiles, every record would be valid.
 
There is no workaround, to solve this problem you have to re generate your shapefiles.
 
Thanks,
James

James, 
  
  Thanks a lot for teaching me a useful method for verifying a third party shape file. I have another shape file also runs into same trouble. So I have asked them to regenerate the shape files. By the way, does the world map kit have the resource for generating Indonesie map in local coordinates based on P2 Exc-T9 (Gunung Segara-Samboja) Datum?  
  
 Franklin

Franklin,


Thanks for your post and reply and status updating.
 
I am sorry to say that we only provide the “DecimalDegrees” and “SphericalMercator” projections for now for the WorldMapKit data, sorry for the inconvenience.
 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale