public void ExportMapNetworkModelToXml(MapNetworkModel mapNetworkModel)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MapNetworkModel));

            using (FileStream fileStream = new FileStream(Config.dataMapPath, FileMode.Create))
            {
                serializer.Serialize(fileStream, mapNetworkModel);
            }
        }
Example #2
0
        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);
        }