ThinkGeo.com    |     Documentation    |     Premium Support

Slow Layers

Hi All,


I installed the web edition trial and am currently  playing around with it to see if it will suit my application needs. One  thing I am having difficulty with is getting shape files to load in a  reasonable amount of time. For example, I downloaded your modified  OpenStreeMap files and tried to populate a map with the default world  map layer, a states layer for the US, and a roads layer from the  south-dakota roads.shp file. Here is what my code looks like.....


 


 


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


        Dim worldlayer As New ShapeFileFeatureLayer


        Dim statelayer As New ShapeFileFeatureLayer


        Dim roadslayer As New ShapeFileFeatureLayer


       


        Dim WorldFile, StatesFile, RoadFile


 


        WorldFile = "C:\Program Files (x86)\ThinkGeo\Map Suite Web  Evaluation Edition 5.5\Samples\VB Samples\SampleData\World\cntry02.shp"


        StatesFile = "C:\Program Files (x86)\ThinkGeo\Map Suite Web  Evaluation Edition 5.5\Samples\VB Samples\SampleData\USA\STATES.SHP"


        RoadFile = "C:\Users\Corye\Desktop\TestMapping\TestMapping\TestMapping\MapResource\south-dakota\roads.shp"


 


        If Not IsPostBack Then


 


            Map1.MapUnit = GeographyUnit.DecimalDegree


            Map1.MapTools.ScaleLine.Enabled = True


            Map1.MapBackground.BackgroundBrush = New GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean)


            Map1.CurrentExtent = New RectangleShape(5, 78, 30, 26)


 


            worldlayer = New ShapeFileFeatureLayer(WorldFile)


            worldlayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1


            worldlayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20


 


            statelayer = New ShapeFileFeatureLayer(StatesFile)


            statelayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.State1


            statelayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20


 


 


            roadlayer = New ShapeFileFeatureLayer(RoadFile)


           roadlayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.localroads1


            roadlayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20


            roadlayer.RequireIndex = False


 


 


            Map1.StaticOverlay.Layers.Add(worldlayer)


            Map1.StaticOverlay.Layers.Add(statelayer)


            Map1.StaticOverlay.Layers.Add(roadlayer)


 


        End If


End Sub


 


 


This code DOES open the expected map with the desired layers, but it  takes 30-60 seconds to render it. To make matters worse, it takes nearly that long on each zoom level so using the map is almost impossible. Any advice on making this run quicker or is this  the norm?


 


Thanks,



Hello Cory, 
  
 I have noticed one place that you use the code roadlayer.RequireIndex = False, I think this is because you will get exception without using this, right? 
  
 So could you please try  
  
 ShapeFileFeatureLayer.BuildIndexFile(”C:\Users\Corye\Desktop\TestMapping\TestMapping\TestMapping\MapResource\south-dakota\roads.shp“, BuildIndexMode.DoNotRebuild) 
  
 to build the index file and comment roadlayer.RequireIndex = False. 
  
 After having the index file, map render will be much faster. 
  
 Regards, 
  
 Gary 


Thanks for the reply Gary. This does speed things up a bit but I am still seeing 5-10 second load times per zoom level. Much faster than before but still a bit slow considering I havent even started adding points to the map yet. 


I think I will try publishing the application localy and see if I am taking a speed hit caused by running in debug mode via the development environment over a live environment.



Hello Cory, 
   
 In my machine, the render time under 3 seconds, so the code is no problem, so maybe it’s the environment problem, after you did the development test, if the problem still exist, please let me know. 
   
 Regards, 
   
 Gary 


I 've had same error. Loading sample map data is quite fast but loading my data with bigger size (32M) and using .RequireIndex = false is very slow. 
 This is my code: 
 private static void createVNMap(Map map, String path, String key, int type) 
         { 
             // 1. point 
             // 2. Line 
             // 3. Region 
             // 4. Grid 
             // 5. Text 
  
             switch (type) 
             { 
                 case 1: 
                     ShapeFileFeatureLayer vnPointLayer = new ShapeFileFeatureLayer(path); 
                     vnPointLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City1; 
                     vnPointLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Water1(“TEXTSTRING”); 
                     vnPointLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
                     vnPointLayer.RequireIndex = false; 
                     map.StaticOverlay.Layers.Add(key, vnPointLayer); 
                     break; 
                 case 2: 
                     ShapeFileFeatureLayer vnLineLayer = new ShapeFileFeatureLayer(path); 
                     vnLineLayer.ZoomLevelSet.ZoomLevel05.DefaultLineStyle = LineStyles.Railway4; 
                     vnLineLayer.ZoomLevelSet.ZoomLevel05.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
                     vnLineLayer.RequireIndex = false; 
                     map.StaticOverlay.Layers.Add(key, vnLineLayer); 
                     break; 
                 case 3: 
                     //InMemoryFeatureLayer inMemoryLayer = new InMemoryFeatureLayer(); 
                     ShapeFileFeatureLayer vnRegionLayer = new ShapeFileFeatureLayer(path); 
                     //vnRegionLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.LightGreen, GeoColor.SimpleColors.Black);; 
                     vnRegionLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1; 
                     vnRegionLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Water1(“TEXTSTRING”); 
                     vnRegionLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
                     vnRegionLayer.RequireIndex = false; 
                     map.StaticOverlay.Layers.Add(key, vnRegionLayer); 
                     break; 
                 case 4: 
                     ShapeFileFeatureLayer seaGridLayer = new ShapeFileFeatureLayer(path); 
                     seaGridLayer.ZoomLevelSet.ZoomLevel05.DefaultLineStyle = LineStyles.DegreeLine1; 
                     seaGridLayer.ZoomLevelSet.ZoomLevel05.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
                     seaGridLayer.RequireIndex = false; 
                     map.StaticOverlay.Layers.Add(key, seaGridLayer); 
                     break; 
                 case 5: 
                     ShapeFileFeatureLayer vnTextLayer = new ShapeFileFeatureLayer(path); 
                     vnTextLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1; 
                     vnTextLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.Water1(“TEXTSTRING”); 
                     vnTextLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
                     vnTextLayer.RequireIndex = false; 
                     map.StaticOverlay.Layers.Add(key, vnTextLayer); 
                     break; 
                 default: 
                     break; 
             } 
  
         }

Hello duong, 
  
 Thanks for your post, as I said above, for improve the performance, you need build the index for the shape file, so use ShapeFileFeatureLayer.BuildIndexFile and then set .RequireIndex = true to search the index, it will great improve the speed. 
  
 Regards, 
  
 Gary

I 've used set RequiredIndex = true but It 's still slow. The size of data is seem quite big (38M). Have you got any recommend to have a good loading big data strategies? 



Hello duong, 
  
 Could you please send me your data I can do some test on it? 38mb is not big size, I don’t think we will have performce problem to read it. You can attached it in your ticket. 
  
 Regards, 
  
 Gary