Beispiel #1
0
        public static Imageset FromXMLNode(XmlNode node)
        {
            try
            {
                ImageSetType type = ImageSetType.Sky;

                ProjectionType projection = ProjectionType.Tangent;

                if (node.Attributes.GetNamedItem("DataSetType") != null)
                {
                    type = (ImageSetType)Enums.Parse("ImageSetType", node.Attributes.GetNamedItem("DataSetType").Value);
                }

                BandPass bandPass = BandPass.Visible;

                bandPass = (BandPass)Enums.Parse("BandPass", node.Attributes.GetNamedItem("BandPass").Value);

                int wf = 1;
                if (node.Attributes.GetNamedItem("WidthFactor") != null)
                {
                    wf = int.Parse(node.Attributes.GetNamedItem("WidthFactor").Value);
                }

                if (node.Attributes.GetNamedItem("Generic") == null || !bool.Parse(node.Attributes.GetNamedItem("Generic").Value.ToString()))
                {
                    projection = (ProjectionType)Enums.Parse("ProjectionType", node.Attributes.GetNamedItem("Projection").Value);

                    string fileType = node.Attributes.GetNamedItem("FileType").Value.ToString();
                    if (!fileType.StartsWith("."))
                    {
                        fileType = "." + fileType;
                    }


                    string thumbnailUrl = "";

                    XmlNode thumbUrl = Util.SelectSingleNode(node, "ThumbnailUrl");
                    if (thumbUrl != null)
                    {
                        if (string.IsNullOrEmpty(thumbUrl.InnerText))
                        {
                            ChromeNode cn = (ChromeNode)(object)thumbUrl;
                            thumbnailUrl = cn.TextContent;
                        }
                        else
                        {
                            thumbnailUrl = thumbUrl.InnerText;
                        }
                    }

                    bool stockSet       = false;
                    bool elevationModel = false;

                    if (node.Attributes.GetNamedItem("StockSet") != null)
                    {
                        stockSet = bool.Parse(node.Attributes.GetNamedItem("StockSet").Value.ToString());
                    }

                    if (node.Attributes.GetNamedItem("ElevationModel") != null)
                    {
                        elevationModel = bool.Parse(node.Attributes.GetNamedItem("ElevationModel").Value.ToString());
                    }

                    string demUrl = "";
                    if (node.Attributes.GetNamedItem("DemUrl") != null)
                    {
                        demUrl = node.Attributes.GetNamedItem("DemUrl").Value.ToString();
                    }

                    string alturl = "";

                    if (node.Attributes.GetNamedItem("AltUrl") != null)
                    {
                        alturl = node.Attributes.GetNamedItem("AltUrl").Value.ToString();
                    }


                    double offsetX = 0;

                    if (node.Attributes.GetNamedItem("OffsetX") != null)
                    {
                        offsetX = double.Parse(node.Attributes.GetNamedItem("OffsetX").Value.ToString());
                    }

                    double offsetY = 0;

                    if (node.Attributes.GetNamedItem("OffsetY") != null)
                    {
                        offsetY = double.Parse(node.Attributes.GetNamedItem("OffsetY").Value.ToString());
                    }

                    string creditText = "";

                    XmlNode credits = Util.SelectSingleNode(node, "Credits");

                    if (credits != null)
                    {
                        creditText = Util.GetInnerText(credits);
                    }

                    string creditsUrl = "";

                    credits = Util.SelectSingleNode(node, "CreditsUrl");

                    if (credits != null)
                    {
                        creditsUrl = Util.GetInnerText(credits);
                    }

                    double meanRadius = 0;

                    if (node.Attributes.GetNamedItem("MeanRadius") != null)
                    {
                        meanRadius = double.Parse(node.Attributes.GetNamedItem("MeanRadius").Value.ToString());
                    }

                    string referenceFrame = null;
                    if (node.Attributes.GetNamedItem("ReferenceFrame") != null)
                    {
                        referenceFrame = node.Attributes.GetNamedItem("ReferenceFrame").Value;
                    }

                    string name = "";
                    if (node.Attributes.GetNamedItem("Name") != null)
                    {
                        name = node.Attributes.GetNamedItem("Name").Value.ToString();
                    }

                    string url = "";
                    if (node.Attributes.GetNamedItem("Url") != null)
                    {
                        url = node.Attributes.GetNamedItem("Url").Value.ToString();
                    }

                    int baseTileLevel = 0;
                    if (node.Attributes.GetNamedItem("BaseTileLevel") != null)
                    {
                        baseTileLevel = int.Parse(node.Attributes.GetNamedItem("BaseTileLevel").Value.ToString());
                    }

                    int tileLevels = 0;
                    if (node.Attributes.GetNamedItem("TileLevels") != null)
                    {
                        tileLevels = int.Parse(node.Attributes.GetNamedItem("TileLevels").Value.ToString());
                    }

                    double baseDegreesPerTile = 0;

                    if (node.Attributes.GetNamedItem("BaseDegreesPerTile") != null)
                    {
                        baseDegreesPerTile = double.Parse(node.Attributes.GetNamedItem("BaseDegreesPerTile").Value.ToString());
                    }


                    bool bottomsUp = false;


                    if (node.Attributes.GetNamedItem("BottomsUp") != null)
                    {
                        bottomsUp = bool.Parse(node.Attributes.GetNamedItem("BottomsUp").Value.ToString());
                    }

                    string quadTreeMap = "";
                    if (node.Attributes.GetNamedItem("QuadTreeMap") != null)
                    {
                        quadTreeMap = node.Attributes.GetNamedItem("QuadTreeMap").Value.ToString();
                    }

                    double centerX = 0;

                    if (node.Attributes.GetNamedItem("CenterX") != null)
                    {
                        centerX = double.Parse(node.Attributes.GetNamedItem("CenterX").Value.ToString());
                    }

                    double centerY = 0;

                    if (node.Attributes.GetNamedItem("CenterY") != null)
                    {
                        centerY = double.Parse(node.Attributes.GetNamedItem("CenterY").Value.ToString());
                    }

                    double rotation = 0;

                    if (node.Attributes.GetNamedItem("Rotation") != null)
                    {
                        rotation = double.Parse(node.Attributes.GetNamedItem("Rotation").Value.ToString());
                    }

                    bool sparse = false;

                    if (node.Attributes.GetNamedItem("Sparse") != null)
                    {
                        sparse = bool.Parse(node.Attributes.GetNamedItem("Sparse").Value.ToString());
                    }

                    return(Imageset.Create(name, url,
                                           type, bandPass, projection, Math.Abs(Util.GetHashCode(url)),
                                           baseTileLevel, tileLevels,
                                           256, baseDegreesPerTile, fileType,
                                           bottomsUp, quadTreeMap,
                                           centerX, centerY,
                                           rotation, sparse,
                                           thumbnailUrl, stockSet, elevationModel, wf, offsetX, offsetY, creditText, creditsUrl, demUrl, alturl, meanRadius, referenceFrame));
                }
                else
                {
                    return(Imageset.CreateGeneric(type, bandPass));
                }
            }
            catch
            {
                return(null);
            }
        }
        public string GetTourXML()
        {
            XmlTextWriter xmlWriter = new XmlTextWriter();

            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
            xmlWriter.WriteStartElement("Tour");

            xmlWriter.WriteAttributeString("ID", this.id);
            xmlWriter.WriteAttributeString("Title", this.title);
            xmlWriter.WriteAttributeString("Descirption", this.Description);
            xmlWriter.WriteAttributeString("Description", this.Description);
            xmlWriter.WriteAttributeString("RunTime", ((double)this.RunTime / 1000.0).ToString());
            xmlWriter.WriteAttributeString("Author", this.author);
            xmlWriter.WriteAttributeString("AuthorEmail", this.authorEmail);
            xmlWriter.WriteAttributeString("OrganizationUrl", this.organizationUrl);
            xmlWriter.WriteAttributeString("OrganizationName", this.OrgName);
            xmlWriter.WriteAttributeString("Keywords", this.Keywords);
            xmlWriter.WriteAttributeString("UserLevel", Enums.ToXml("UserLevel", (int)level));
            xmlWriter.WriteAttributeString("Classification", Enums.ToXml("Classification", (int)type));
            xmlWriter.WriteAttributeString("Taxonomy", taxonomy.ToString());
            // xmlWriter.WriteAttributeString("DomeMode", DomeMode.ToString());
            bool timeLineTour = IsTimelineTour();

            xmlWriter.WriteAttributeString("TimeLineTour", timeLineTour.ToString());


            xmlWriter.WriteStartElement("TourStops");
            foreach (TourStop stop in TourStops)
            {
                stop.SaveToXml(xmlWriter, true);
            }
            xmlWriter.WriteEndElement();


            List <Guid> masterList = CreateLayerMasterList();

            // This will now save and sync emtpy frames...
            List <ReferenceFrame> referencedFrames = GetReferenceFrameList();

            xmlWriter.WriteStartElement("ReferenceFrames");
            foreach (ReferenceFrame item in referencedFrames)
            {
                item.SaveToXml(xmlWriter);
            }
            xmlWriter.WriteEndElement();


            xmlWriter.WriteStartElement("Layers");
            foreach (Guid id in masterList)
            {
                if (LayerManager.LayerList.ContainsKey(id))
                {
                    LayerManager.LayerList[id].SaveToXml(xmlWriter);
                }
            }
            xmlWriter.WriteEndElement();


            xmlWriter.WriteFullEndElement();
            xmlWriter.Close();

            return(xmlWriter.Body);
        }
