ThinkGeo.com    |     Documentation    |     Premium Support

Interrupting WinformsMap Refresh creating isolines

We are using MapSuite Desktop Edition verion 6.0.0.368 (daily production build) in our application.  We constuct isolines in layers which are displayed on the map.  Some of our isolines are so large (5,000,000 or more data points) that it takes MapSuite more than 6 minutes or more to refresh the WinformsMap control.  The refresh takes this long regardless of the operation (panning , zooming, drawing graphics, etc.) and the zoomLevel (even when zoomed out where the the final isolines represent just a few pixels on the display).


We would like to provide our user with a quicker response then 6 minutes or more per operation.  The user has requested an "abort" button that would cancel an active refresh.  There does not appear to be any way to interrpt the refresh or set a timeout that will return control.  Even some way to set zoomLevel would be desirable so that we could avoid the 6 minute delay until absolutely required to see the details of the isolines.


Any suggestions on how to reduce the 6 minutes refreshes would be welcome. 


Richard


 



 Hi Richard,


 
Thanks for your post, about “6 minutes of refresh” I am sorry to say that currently we don’t have data with 5,000,000 points to test, would you please upload your data for us to do a further test or send it to forumsupport@thinkgeo.com if it is confidential?
About “an "abort" button that would cancel an active refresh” ,  attached is a walkaround, would you please try it?
 
Hope it helps
 
Johnny

Post11270Sample.zip (206 KB)

Johnny,



Thanks for the response.



I am having the same issue as I have had previous time when I try to attach files to a forum topic.  The grid file with over 5,000,000 points is voer 93 MB.  Even after zipping the file it is over 25 MB.  When I try to attach a file this large the "upload" goes into a never ending wait and never uploads the file. 



Richard Styer

Hi Richard,


 


Sorry the uploading file blocks you again. As I remembered ,
our support guys opened a FTP address for you, could you upload this file to
it? If it’s unavailable now, could you please  contact support@thinkgeo.com
to get a new one? 


 


Thanks,


Johnny



Johnny, 
  
 I am not sure what happened to my previous reply.  I uploaded the large grid file to the ftp site last week called tempresult50001.zip.  You should be able to unzip the file and get the grid file with approx 2700 x 2100 data points which causes normal zoom and pan operation to take more than 6 minutes on our application.  That does include the isoline layer, a layer for labels and the layer for the the background fill areas (FeatureLayer). I did not not attempt to collect the time for just the isoline layer but it is a substantial part of the 6 minutes. 
  
 Thanks for your help  
  
 Richard Styer

I just checked my other active topic on the forum concenring the FDO extension 3.7 and ADRG and I see that my response for this topic that I made late last week is attached to that forum topic. Your response was also attached to that topic.  I am going to switch back to this topic for the future responses to try to keep the topics on separate issues in context.



I have attempted to add our code for isolines.cs to this response.  It is a little more involved.  We actually create three separate layers for the girds plus two layers for titles and boundaries…  We create an GridIsolineLayer for the isolines themselves.  We create another layer to display labels for the isolines a nd we create a FeatrueLayer to show the background fill between the isolines.  I not not sure which of these layers consumes the most resources as I haven’t attempted to capture the timing all each separately.  I am very surprised by your results in which you say that the isolines render is under 5 seconds.  I will need to do some additional testing to try to isolate the times by layer.  Combined the grid which is 2700 x 2100 points takes over 6 minutes to render on outr application.



Thanks for all you work on this.



Richard

IsoLines.cs.txt (91.8 KB)

Johnny, 
  
 You are absolutely correct.  I did further testing to check the time to render the map on pan and zoom operations when the only layer defined and shown was the isolines layer.  If you looked at our code, we are using InMemoryGridIsolineLayer to construct the isoliines.  This layer is very fast as you reported.   After initially building the layer, it takes only 3-5 seconds to render this iosline layer over the map when we have panned or zoomed.  It also takes only about a second longer to render the map, when we also have the labels for the isolines defined.  We use a second InMemoryGridIsolinelayer to build the labels for the isolines so that we can show or hide the labels for the isolines separatley from the isolines to allow our user to reduce the clutter on the map when they do not need to know the isoline values.  
  
 In fact it appears that nearly all the time is consumed by the background fill layer.  The code is using GridFeatureLayer to build this layer. We define an AreaStyle for each ClassBreakLineStyle to fill the areas between isolines with a background color. I had previously attempted to use an InMemoryGridFeatureLayer for this layer but I was not able to get it to work with the InMemoryGridFeatureLayer so the code is still using GridFeatureLayer to read the points from a disk file.  Rendering this layer takes 6 minutes for every pan and zoom operation.  Adding the isolines layers may add the 3-5 seconds that they require but the total time still amounts to about 6 minutes. 
  
 So the issue appears to be just using the GridFeatureLayer with a grid that has around 5,000,000 points.  The GridIsolineLayer (InMemoryGridIsolineLayer) is not a problem at all. 
  
 Thanks for all the work you have done on this. 
  
 Richard 


Hi Richard, 
  
 Thanks for narrowing the location of the issue, we are now check if there is anything we can do about the GridFeatureLayer, any thing new will be updated immediately. 
  
 Best Regards 
  
 Summer