ThinkGeo.com    |     Documentation    |     Premium Support

Single Tile Draw Time

I am wondering what the core reason for slower drawing time when getting deeper into the zoom levels?  I am using the world mapkit with the majority of the layers turned off (commented out of the rendering logic).  I am only displaying roads.  Is it only because there are more features on the levels?  That doesn't necessarily make sense to me, since if I zoom to level 20 to a place where only 1 road exists it still takes significantly longer to load than if I am at zoom level 14 where the same roads exist but are drawn as width 1 lines.  I guess the largest difference that I see is there are no labels on zoom level 14, but there are at lower levels.  


What I am looking for is a what else I can remove to make the layers render faster.  Once we have the tiles cached, performance is great, but getting the tiles cached is a long process.



Jake, 
  
 From your description, I think it’s the problem of the text style; for example using halo pen will be slower than the normal text style. Please remove the text style at level 20 and see how it works; if the speed is fine, we can be sure that text style is the problem. Then please show us the code of text style at level 20.  
  
 If the problem still exists, please send us a simple sample with the data at level 20 and we can check for you. 
  
 Thanks, 
 Howard

Thanks, I am using the default text style.  I am really just using worldmapkit data without any altering of the files.  I just noticed that as I get further through the zoom levels the time to render increases, even though the number of tiles on the screen doesn’t change.  Removing the labels completely helps speed up the generation of the tiles, but not a significant amount.  Even tiles that appear to have no features in them, just the background color appear to generate slower as you progress through the zoom levels.  I don’t think there is an issue at all, just wondering if there was a reason for that.

Jake, 
  
   Can you give us some example times for the drawing so we have an idea of what we are looking at?  I will also talk with the WPF desktop team to see how we can add some timing code to see where the issue is and let you know where to add the code.  One thing I do know is that in the previous version of world map kit we removed the midx indexes and created separate indexes for each shapefile.  This was to help users who want to only distribute certain states worth of data.  In doing that we took a substantial performance hit.  In the last two weeks we have modified the code a little bit and built an alternate index that gives us the best of both worlds and speeds things up quite a bit more.  I will see if we can release that to you also.  Do you know when you received the World Map Kit?  Do you have midx files in your data? 
  
 David

David, 
  
    I will work on getting you those times and samples today.  I do not have midx files in my World Map Kit data, I received it quite a while ago, I think it was in January or February. 
  
 Jake

I will try to be descriptive as I can. 

Attached is a document with a series of draw times.  I obtained these with the following setup. 

1. VS2010 in debug mode 

2. World Map Kit layer setup with Roads, cities and borders the only features being loaded. 

3. There are a total of 6 Overlays, the World Map Kit overlay is the only one with features, the others are either the default layers or an inMemoryMarkerLayer I use for markers which have nothing loaded into it during the tests. 

4. Tile mode set to single tile, I used this so I could get a total draw time for the screen rather than what I assume is for a single tile being drawn. 



I did the test for 3 zoom levels, the reason for this is at these levels new features are displayed.  At zoom level 14 the roads are drawn as width 1 lines and no labels are used. zoom level 15 the roads are drawn with labels and have a larger line width.  At zoom level 16 the labels are drawn and the width changes slightly for the roads. 



The first set of tests I load the labels for the roads, for the second test I commented out the code that adds labels for the roads. 



Here are my thoughts. 

The draw time for the zoom levels depends a lot the number of features and labels being drawn.  Even if the labels are not being shown on the particular zoom level, they are still effecting the draw time (see zoom level 14 times). 



I tried to run tests in the default tile mode, but could only get times for 1 tile at a time, but judging by those the results would be about the same (meaning labels cause draw time to increase.) 



I really don't think there is an issue/bug at all with this, I just found it interesting and was wondering if there could be any gains made with rendering labels.  I am working with Cache and pre generating the tiles for a city and am really impressed with the differences in WPFDesktopEdition compared to DesktopEdition.  The scrolling is so much smoother, and zooming looks so much better.  That alone would make it worth our company switching to this version, throw in Markers and the other additions and we are very happy right now.  I wish I could spend more time getting a better test setup, but I need to keep plugging away at the project.  If you need the source code for my tests let me know and I can send it, I don't want to post it since it has quite a bit of unnecessary code that I don't want to share.



DrawTimes.docx (57.7 KB)

Jake, 
  
 I think it is right that your second test is faster than your first test.When we query the roads by R-Tree, some roads whose bounding box contains current extent will be queried and be drawn; but it might not be seen on the map. For example a polyline that is just a little bigger than current viewport extent. So the more label or the more features are drawn, the slower the map is rendered. 
  
 On the other hand, it will be great that to receive your sample to see how slower it is; and try if the midx file affects the performance a lot. 
  
 Thanks for evaluating our Wpf Desktop Edition. Hope you give us more suggestions about this product so that we can make it better before our final release. 
  
 Thanks, 
 Howard

Jake, 
  
   I don’t see the drawing times you attached. 
  
 David

I attached it to the previous post of mine.  I apparently didn’t read the error message when uploading, the file was too large.  I had to remove the screen shots. 
  


I have sent a project to Support@thinkgeo.com that contains a simple test app.  It is setup in singletile mode so I could accurately get layer draw times.  You can tell a larger difference if you switch that back to default mode. 
  
 I do not have access to the new world map kit with the .midx files included.  Is this something that will be distributed upon request?  I would be interested in the outcome of your tests.

Hi Jake, 
  
 We received your sample; and we think we found the problem you indicated. It is the polygon who causes the issue. Let’s say there is a big polygon which covers all the viewport extent. In single tile mode, the polygon only draws once; when you zoom deeper, more and more points for the polygon will be drawn; while in multiple tile mode, each tile draws separately. So every tile will draw the same polygon time and time again. That’s why MultTile mode is much slower than SingleTile mode. 
  
 We have an idea to enhance this situation by gridding the polygon and we are working on it now. I’m sure it’ll be much better in this situation. 
  
 Thanks for reporting and feel free to let me know if you have more questions. 
  
 Thanks, 
 Howard