ThinkGeo.com    |     Documentation    |     Premium Support

DrawnException

MapSuite Team,


I've been encountering DrawnExceptions from an InMemoryFeature Layer that is used to track vehicle GPS positions in real-time.


After continuously receiving these I zoomed-in and then received a .NET exception.  At the zoomed-in level it was attempting to make MrSid rasters visible.


The following are the exceptions:


Unable to TrackingLayer.EditTools.CommitTransaction


Message=Cannot insert items into an STR packed R-tree after it has been built.


DrawnException

Message=Destination array was not long enough. Check destIndex and length, and the array's lower bounds.


Framework Version: v4.0.30319

Description: The process was terminated due to an unhandled exception.

Exception Info: System.NullReferenceException

Stack:

   at ThinkGeo.MapSuite.WpfDesktopEdition.Tile.DrawException(ThinkGeo.MapSuite.Core.GeoCanvas, System.Exception)

   at ThinkGeo.MapSuite.WpfDesktopEdition.Tile.Draw(ThinkGeo.MapSuite.Core.GeoCanvas)

   at ThinkGeo.MapSuite.WpfDesktopEdition.Tile.OxU=(System.Object)

   at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object)

   at System.Threading.ExecutionContext.runTryCode(System.Object)

   at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)

   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)

   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)

   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()

   at System.Threading.ThreadPoolWorkQueue.Dispatch()

   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()


 


I had encountered the DrawnExceptions in the past and had that fixed, but now that I have enhanced my application to display MrSid's they have returned.  It seems that there is some array within MapSuite that is not large enough.


I have 30 layers as part of the application plus the MrSid's.  The application also takes in a constant GPS feed of 20+ GPS positions per second.


 


I am also burdened with attempting to figure out to make the map faster.  Some times it can takes as much as 60 seconds to draw any given extent.


The application uses four LayerOverlays: 16 MrSid rasters are contained with one LayerOverlay, another LayerOverlay contains one shape file comprised of a 140MB shp file and a 240MB dbf file, another LayerOverlay contains 25 shape files, and then two LayerOverlays for InMemoryFeature Layer.


 


Any thoughts or assistance on these issues would be appreciated.  I have been struggling with performance for quite some time and have been unable to get to the point where I need to be.


Regards,


Dennis


 


 



Hi Dennis,  
  
 Thanks for your post, Would you please provide us a self-contained sample or some code to test,  If it’s bigger than the allowed upload size, you can send it to forumsupport@thinkgeo.com?  
  
 Waiting for your further information.  
  
 Johnny

 Johnny,


I struggle when asked for sample code from the MapSuite Team.  Mine is a  real-world application that is highly integrated.  For example, my code is not  simple straight-line code that loads layers and sets styles, etc.  All setting  of layers, styles, icons, etc are done through a set of configuration tables.   It is nearly impossible to provide sample code.  I would have to send you my  entire application, configuration, and data layers.


The CommitTransaction and DrawnException I had in the past and was able to  code-around and prevent these errors.  On my original post MapSuite had asked  for sample code and at the time I had attempted to provide, but was unable.


How else can we attack these issues?  For example, on the DrawnException it  states 'Destination array was not long enough. Check destIndex and length, and  the array's lower bounds'  It seems to me that this is some error within  MapSuite and is out of application control.  Or is there some property of the  InMemoryFeature Layer that has to be set to ensure that interal arrays are large  enough?


And the .NET exception that I received is not in the application, but  somewhere in MapSuite.


Thanks,


Dennis



Hi Dennis, 
  
 We found the issue is caused by the building index in multi-thread. We did some enhancements on the building index part in InMemoryFeatureSouce, please try the latest version 6.0.360.0 and let us know then. 
  
 Thanks, 
 Howard

 Howard,


Thanks very much for discovering & fixing the issue.  As soon as I can I will get the latest build.


I continue to enjoy working with ThinkGeo and the MapSuite product.


Regards,


Dennis


 



Hi Dennis, 
  
 I hope our enhancement will be helpful to your situation, if  you have any more problem, please feel free to let us know. 
  
 Hope it helps 
  
 Johnny