ThinkGeo.com    |     Documentation    |     Premium Support

Index was outside the bounds of the array

Hi,


   In my application i am using shape files to load in WPFControl. When i try to delete a feature from the editable layer, i am getting "Index was outside the bounds of the array." error.  This error occurs at mapControl.Refresh.


  Code:


            ShapeFileFeatureLayer DeletionLayer = (ShapeFileFeatureLayer)mapControl.FindFeatureLayer(EditableLayerName);

            DeletionLayer.Open();

            if (!DeletionLayer.EditTools.IsInTransaction)

                DeletionLayer.EditTools.BeginTransaction();

            DeletionLayer.EditTools.Delete(selectedFeatures[0].Id);

            mapControl.EditOverlay.EditShapesLayer.EditTools.BeginTransaction();

            mapControl.EditOverlay.EditShapesLayer.InternalFeatures.Remove(selectedFeatures[0].Id);

            mapControl.EditOverlay.EditShapesLayer.EditTools.Delete(selectedFeatures[0].Id);

            mapControl.EditOverlay.EditShapesLayer.EditTools.CommitTransaction();

            DeletionLayer.EditTools.CommitTransaction();

            DeletionLayer.Close();

            mapControl.Refresh();

           



Hi G,  
  
 I’m a little confused by your code; you delete the first feature twice from the EditShapesLayer. Did you set some style on the shape file layer or how many features are there in your edit layer? Could you send us a simple sample so that I can recreate this issue? Sorry for the inconvenience.  
  
 Thanks, 
 Howard

Hi Howard, 
    I am loading 8 different shape files on the WPFControl. At a time there will be only one layer editable and on that layer i am doing different operations such as creating/editing/deleting of a feature. There is a possibility of having multiple features in the edit layer. While loading a layer i am setting 4 different styles as mentioned below 
  
                     Layer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromWin32(Lyr.LayerColor), GeoColor.SimpleColors.Red); 
                     Layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.FromWin32(Lyr.LayerColor), 10, false); 
                     Layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle, GeoColor.FromWin32(Lyr.LayerColor), (float)1.5); 
                     Layer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.CreateSimpleTextStyle("Location", "Arial", 10, DrawingFontStyles.Bold, GeoColor.FromWin32(Lyr.LayerColor)); 
                     Layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
  
 I agree with you that there is a mistake from my side that i am deleting feature twice, I tried to delete a feature only once as 
  
  ShapeFileFeatureLayer DeletionLayer = (ShapeFileFeatureLayer)mapControl.FindFeatureLayer(EditableLayerName); 
             DeletionLayer.Open(); 
             if (!DeletionLayer.EditTools.IsInTransaction) 
                 DeletionLayer.EditTools.BeginTransaction(); 
             DeletionLayer.EditTools.Delete(selectedFeatures[0].Id); 
             mapControl.EditOverlay.EditShapesLayer.EditTools.BeginTransaction(); 
             mapControl.EditOverlay.EditShapesLayer.EditTools.Delete(selectedFeatures[0].Id); 
             mapControl.EditOverlay.EditShapesLayer.EditTools.CommitTransaction(); 
             DeletionLayer.EditTools.CommitTransaction(); 
             DeletionLayer.Close(); 
             mapControl.Refresh(); 
  
 Even then it is giving the same error. 
  
 Please let me know if you need any more info. 
  
 Regards 
 Ranjith 


Hi G, 
  
 I think this issue is caused by the TextStyle that the one of the feature in the Layer doesn’t have a column “Location”; could you please commend out the code for setting text style and try again? We used to loosen a limit in our product before and I think it fixes your issue. If suppressing text style fixes your issue, please download the new version at helpdesk.thinkgeo.com. If the issue still exists, please provide the assembly version and send us a simple sample so that we can recreate your issue. 
  
 Thanks, 
 Howard

 Hi Howard,


 
  Thanks for your suggestion. I tried by commenting line where i am setting the TextStyle, 
even then it was giving the same error.
 
 
  In my application i was loading shapefiles, while loading these files i was not using index.
Then i tried by using the below mentioned piece of code and it started working fine.
 
ShapeFileFeatureLayer.BuildIndexFile(@".\Resources\" + Lyr.FileName + ".shp",BuildIndexMode.Rebuild);
                Layer.RequireIndex = true;
 
  By this what i understood is to delete a feature from the layer, we need to create index files to it.
 
Regards
Ranjith

Hi G, 
  
 Great; it seems that you have fixed this issue. And you are right we need to recreate the index files when we modify the shape files. 
  
 Thanks and feel free to let me know if you have any more queries. 
  
 Thanks, 
 Howard