Beispiel #3
0
        internal static Place FromXml(XmlNode place)
        {
            Place newPlace = new Place();

            newPlace.name = place.Attributes.GetNamedItem("Name").Value;

            if (place.Attributes.GetNamedItem("MSRComponentId") != null && place.Attributes.GetNamedItem("Permission") != null && place.Attributes.GetNamedItem("Url") != null)
            {
                //communities item
                newPlace.Url          = place.Attributes.GetNamedItem("Url").Value;
                newPlace.ThumbnailUrl = place.Attributes.GetNamedItem("Thumbnail").Value;
                return(newPlace);
            }

            if (place.Attributes.GetNamedItem("DataSetType") != null)
            {
                newPlace.type = (ImageSetType)Enums.Parse("ImageSetType", place.Attributes.GetNamedItem("DataSetType").Value);
            }

            if (newPlace.Type == ImageSetType.Sky)
            {
                newPlace.camParams.RA  = double.Parse(place.Attributes.GetNamedItem("RA").Value);
                newPlace.camParams.Dec = double.Parse(place.Attributes.GetNamedItem("Dec").Value);
            }
            else
            {
                newPlace.Lat = double.Parse(place.Attributes.GetNamedItem("Lat").Value);
                newPlace.Lng = double.Parse(place.Attributes.GetNamedItem("Lng").Value);
            }

            if (place.Attributes.GetNamedItem("Constellation") != null)
            {
                newPlace.constellation = place.Attributes.GetNamedItem("Constellation").Value;
            }

            if (place.Attributes.GetNamedItem("Classification") != null)
            {
                newPlace.classification = (Classification)Enums.Parse("Classification", place.Attributes.GetNamedItem("Classification").Value);
            }

            if (place.Attributes.GetNamedItem("Magnitude") != null)
            {
                newPlace.magnitude = double.Parse(place.Attributes.GetNamedItem("Magnitude").Value);
            }

            if (place.Attributes.GetNamedItem("AngularSize") != null)
            {
                newPlace.AngularSize = double.Parse(place.Attributes.GetNamedItem("AngularSize").Value);
            }

            if (place.Attributes.GetNamedItem("ZoomLevel") != null)
            {
                newPlace.ZoomLevel = double.Parse(place.Attributes.GetNamedItem("ZoomLevel").Value);
            }

            if (place.Attributes.GetNamedItem("Rotation") != null)
            {
                newPlace.camParams.Rotation = double.Parse(place.Attributes.GetNamedItem("Rotation").Value);
            }

            if (place.Attributes.GetNamedItem("Annotation") != null)
            {
                newPlace.annotation = place.Attributes.GetNamedItem("Annotation").Value;
            }

            if (place.Attributes.GetNamedItem("Angle") != null)
            {
                newPlace.camParams.Angle = double.Parse(place.Attributes.GetNamedItem("Angle").Value);
            }

            if (place.Attributes.GetNamedItem("Opacity") != null)
            {
                newPlace.camParams.Opacity = Single.Parse(place.Attributes.GetNamedItem("Opacity").Value);
            }
            else
            {
                newPlace.camParams.Opacity = 100;
            }

            newPlace.Target = SolarSystemObjects.Undefined;

            if (place.Attributes.GetNamedItem("Target") != null)
            {
                newPlace.Target = (SolarSystemObjects)Enums.Parse("SolarSystemObjects", place.Attributes.GetNamedItem("Target").Value);
            }

            if (place.Attributes.GetNamedItem("ViewTarget") != null)
            {
                newPlace.camParams.ViewTarget = Vector3d.Parse(place.Attributes.GetNamedItem("ViewTarget").Value);
            }

            if (place.Attributes.GetNamedItem("TargetReferenceFrame") != null)
            {
                newPlace.camParams.TargetReferenceFrame = place.Attributes.GetNamedItem("TargetReferenceFrame").Value;
            }

            XmlNode descriptionNode = Util.SelectSingleNode(place, "Description");

            if (descriptionNode != null)
            {
                newPlace.HtmlDescription = Util.GetInnerText(descriptionNode);
            }

            XmlNode backgroundImageSet = Util.SelectSingleNode(place, "BackgroundImageSet");

            if (backgroundImageSet != null)
            {
                XmlNode imageSet = Util.SelectSingleNode(backgroundImageSet, "ImageSet");

                newPlace.backgroundImageSet = Imageset.FromXMLNode(imageSet);
            }
            XmlNode study = Util.SelectSingleNode(place, "ForegroundImageSet");

            if (study != null)
            {
                XmlNode imageSet = Util.SelectSingleNode(study, "ImageSet");

                newPlace.studyImageset = Imageset.FromXMLNode(imageSet);
            }
            study = Util.SelectSingleNode(place, "ImageSet");
            if (study != null)
            {
                newPlace.studyImageset = Imageset.FromXMLNode(study);
            }


            return(newPlace);
        }
        //public static TourDocument FromUrl(string url, Action callMe)
        //{

        //    TourDocument temp = new TourDocument();
        //    temp.Url = url;
        //    temp.callMe = callMe;

        //    temp.webFile = new WebFile(Util.GetTourComponent(url, "master"));
        //    temp.webFile.OnStateChange = temp.LoadXmlDocument;
        //    temp.webFile.Send();

        //    return temp;
        //}

        //private void LoadXmlDocument()
        //{
        //    if (webFile.State == StateType.Error)
        //    {
        //        Script.Literal("alert({0})", webFile.Message);
        //    }
        //    else if (webFile.State == StateType.Received)
        //    {
        //        FromXml(webFile.GetXml());
        //        callMe();
        //    }
        //}


        public void FromXml(XmlDocument doc)
        {
            XmlNode root = Util.SelectSingleNode(doc, "Tour");


            id     = root.Attributes.GetNamedItem("ID").Value.ToString();
            Title  = root.Attributes.GetNamedItem("Title").Value.ToString();
            Author = root.Attributes.GetNamedItem("Author").Value.ToString();

            if (root.Attributes.GetNamedItem("Descirption") != null)
            {
                Description = root.Attributes.GetNamedItem("Descirption").Value;
            }

            if (root.Attributes.GetNamedItem("AuthorEmail") != null)
            {
                authorEmail = root.Attributes.GetNamedItem("AuthorEmail").Value;
            }

            if (root.Attributes.GetNamedItem("Keywords") != null)
            {
                Keywords = root.Attributes.GetNamedItem("Keywords").Value;
            }

            if (root.Attributes.GetNamedItem("OrganizationName") != null)
            {
                OrgName = root.Attributes.GetNamedItem("OrganizationName").Value;
            }



            organizationUrl = root.Attributes.GetNamedItem("OrganizationUrl").Value;

            level = (UserLevel)Enums.Parse("UserLevel", root.Attributes.GetNamedItem("UserLevel").Value);

            type = (Classification)Enums.Parse("Classification", root.Attributes.GetNamedItem("Classification").Value);

            taxonomy = root.Attributes.GetNamedItem("Taxonomy").Value.ToString();
            XmlNode TourStops = Util.SelectSingleNode(root, "TourStops");

            foreach (XmlNode tourStop in TourStops.ChildNodes)
            {
                if (tourStop.Name == "TourStop")
                {
                    AddTourStop(TourStop.FromXml(this, tourStop));
                }
            }

            XmlNode Frames = Util.SelectSingleNode(root, "ReferenceFrames");

            if (Frames != null)
            {
                foreach (XmlNode frame in Frames.ChildNodes)
                {
                    if (frame.Name == "ReferenceFrame")
                    {
                        ReferenceFrame newFrame = new ReferenceFrame();
                        newFrame.InitializeFromXml(frame);
                        if (!LayerManager.AllMaps.ContainsKey(newFrame.Name))
                        {
                            LayerMap map = new LayerMap(newFrame.Name, ReferenceFrames.Custom);
                            map.Frame          = newFrame;
                            map.LoadedFromTour = true;
                            LayerManager.AllMaps[newFrame.Name] = map;
                        }
                    }
                }
                LayerManager.ConnectAllChildren();
                LayerManager.LoadTree();
            }

            XmlNode Layers = Util.SelectSingleNode(root, "Layers");

            if (Layers != null)
            {
                foreach (XmlNode layer in Layers.ChildNodes)
                {
                    if (layer.Name == "Layer")
                    {
                        Layer newLayer = Layer.FromXml(layer, true);//.Layer.FromXml(layer, true);
                        if (newLayer != null)
                        {
                            string fileName = string.Format("{0}.txt", newLayer.ID.ToString());
                            if (LayerManager.LayerList.ContainsKey(newLayer.ID)) // && newLayer.ID != ISSLayer.ISSGuid)
                            {
                                //if (!CollisionChecked)
                                //{
                                //    if (UiTools.ShowMessageBox(Language.GetLocalizedText(958, "There are layers with the same name. Overwrite existing layers?"), Language.GetLocalizedText(3, "Microsoft WorldWide Telescope"), System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                                //    {
                                //        OverWrite = true;
                                //    }
                                //    else
                                //    {
                                //        OverWrite = false;

                                //    }
                                //    CollisionChecked = true;
                                //}

                                //if (OverWrite)
                                //{
                                LayerManager.DeleteLayerByID(newLayer.ID, true, false);
                                //}
                            }
                            try
                            {
                                newLayer.LoadedFromTour = true;
                                newLayer.LoadData(this, fileName);
                                LayerManager.Add(newLayer, false);
                            }
                            catch
                            {
                            }
                        }
                    }
                }
                LayerManager.LoadTree();
            }

            //todo author
            //if (File.Exists(WorkingDirectory + "Author.png"))
            //{
            //    authorImage = UiTools.LoadBitmap(WorkingDirectory + "Author.png");
            //}

            tourDirty = 0;
        }
        public override void InitializeFromXml(XmlNode node)
        {
            TimeSeries = bool.Parse(node.Attributes.GetNamedItem("TimeSeries").Value);
            BeginRange = new Date(node.Attributes.GetNamedItem("BeginRange").Value);
            EndRange   = new Date(node.Attributes.GetNamedItem("EndRange").Value);
            Decay      = Single.Parse(node.Attributes.GetNamedItem("Decay").Value);

            CoordinatesType = (CoordinatesTypes)Enums.Parse("CoordinatesTypes", node.Attributes.GetNamedItem("CoordinatesType").Value);


            if ((int)CoordinatesType < 0)
            {
                CoordinatesType = CoordinatesTypes.Spherical;
            }
            LatColumn = int.Parse(node.Attributes.GetNamedItem("LatColumn").Value);
            LngColumn = int.Parse(node.Attributes.GetNamedItem("LngColumn").Value);
            if (node.Attributes.GetNamedItem("GeometryColumn") != null)
            {
                GeometryColumn = int.Parse(node.Attributes.GetNamedItem("GeometryColumn").Value);
            }

            switch (node.Attributes.GetNamedItem("AltType").Value)
            {
            case "Depth":
                AltType = AltTypes.Depth;
                break;

            case "Altitude":
                AltType = AltTypes.Altitude;
                break;

            case "Distance":
                AltType = AltTypes.Distance;
                break;

            case "SeaLevel":
                AltType = AltTypes.SeaLevel;
                break;

            case "Terrain":
                AltType = AltTypes.Terrain;
                break;

            default:
                break;
            }



            MarkerMix = MarkerMixes.Same_For_All;

            switch (node.Attributes.GetNamedItem("ColorMap").Value)
            {
            case "Same_For_All":
                ColorMap = ColorMaps.Same_For_All;
                break;

            case "Group_by_Values":
                ColorMap = ColorMaps.Group_by_Values;
                break;

            case "Per_Column_Literal":
                ColorMap = ColorMaps.Per_Column_Literal;
                break;

            default:
                break;
            }


            MarkerColumn   = int.Parse(node.Attributes.GetNamedItem("MarkerColumn").Value);
            ColorMapColumn = int.Parse(node.Attributes.GetNamedItem("ColorMapColumn").Value);

            switch (node.Attributes.GetNamedItem("PlotType").Value)
            {
            case "Gaussian":
                PlotType = PlotTypes.Gaussian;
                break;

            case "Point":
                PlotType = PlotTypes.Point;
                break;

            case "Circle":
                PlotType = PlotTypes.Circle;
                break;

            case "PushPin":
                PlotType = PlotTypes.PushPin;
                break;

            default:
                break;
            }

            MarkerIndex = int.Parse(node.Attributes.GetNamedItem("MarkerIndex").Value);

            switch (node.Attributes.GetNamedItem("MarkerScale").Value)
            {
            case "Screen":
                MarkerScale = MarkerScales.Screen;
                break;

            case "World":
                MarkerScale = MarkerScales.World;
                break;

            default:
                break;
            }

            switch (node.Attributes.GetNamedItem("AltUnit").Value)
            {
            case "Meters":
                AltUnit = AltUnits.Meters;
                break;

            case "Feet":
                AltUnit = AltUnits.Feet;
                break;

            case "Inches":
                AltUnit = AltUnits.Inches;
                break;

            case "Miles":
                AltUnit = AltUnits.Miles;
                break;

            case "Kilometers":
                AltUnit = AltUnits.Kilometers;
                break;

            case "AstronomicalUnits":
                AltUnit = AltUnits.AstronomicalUnits;
                break;

            case "LightYears":
                AltUnit = AltUnits.LightYears;
                break;

            case "Parsecs":
                AltUnit = AltUnits.Parsecs;
                break;

            case "MegaParsecs":
                AltUnit = AltUnits.MegaParsecs;
                break;

            case "Custom":
                AltUnit = AltUnits.Custom;
                break;

            default:
                break;
            }

            AltColumn       = int.Parse(node.Attributes.GetNamedItem("AltColumn").Value);
            StartDateColumn = int.Parse(node.Attributes.GetNamedItem("StartDateColumn").Value);
            EndDateColumn   = int.Parse(node.Attributes.GetNamedItem("EndDateColumn").Value);
            SizeColumn      = int.Parse(node.Attributes.GetNamedItem("SizeColumn").Value);
            HyperlinkFormat = node.Attributes.GetNamedItem("HyperlinkFormat").Value;
            HyperlinkColumn = int.Parse(node.Attributes.GetNamedItem("HyperlinkColumn").Value);
            ScaleFactor     = Single.Parse(node.Attributes.GetNamedItem("ScaleFactor").Value);

            switch (node.Attributes.GetNamedItem("PointScaleType").Value)
            {
            case "Linear":
                PointScaleType = PointScaleTypes.Linear;
                break;

            case "Power":
                PointScaleType = PointScaleTypes.Power;
                break;

            case "Log":
                PointScaleType = PointScaleTypes.Log;
                break;

            case "Constant":
                PointScaleType = PointScaleTypes.Constant;
                break;

            case "StellarMagnitude":
                PointScaleType = PointScaleTypes.StellarMagnitude;
                break;

            default:
                break;
            }


            if (node.Attributes.GetNamedItem("ShowFarSide") != null)
            {
                ShowFarSide = Boolean.Parse(node.Attributes.GetNamedItem("ShowFarSide").Value);
            }

            if (node.Attributes.GetNamedItem("RaUnits") != null)
            {
                // RaUnits = (RAUnits)Enum.Parse(typeof(RAUnits), node.Attributes["RaUnits"].Value);

                switch (node.Attributes.GetNamedItem("RaUnits").Value)
                {
                case "Hours":
                    RaUnits = RAUnits.Hours;
                    break;

                case "Degrees":
                    RaUnits = RAUnits.Degrees;
                    break;
                }
            }

            if (node.Attributes.GetNamedItem("HoverTextColumn") != null)
            {
                NameColumn = int.Parse(node.Attributes.GetNamedItem("HoverTextColumn").Value);
            }


            if (node.Attributes.GetNamedItem("XAxisColumn") != null)
            {
                XAxisColumn  = int.Parse(node.Attributes.GetNamedItem("XAxisColumn").Value);
                XAxisReverse = bool.Parse(node.Attributes.GetNamedItem("XAxisReverse").Value);
                YAxisColumn  = int.Parse(node.Attributes.GetNamedItem("YAxisColumn").Value);
                YAxisReverse = bool.Parse(node.Attributes.GetNamedItem("YAxisReverse").Value);
                ZAxisColumn  = int.Parse(node.Attributes.GetNamedItem("ZAxisColumn").Value);
                ZAxisReverse = bool.Parse(node.Attributes.GetNamedItem("ZAxisReverse").Value);

                switch (node.Attributes.GetNamedItem("CartesianScale").Value)
                {
                case "Meters":
                    CartesianScale = AltUnits.Meters;
                    break;

                case "Feet":
                    CartesianScale = AltUnits.Feet;
                    break;

                case "Inches":
                    CartesianScale = AltUnits.Inches;
                    break;

                case "Miles":
                    CartesianScale = AltUnits.Miles;
                    break;

                case "Kilometers":
                    CartesianScale = AltUnits.Kilometers;
                    break;

                case "AstronomicalUnits":
                    CartesianScale = AltUnits.AstronomicalUnits;
                    break;

                case "LightYears":
                    CartesianScale = AltUnits.LightYears;
                    break;

                case "Parsecs":
                    CartesianScale = AltUnits.Parsecs;
                    break;

                case "MegaParsecs":
                    CartesianScale = AltUnits.MegaParsecs;
                    break;

                case "Custom":
                    CartesianScale = AltUnits.Custom;
                    break;

                default:
                    break;
                }


                CartesianCustomScale = double.Parse(node.Attributes.GetNamedItem("CartesianCustomScale").Value);
            }

            if (node.Attributes.GetNamedItem("DynamicData") != null)
            {
                DynamicData   = bool.Parse(node.Attributes.GetNamedItem("DynamicData").Value);
                AutoUpdate    = bool.Parse(node.Attributes.GetNamedItem("AutoUpdate").Value);
                DataSourceUrl = node.Attributes.GetNamedItem("DataSourceUrl").Value;
            }
        }