Index: Core/Components/src/Core.Components.DotSpatial/Converter/FeatureBasedMapDataConverter.cs =================================================================== diff -u -rb73954377fcdba6c460984b6c670a7f594f4abc9 -r956c3e0ce151ba33c204d2ebad3dc349a0304e06 --- Core/Components/src/Core.Components.DotSpatial/Converter/FeatureBasedMapDataConverter.cs (.../FeatureBasedMapDataConverter.cs) (revision b73954377fcdba6c460984b6c670a7f594f4abc9) +++ Core/Components/src/Core.Components.DotSpatial/Converter/FeatureBasedMapDataConverter.cs (.../FeatureBasedMapDataConverter.cs) (revision 956c3e0ce151ba33c204d2ebad3dc349a0304e06) @@ -102,6 +102,26 @@ return points.Select(point => new Coordinate(point.X, point.Y)); } + protected static void ClearLayerData(FeatureLayer layer) + { + layer.FeatureSet.Features.Clear(); + layer.FeatureSet.DataTable.Clear(); + } + + protected static void SetDataTableColumns(FeatureBasedMapData data, FeatureLayer layer) + { + for (var i = 1; i <= data.MetaData.Count(); i++) + { + layer.FeatureSet.DataTable.Columns.Add(i.ToString(), typeof(string)); + } + } + + protected static Dictionary GetColumnNameLookup(FeatureBasedMapData data) + { + return Enumerable.Range(0, data.MetaData.Count()) + .ToDictionary(md => data.MetaData.ElementAt(md), mdi => mdi + 1); + } + /// /// Gets a new . /// Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapLineDataConverter.cs =================================================================== diff -u -rb73954377fcdba6c460984b6c670a7f594f4abc9 -r956c3e0ce151ba33c204d2ebad3dc349a0304e06 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapLineDataConverter.cs (.../MapLineDataConverter.cs) (revision b73954377fcdba6c460984b6c670a7f594f4abc9) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapLineDataConverter.cs (.../MapLineDataConverter.cs) (revision 956c3e0ce151ba33c204d2ebad3dc349a0304e06) @@ -49,23 +49,18 @@ protected override void ConvertLayerFeatures(MapLineData data, MapLineLayer layer) { - layer.FeatureSet.Features.Clear(); - layer.FeatureSet.DataTable.Clear(); + ClearLayerData(layer); + SetDataTableColumns(data, layer); - for (var i = 1; i <= data.MetaData.Count(); i++) - { - layer.FeatureSet.DataTable.Columns.Add(i.ToString(), typeof(string)); - } + var columnNameLookup = GetColumnNameLookup(data); - var metaDataLookup = GetMetaDataLookup(data); - foreach (MapFeature mapFeature in data.Features) { var feature = new Feature(GetGeometry(mapFeature), layer.FeatureSet); foreach (var attribute in mapFeature.MetaData) { - feature.DataRow[metaDataLookup[attribute.Key].ToString()] = attribute.Value; + feature.DataRow[columnNameLookup[attribute.Key].ToString()] = attribute.Value; } } @@ -77,20 +72,14 @@ layer.IsVisible = data.IsVisible; layer.Name = data.Name; layer.ShowLabels = data.ShowLabels; - layer.LabelLayer = GetLabelLayer(GetMetaDataLookup(data), layer.FeatureSet, data.ShowLabels, data.SelectedMetaDataAttribute); + layer.LabelLayer = GetLabelLayer(GetColumnNameLookup(data), layer.FeatureSet, data.ShowLabels, data.SelectedMetaDataAttribute); if (data.Style != null) { layer.Symbolizer = new LineSymbolizer(data.Style.Color, data.Style.Color, data.Style.Width, data.Style.Style, LineCap.Round); } } - private static Dictionary GetMetaDataLookup(MapLineData data) - { - return Enumerable.Range(0, data.MetaData.Count()) - .ToDictionary(md => data.MetaData.ElementAt(md), mdi => mdi + 1); - } - private static IBasicGeometry GetGeometry(MapFeature mapFeature) { var factory = new GeometryFactory(); Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapPointDataConverter.cs =================================================================== diff -u -rb73954377fcdba6c460984b6c670a7f594f4abc9 -r956c3e0ce151ba33c204d2ebad3dc349a0304e06 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapPointDataConverter.cs (.../MapPointDataConverter.cs) (revision b73954377fcdba6c460984b6c670a7f594f4abc9) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapPointDataConverter.cs (.../MapPointDataConverter.cs) (revision 956c3e0ce151ba33c204d2ebad3dc349a0304e06) @@ -47,24 +47,19 @@ protected override void ConvertLayerFeatures(MapPointData data, MapPointLayer layer) { - layer.FeatureSet.Features.Clear(); - layer.FeatureSet.DataTable.Clear(); + ClearLayerData(layer); + SetDataTableColumns(data, layer); - for (var i = 1; i <= data.MetaData.Count(); i++) - { - layer.FeatureSet.DataTable.Columns.Add(i.ToString(), typeof(string)); - } + var columnNameLookup = GetColumnNameLookup(data); - var metaDataLookup = GetMetaDataLookup(data); - foreach (MapFeature mapFeature in data.Features) { foreach (var feature in GetAllMapFeatureCoordinates(mapFeature) .Select(c => new Feature(new Point(c.X, c.Y), layer.FeatureSet))) { foreach (var attribute in mapFeature.MetaData) { - feature.DataRow[metaDataLookup[attribute.Key].ToString()] = attribute.Value; + feature.DataRow[columnNameLookup[attribute.Key].ToString()] = attribute.Value; } } } @@ -77,20 +72,14 @@ layer.IsVisible = data.IsVisible; layer.Name = data.Name; layer.ShowLabels = data.ShowLabels; - layer.LabelLayer = GetLabelLayer(GetMetaDataLookup(data), layer.FeatureSet, data.ShowLabels, data.SelectedMetaDataAttribute); + layer.LabelLayer = GetLabelLayer(GetColumnNameLookup(data), layer.FeatureSet, data.ShowLabels, data.SelectedMetaDataAttribute); if (data.Style != null) { layer.Symbolizer = new PointSymbolizer(data.Style.Color, MapDataHelper.Convert(data.Style.Symbol), data.Style.Size); } } - private static Dictionary GetMetaDataLookup(MapPointData data) - { - return Enumerable.Range(0, data.MetaData.Count()) - .ToDictionary(md => data.MetaData.ElementAt(md), mdi => mdi + 1); - } - private static IEnumerable GetAllMapFeatureCoordinates(MapFeature feature) { return feature.MapGeometries.SelectMany(mapGeometry => ConvertPoint2DElementsToCoordinates(mapGeometry.PointCollections.First())); Index: Core/Components/src/Core.Components.DotSpatial/Converter/MapPolygonDataConverter.cs =================================================================== diff -u -rb73954377fcdba6c460984b6c670a7f594f4abc9 -r956c3e0ce151ba33c204d2ebad3dc349a0304e06 --- Core/Components/src/Core.Components.DotSpatial/Converter/MapPolygonDataConverter.cs (.../MapPolygonDataConverter.cs) (revision b73954377fcdba6c460984b6c670a7f594f4abc9) +++ Core/Components/src/Core.Components.DotSpatial/Converter/MapPolygonDataConverter.cs (.../MapPolygonDataConverter.cs) (revision 956c3e0ce151ba33c204d2ebad3dc349a0304e06) @@ -47,16 +47,11 @@ protected override void ConvertLayerFeatures(MapPolygonData data, MapPolygonLayer layer) { - layer.FeatureSet.Features.Clear(); - layer.FeatureSet.DataTable.Clear(); + ClearLayerData(layer); + SetDataTableColumns(data, layer); - for (var i = 1; i <= data.MetaData.Count(); i++) - { - layer.FeatureSet.DataTable.Columns.Add(i.ToString(), typeof(string)); - } + var columnNameLookup = GetColumnNameLookup(data); - var metaDataLookup = GetMetaDataLookup(data); - foreach (var mapFeature in data.Features) { var geometryList = new List(); @@ -83,7 +78,7 @@ foreach (var attribute in mapFeature.MetaData) { - feature.DataRow[metaDataLookup[attribute.Key].ToString()] = attribute.Value; + feature.DataRow[columnNameLookup[attribute.Key].ToString()] = attribute.Value; } } @@ -95,20 +90,14 @@ layer.IsVisible = data.IsVisible; layer.Name = data.Name; layer.ShowLabels = data.ShowLabels; - layer.LabelLayer = GetLabelLayer(GetMetaDataLookup(data), layer.FeatureSet, data.ShowLabels, data.SelectedMetaDataAttribute); + layer.LabelLayer = GetLabelLayer(GetColumnNameLookup(data), layer.FeatureSet, data.ShowLabels, data.SelectedMetaDataAttribute); if (data.Style != null) { layer.Symbolizer = new PolygonSymbolizer(data.Style.FillColor, data.Style.StrokeColor, data.Style.Width); } } - private static Dictionary GetMetaDataLookup(MapPolygonData data) - { - return Enumerable.Range(0, data.MetaData.Count()) - .ToDictionary(md => data.MetaData.ElementAt(md), mdi => mdi + 1); - } - private static IBasicGeometry GetGeometry(List geometryList) { IBasicGeometry geometry;