private static void DeserializeLayers(MapGroup g, dynamic layers) { foreach (var layer in layers) { try { LegacyLayerType typeOfLayer = (LegacyLayerType)Enum.ToObject(typeof(LegacyLayerType), Convert.ToInt32(layer["Type"])); Layer mapLayer; switch (typeOfLayer) { case LegacyLayerType.Grid: mapLayer = GetGridLayer(layer); break; case LegacyLayerType.Image: mapLayer = GetImageLayer(layer); break; case LegacyLayerType.Invalid: throw new ArgumentException("The LayerType is an invalid layer type and cannot be loaded."); case LegacyLayerType.LineShapefile: mapLayer = GetLineLayer(layer); break; case LegacyLayerType.PointShapefile: mapLayer = GetPointLayer(layer); break; case LegacyLayerType.PolygonShapefile: mapLayer = GetPolygonLayer(layer); break; default: throw new NotImplementedException("That LayerType is not supported."); } if (mapLayer != null) { LegacyDeserializer.DeserializeLayerProperties(layer, mapLayer); g.Add(mapLayer); } } catch (Exception exOpen) { // TODO: provide a warning of some sort, possibly ask abort/retry/continue // HACK: we should be catching a more specific exception. Trace.WriteLine(exOpen.Message); } } }
public void Deserialize(dynamic xmlRoot) { var mapwin4Section = xmlRoot.MapWindow4; var mapwingisSection = xmlRoot.MapWinGIS; _map.MapFrame.ProjectionString = mapwin4Section["ProjectProjection"]; if (!Convert.ToBoolean(mapwin4Section["ViewBackColor_UseDefault"])) { var mapControl = _map as Control; if (mapControl != null) mapControl.BackColor = LegacyDeserializer.GetColor(mapwin4Section["ViewBackColor"]); _map.Invalidate(); } // Deserialize layers var layersDescs = mapwingisSection.Layers.Elements(); var allLayers = new Dictionary<int, List<ILayer>>(); // key: Group Name. Value: layers foreach (var layer in mapwin4Section.Layers.Elements()) { var name = (string)layer["Name"]; var groupInd = Convert.ToInt32(layer["GroupIndex"]); if (!allLayers.ContainsKey(groupInd)) allLayers[groupInd] = new List<ILayer>(); var listLayers = allLayers[groupInd]; IMapLayer layerToAdd = null; foreach (var layersDesc in layersDescs) { if (layersDesc["LayerName"] == name) { var lt = (string) layersDesc["LayerType"]; switch (lt) { case "Image": layerToAdd = new MapImageLayer(ImageData.Open(layersDesc["Filename"])); break; case "Shapefile": var fs = FeatureSet.OpenFile(layersDesc["Filename"]); if (fs is PointShapefile) { layerToAdd = new MapPointLayer(fs); } else if (fs is PolygonShapefile) { layerToAdd = new MapPolygonLayer(fs); } else if (fs is LineShapefile) { layerToAdd = new MapLineLayer(fs); } else { Trace.WriteLine("Unsupported FeatureSet Type: " + fs.GetType()); } break; default: Trace.WriteLine("Unsupported LayerType: " + lt); break; } break; } } if (layerToAdd != null) { layerToAdd.IsExpanded = Convert.ToBoolean(layer["Expanded"]); listLayers.Add(layerToAdd); } } // Deserialize groups foreach (var group in mapwin4Section.Groups.Elements()) { var gInd = Convert.ToInt32(group["Position"]); var g = new MapGroup { LegendText = group["Name"], IsExpanded = Convert.ToBoolean(group["Expanded"]) }; List<ILayer> gl; if (allLayers.TryGetValue(gInd, out gl)) { foreach (var layer in gl) { g.Add(layer); } } _map.MapFrame.Layers.Add(g); } }
/// <summary> /// Deserializes beginning from the given root. /// </summary> /// <param name="xmlRoot">Root to use as string point.</param> public void Deserialize(dynamic xmlRoot) { var mapwin4Section = xmlRoot.MapWindow4; var mapwingisSection = xmlRoot.MapWinGIS; _map.MapFrame.ProjectionString = mapwin4Section["ProjectProjection"]; if (!Convert.ToBoolean(mapwin4Section["ViewBackColor_UseDefault"])) { var mapControl = _map as Control; if (mapControl != null) { mapControl.BackColor = LegacyDeserializer.GetColor(mapwin4Section["ViewBackColor"]); } _map.Invalidate(); } // Deserialize layers var layersDescs = mapwingisSection.Layers.Elements(); var allLayers = new Dictionary <int, List <ILayer> >(); // key: Group Name. Value: layers foreach (var layer in mapwin4Section.Layers.Elements()) { var name = (string)layer["Name"]; var groupInd = Convert.ToInt32(layer["GroupIndex"]); if (!allLayers.ContainsKey(groupInd)) { allLayers[groupInd] = new List <ILayer>(); } var listLayers = allLayers[groupInd]; IMapLayer layerToAdd = null; foreach (var layersDesc in layersDescs) { if (layersDesc["LayerName"] == name) { var lt = (string)layersDesc["LayerType"]; switch (lt) { case "Image": layerToAdd = new MapImageLayer(ImageData.Open(layersDesc["Filename"])); break; case "Shapefile": var fs = FeatureSet.OpenFile(layersDesc["Filename"]); if (fs is PointShapefile) { layerToAdd = new MapPointLayer(fs); } else if (fs is PolygonShapefile) { layerToAdd = new MapPolygonLayer(fs); } else if (fs is LineShapefile) { layerToAdd = new MapLineLayer(fs); } else { var type = (object)fs.GetType().ToString(); Trace.WriteLine("Unsupported FeatureSet Type: " + type); } break; default: Trace.WriteLine("Unsupported LayerType: " + lt); break; } break; } } if (layerToAdd != null) { layerToAdd.IsExpanded = Convert.ToBoolean(layer["Expanded"]); listLayers.Add(layerToAdd); } } // Deserialize groups foreach (var group in mapwin4Section.Groups.Elements()) { var gInd = Convert.ToInt32(group["Position"]); var g = new MapGroup { LegendText = group["Name"], IsExpanded = Convert.ToBoolean(group["Expanded"]) }; List <ILayer> gl; if (allLayers.TryGetValue(gInd, out gl)) { foreach (var layer in gl) { g.Add(layer); } } _map.MapFrame.Layers.Add(g); } }
private static void DeserializeLayers(MapGroup g, dynamic layers) { foreach (var layer in layers) { try { LegacyLayerType typeOfLayer = (LegacyLayerType)Enum.ToObject(typeof(LegacyLayerType), Convert.ToInt32(layer["Type"])); Layer mapLayer = null; switch (typeOfLayer) { case LegacyLayerType.Grid: mapLayer = GetGridLayer(layer); break; case LegacyLayerType.Image: mapLayer = GetImageLayer(layer); break; case LegacyLayerType.Invalid: throw new ArgumentException("The LayerType is an invalid layer type and cannot be loaded."); case LegacyLayerType.LineShapefile: mapLayer = GetLineLayer(layer); break; case LegacyLayerType.PointShapefile: mapLayer = GetPointLayer(layer); break; case LegacyLayerType.PolygonShapefile: mapLayer = GetPolygonLayer(layer); break; default: throw new NotImplementedException("That LayerType is not supported."); } if (mapLayer != null) { LegacyDeserializer.DeserializeLayerProperties(layer, mapLayer); g.Add(mapLayer); } } catch (Exception exOpen) { //TODO: provide a warning of some sort, possibly ask abort/retry/continue //HACK: we should be catching a more specific exception. Trace.WriteLine(exOpen.Message); } } }