ThinkGeo.com    |     Documentation    |     Premium Support

Daily Build broke my app

 In Desktop 4.5.0.0 the following code works.  In 4.5.137.0 the last line returns a 'System.NullReferenceException was unhandled' error (see below).  Why? What do I do to fix?


 



private void LoadRaster()
        {
            GdiPlusRasterLayer RasterLayer = new GdiPlusRasterLayer("Sedgwick_1ST_FLOOR_Site.png", "Sedgwick_1ST_FLOOR_Site.pgw");//, tempFile);// (@"East179-white.png");// (@"algoa.jpg");//, @"59and8.jgw");//   (@"algoa.jpg", imageExtents);
            RasterLayer.UpperThreshold = double.MaxValue;
            RasterLayer.LowerThreshold = 0;
            RasterLayer.Transparency = 255;
            
            RasterLayer.Open();
            RectangleShape rect = RasterLayer.GetBoundingBox();
            RasterLayer.Close();

            LayerOverlay ImageOverlay1 = new LayerOverlay();
            ImageOverlay1.Layers.Add("RasterLayer", RasterLayer);
            Map.Overlays.Add(ImageOverlay1);

            Map.CurrentExtent = DoubleSize(rect);

            double LargestScale = Map.CurrentScale;
            RecalculateZoomLevels(LargestScale, .30);
            Map.ZoomToScale(Map.ZoomLevelSet.ZoomLevel03.Scale);
            
            Map.Refresh();
        }

Thank you,

Dave  
System.NullReferenceException was unhandled
  Message=Object reference not set to an instance of an object.
  Source=MapSuiteCore
  StackTrace:
       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.GdiPlusRasterLayer.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.tRM=(GeoCanvas thM=)
       at ThinkGeo.MapSuite.DesktopEdition.Overlay.Draw(GeoCanvas canvas)
       at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.4RU=(IEnumerable`1 4hU=)
       at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.3xU=(RectangleShape 4BU=)
       at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.LhY=()
       at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.KhY=(Int32 KxY=)
       at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.Refresh()
       at MapMemTest.MapTab.LoadRaster() in C:\Users\Dave\Documents\Visual Studio 2010\Scratch\MapMemTest\MapMemTest\MapTab.cs:line 56
       at MapMemTest.MapTab..ctor() in C:\Users\Dave\Documents\Visual Studio 2010\Scratch\MapMemTest\MapMemTest\MapTab.cs:line 23
       at MapMemTest.Form1.makeATabToolStripMenuItem_Click(Object sender, EventArgs e) in C:\Users\Dave\Documents\Visual Studio 2010\Scratch\MapMemTest\MapMemTest\Form1.cs:line 21
       at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
       at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
       at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
       at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
       at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
       at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
       at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.ToolStrip.WndProc(Message& m)
       at System.Windows.Forms.MenuStrip.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(Form mainForm)
       at MapMemTest.Program.Main() in C:\Users\Dave\Documents\Visual Studio 2010\Scratch\MapMemTest\MapMemTest\Program.cs:line 18
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 



Dave, 
  
 Sorry for the inconvenience, we fixed another issue for the image layers and it caused the png file exception, we have found out and fixed yet, please get the latest version of Development branch for desktop edition and try again, 
  
 Any more questions please let us know, 
  
 Thanks, 
  
 Scott,

Where do I get that?  I went to 'Daily Development Builds' under 'My Product Downloads' in the Customer Portal, but all I see is version 4.5.137 from 3/17/11  (the buld I have an issue with)


Dave



Dave,


Thanks for your post and feedback.
 
I am sorry to say that our daily build system is encountering some issues during the weekends, now, you should be able to see the new updated version(4.5.141) built today, please try to get it. If you still have problem, please contact our support (support@thinkgeo.com).
 
Any more questions please feel free to let me know.
 
Thanks.
 
Yale

Build 4.5.142 does indeed solve my problem of Map controls not letting go of their memory when Disposed. Thank you...


But is has caused another. I have been saving the base raster and all FeatureLayers in files by binary serializing a 'View' class that contains the raster and a List<FeatureLayer> as a byte[]. When I save a View using .142, I can deserailize the byte[] back to a View instance just fine, but when I deserialize a View byte[] that was serialized using 4.5.0 I get corrupted FeatureLayers.


It appears that the structure of the FeatureLayer class was altered between 4.5.0 and 4.5.142 so that when a BinaryFomatter uses the .142 FeatureLayer class as a template to decode a 4.5.0 FeatureLater byte[] data winds up in the wrong fields.


My customer has a fair number of complex views in their library and .142 breaks them all because of this change.


I am not against writting a utility for them that would convert each layer in each view to the .142 format, but I am not sure how I could accomplish this (deserialize with the 4.5.0 version of the FeatuerLayer class and serialize with the 4.5.142 version) short of a special build of the DLL that has both a FeatureLayer class and a FeatureLayer450 class.


Help...


Dave



Correction, it is the InMemoryFeatureLayer I am using, so the change is in that calss or one of its base classes (not necessarily the FeatureLayer itself).


Dave



David, 
  
 Could you upload one of the binary file which is serialized from a FeatureLayer(ShapeFileFeatureLayer or InmemoryFeatureLayer)? It would be good and helpful if the code snippet can also be provided to show you are doing the serialization and deserialization. 
  
 Any more questions please feel free to let me know. 
  
 Thanks. 
  
 Yale 


Sure... at least I would if it were smaller than 500kb...  Since I can't upload it here due to the forum's 500kb limit, I will send it to support@ and ask them to forward it to you.


The file is just the serialized form a single instance of a View class. The View class has members that are InMemoryFeatureLayers as defined in 4.5.0  I have also included the View class.


Here is how I serialize the View class:



Stream stream = File.Open(filename, FileMode.Create);
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, _view);
stream.Close();

Here is how I deserialize the View class:



Stream stream = File.Open(filename, FileMode.Open);
BinaryFormatter bFormatter = new BinaryFormatter();
var _view = (View)bFormatter.Deserialize(stream);
stream.Close();


David, 
  
 Please get the 4.5.0.142 version from the release branch and try again, this is the release version and I just tested it, there are no errors for your requirements. The serialize problem is from the new APIs, we added several new fields in the FeatureLayer class for development branch, so it caused the deserialize error.  
  
 So please get the 4.5.0.142 from release branch if there are any other problems please let me know, 
  
 Thanks, 
  
 Scott,

 Where do I get .142 release branch?  In 'My Product Downloads' I only have 'My Purchased Products' lising 4.5.0 and 'Daily Development Builds' listing 4.5.142.


I see no place to get Release builds?


 


Dave



Dave,


Here is the screen shot for the product daily build branch:



I guessed you looked for the 4.5.0.142 from the development branch so you cannot find out it,


Thanks,


Scott,



 Does it matter that I am not an Evaluation customer?  I am using the Full package... don't I need the DesktopEditionFull package not DesktopEditionEvaluation?  I don't see a place to get the Full Edition Daily Production build.


Dave



Dave, 
  
 I’m not sure what’s the exact issue in your customer portal page, because I don’t have permission to access the customer portal, if you cannot see the place to get the full version please contact support@thinkgeo.com to get the product 4.5.0.143 version. Also please let tell your customer portal issue to ThinkGeo Support that you cannot see the place to get the Full Edition Daily Production Build. 
  
 Thanks, 
  
 Scott,