ThinkGeo.com    |     Documentation    |     Premium Support

The given key was not present in the dictionary

 I get this exception frequently (but not always) when calling Map.Refresh() or when zooming or resizing. This can happen and then during the next run (with no code changes) it might not happen.


What causes this? What dictionary?


Dave


 


 



   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)


   at ThinkGeo.MapSuite.Core.GdiPlusRasterSource.GetTemplateBitmap(Int32 tempReturnWidth)


   at ThinkGeo.MapSuite.Core.GdiPlusRasterSource.GetImageCore(RectangleShape worldExtent, Int32 canvasWidth, Int32 canvasHeight)


   at ThinkGeo.MapSuite.Core.RasterSource.GetImage(RectangleShape worldExtent, Int32 canvasWidth, Int32 canvasHeight)


   at ThinkGeo.MapSuite.Core.RasterLayer.DrawCore(GeoCanvas canvas, Collection`1 labelsInAllLayers)


   at ThinkGeo.MapSuite.Core.Layer.Draw(GeoCanvas canvas, Collection`1 labelsInAllLayers)


   at ThinkGeo.MapSuite.DesktopEdition.LayerOverlay.DrawCore(GeoCanvas canvas)


   at ThinkGeo.MapSuite.DesktopEdition.Overlay.MainDraw(GeoCanvas canvas)


   at ThinkGeo.MapSuite.DesktopEdition.Overlay.Draw(GeoCanvas canvas)


   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.x03e3d48bcfe7bb6c(IEnumerable`1 xa6f0db4f183189f1)


   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.xff5b27c00f9678c2(RectangleShape x178b193eec228e6e)


   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.xe3cee4adb9c72451()


   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.x9ac8c50f434f4b39(Int32 xb565f4681f05557a)


   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.Refresh()


   <snip>



 



David,


I test GdiPlusRasterLayer as following code, it works properly. Could you try it at your machine?


        private void LoadAGeoTiffImage_Load(object sender, EventArgs e)
        {
            winformsMap1.MapUnit = GeographyUnit.DecimalDegree;
            winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);

            GdiPlusRasterLayer worldImageLayer = new GdiPlusRasterLayer(@"C:\test.tif", new RectangleShape(-180, 90, 180, -90));
            worldImageLayer.UpperThreshold = double.MaxValue;
            worldImageLayer.LowerThreshold = 0;
            worldImageLayer.IsGrayscale = false;

            LayerOverlay ImageOverlay = new LayerOverlay();
            ImageOverlay.Layers.Add("WorldImageLayer", worldImageLayer);
            winformsMap1.Overlays.Add(ImageOverlay);
            worldImageLayer.Open();
            winformsMap1.CurrentExtent = worldImageLayer.GetBoundingBox();
            worldImageLayer.Close();
            winformsMap1.Refresh();
        }

Thanks


James



Yes, that is the way I am going it...  let's try this the other way...  please load this image and worldfile and see if you can pan and zoom repeatedly a dozen times or so without an error.


I would still like to know what dictionary the error is talking about... I am not aware of any dictionaries in my code...


 
Dave

Buchanan_sat.txt (127 Bytes)

David, 
  
 I think maybe it’s a protential bug, but even I use your world file instead of pass in a rectangleShape, it still doesn’t throw exception while I pan or zoom in/out many times. So I think maybe the special environment caused this problem, Could you provide more information, such as your system, your language and which version of MapSuite you using? 
  
 Thanks 
 James

James, 
  
 I am seeing exactly the same exception using version 4.5.  Is there any additonal information available concerning the problem? 
  
 Thanks, 
 Nicole

Nicole,  
  
 It seems that we have not been able to recreate the issue in our environment. Could you provide more information, such as your operating system, your language, version of the .NET Framework installed. Perhaps provide a small sample application that shows the code you are using and can recreate the issue?

Nicole,  
  
 It seems that we have not been able to recreate the issue in our environment. Could you provide more information, such as your operating system, your language, version of the .NET Framework installed? Perhaps provide a small sample application that shows the code you are using and can recreate the issue?

Ryan, 
  
 Is there an e-mail address to which I can send a sample application? 
  
 Thanks, 
 Nicole

Nicole,


The best way to do this would be to create a Ticket in our Customer Portal located at helpdesk.thinkgeo.com. The ticket system has the ability to accept uploads and will keep your code in a location that only you and our enginneers can access.



Ryan, 
  
 I’ve created the ticket.  It’s #3332
  
 Nicole

Ryan, 
  
 Upgrading to 4.5.94.0 (as per recommendation in ticket 3332 response) did indeed fix the problem. 
  
 Thanks, 
 Nicole

Nicole, 
  
 If you still have any other questions please let us know, 
  
 Thanks, 
  
 Scott,