ThinkGeo.com    |     Documentation    |     Premium Support

GetPerimeter method taking too long

Hi,



Recently I noticed one of our dialogs taking way too long to display and upon investigation discovered that the slow down was happening when an attempt was made to get the perimeter of a MultiPolygonShape, using GetPerimeter. It was taking about two and a half minutes for the method to return. The features that cause the problem seem to always be MultiPolygonShapes that are in a projected coordinate system. If I re-project the layer into a geographic coordinate system like WGS 84 the method returns pretty much instantaneously. 



In addition to the method taking so long to return it does not seem to be returning a correct result. For example, when getting the perimeter of the state of Alabama, GetPerimeter returns 953.74 miles. If I check the perimeter of the same feature using ESRI’s ArcMap I get 1110.8 miles. Interestingly, if I re-project the layer to WGS 84, GetPerimeter returns 1111.8 miles (I realize that areas will not necessarily be accurate when in a geographic coordinate system).



I am using the 7.0 release of MS Winforms.



I have attached a sample project which includes the feature.



Thanks!



Steve  

GetPerimeterDemo.zip (212 KB)

Hi Steven, 



Thanks for your post and sample, we have noticed the performance issue, this is because we made a update in the getlength method in 7.0 release, we have rolled it back, would you please get the latest version 7.0.7.0 or 7.0.0.7 and try it again? 



Another thing for your information is that while calculating length, it is better to convert to projection 4326, it has higher accuracy.
attached is the sample to do it, would you please check it? If you have any more question, please feel free to let us know.



Hope it helps



Summer

001_GetPerimeterDemo.zip (206 KB)

Thanks Summer, 
  
 I tested with MS version 7.0.0.14 and it works fine. 
  
 I am curious as to why the GetPerimeter method would return more accurate results in SRID 4326 (WGS 84) than in some projected coordinate system. I would have expected just the opposite. 
  
 Thanks, 
  
 Steve

Hi Steve, 
  
 Because currently our GetLength function based on 4326, any other projection should be convert to 4326 first then calculate. When convert it have some precision problem. So the 4326 have more accurate result now. 
  
 We maybe will enhancement the structure in future. 
  
 If you have any advise about this problem please let us know. 
  
 Regards, 
  
 Don