private void LoadXml()
        {
            var loader = new GeographicXmlLoader();

            // Draw Nodes
            var substationEntities = loader.GetSubstationEntities();

            AddToGridMap(substationEntities, CreateSubstationEntityUIElement);

            var nodeEntities = loader.GetNodeEntities();

            AddToGridMap(nodeEntities, CreateNodeEntityUIElement);

            var switchEntities = loader.GetSwitchEntities();

            AddToGridMap(switchEntities, CreateSwitchEntityUIElement);

            _map.Enlarge();

            // Draw Lines
            var lineEntities = loader.GetLineEntities();

            Debug.WriteLine($"Lines: {lineEntities.Count()}");

            ConnectNodes(lineEntities);
        }
        public static void LoadXMLToStorage(GeographicXmlLoader loader, Storage storage)
        {
            var substationEntities = loader.GetSubstationEntities();
            var nodeEntities       = loader.GetNodeEntities();
            var switchEntities     = loader.GetSwitchEntities();
            var lineEntities       = loader.GetLineEntities();

            storage.AddRange(substationEntities);
            storage.AddRange(nodeEntities);
            storage.AddRange(switchEntities);
            storage.AddValidLines(lineEntities);
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var loader = new GeographicXmlLoader()
            {
                LatitudeRange  = _config.LatitudeRange,
                LongitudeRange = _config.LongitudeRange
            };

            StorageFactory.LoadXMLToStorage(loader, _storage);

            var latlonToPlaneMapper = new LatLonToPlaneMapper(_config);
            var powerEntityMapper   = new PowerEntityTo3DMapper(latlonToPlaneMapper);
            var lineMapper          = new LineEntityTo3DMapper(latlonToPlaneMapper);
            var painter             = new Painter3D(_modelGroup, powerEntityMapper, lineMapper);

            painter.DrawEntities(_storage);
        }