public void ExportMapNetworkModelToXml(MapNetworkModel mapNetworkModel) { XmlSerializer serializer = new XmlSerializer(typeof(MapNetworkModel)); using (FileStream fileStream = new FileStream(Config.dataMapPath, FileMode.Create)) { serializer.Serialize(fileStream, mapNetworkModel); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { DataHelper dataHelper = new DataHelper(); NetworkModelUTM networkModelUTM = dataHelper.ImportNetworkModelUTMFromXML(); NetworkModelGeo networkModelGeo = dataHelper.ConvertNetworkModelUTMToGeo(networkModelUTM); dataHelper.ExportNetworkModelGeoToXml(networkModelGeo); mapNetworkModel = dataHelper.ConvertNetworkModelGeoToMap(networkModelGeo); dataHelper.ExportMapNetworkModelToXml(mapNetworkModel); Draw3DLines(); Draw3DPoints(); }
public MapNetworkModel ConvertNetworkModelGeoToMap(NetworkModelGeo networkModelGeo) { MapNetworkModel mapNetworkModel = new MapNetworkModel(); mapNetworkModel.Points = new List <MapPoint>(); networkModelGeo.Substations.Substations.ForEach(substationGeo => { MapPoint mapPoint = new MapPoint(); mapPoint.Id = substationGeo.Id; mapPoint.Description = substationGeo.Name; mapPoint.Type = PointType.Substation; LatitudeLongitudeToPixels(substationGeo.Latitude, substationGeo.Longitude, out double x, out double y); mapPoint.X = x; mapPoint.Y = y; mapPoint.Connections = new List <long>(); networkModelGeo.Lines.Lines.ForEach(lineGeo => { if (lineGeo.FirstEnd == mapPoint.Id || lineGeo.SecondEnd == mapPoint.Id) { mapPoint.Connections.Add(lineGeo.Id); } }); mapNetworkModel.Points.Add(mapPoint); }); networkModelGeo.Nodes.Nodes.ForEach(nodeGeo => { MapPoint mapPoint = new MapPoint(); mapPoint.Id = nodeGeo.Id; mapPoint.Description = nodeGeo.Name; mapPoint.Type = PointType.Node; LatitudeLongitudeToPixels(nodeGeo.Latitude, nodeGeo.Longitude, out double x, out double y); mapPoint.X = x; mapPoint.Y = y; mapPoint.Connections = new List <long>(); networkModelGeo.Lines.Lines.ForEach(lineGeo => { if (lineGeo.FirstEnd == mapPoint.Id || lineGeo.SecondEnd == mapPoint.Id) { mapPoint.Connections.Add(lineGeo.Id); } }); mapNetworkModel.Points.Add(mapPoint); }); networkModelGeo.Switches.Switches.ForEach(switchGeo => { MapPoint mapPoint = new MapPoint(); mapPoint.Id = switchGeo.Id; mapPoint.Description = switchGeo.Name; mapPoint.Type = PointType.Switch; LatitudeLongitudeToPixels(switchGeo.Latitude, switchGeo.Longitude, out double x, out double y); mapPoint.X = x; mapPoint.Y = y; mapPoint.Connections = new List <long>(); networkModelGeo.Lines.Lines.ForEach(lineGeo => { if (lineGeo.FirstEnd == mapPoint.Id || lineGeo.SecondEnd == mapPoint.Id) { mapPoint.Connections.Add(lineGeo.Id); } }); mapNetworkModel.Points.Add(mapPoint); }); mapNetworkModel.Lines = new List <MapLine>(); networkModelGeo.Lines.Lines.ForEach(lineGeo => { MapLine mapLine = new MapLine(); mapLine.Id = lineGeo.Id; mapLine.Description = lineGeo.Name; mapLine.Points = new List <MapPoint>(); MapPoint firstMapPoint = mapNetworkModel.Points.Find(p => p.Id == lineGeo.FirstEnd); mapLine.Points.Add(firstMapPoint); lineGeo.Vertices.Points.ForEach(pointGeo => { LatitudeLongitudeToPixels(pointGeo.Latitude, pointGeo.Longitude, out double x, out double y); MapPoint mapPoint = mapNetworkModel.Points.FirstOrDefault(p => p.X == x && p.Y == y); if (mapPoint == null) { mapPoint = new MapPoint(); mapPoint.Id = 0; mapPoint.Description = lineGeo.Name + "_connector"; mapPoint.Type = PointType.Connector; mapPoint.X = x; mapPoint.Y = y; mapNetworkModel.Points.Add(mapPoint); } mapLine.Points.Add(mapPoint); }); MapPoint secondMapPoint = mapNetworkModel.Points.Find(p => p.Id == lineGeo.SecondEnd); mapLine.Points.Add(secondMapPoint); mapNetworkModel.Lines.Add(mapLine); }); return(mapNetworkModel); }