コード例 #1
0
        public static GridLayerImpl ParseXml(XDocument gridLayerXml)
        {
            var layer = new GridLayerImpl();

            if (gridLayerXml.Root == null)
            {
                return(layer);
            }
            var gridNames = NinXmlParser.GetChildElements(gridLayerXml.Root, "navn", TillatAntall.AkkuratEn);

            layer.Name = gridNames[0].Value;

            var gridDescriptions = NinXmlParser.GetChildElements(gridLayerXml.Root, "beskrivelse", TillatAntall.MaksimaltEn);

            if (gridDescriptions.Count == 1)
            {
                layer.Description = gridDescriptions[0].Value;
            }

            var gridCodes = NinXmlParser.GetChildElements(gridLayerXml.Root, "kode", TillatAntall.AkkuratEn);

            layer.Code = new Code(NinXmlParser.ParseCode(gridCodes[0]));

            var gridOwners = NinXmlParser.GetChildElements(gridLayerXml.Root, "eier", TillatAntall.AkkuratEn);

            layer.Owner = new Contact(NinXmlParser.ParseContact(gridOwners[0]));

            var gridEstablishDates = NinXmlParser.GetChildElements(gridLayerXml.Root, "etablertDato", TillatAntall.AkkuratEn);

            layer.Established = Convert.ToDateTime(gridEstablishDates[0].Value);

            var gridDocuments = NinXmlParser.GetChildElements(gridLayerXml.Root, "dokumenter", TillatAntall.NullEllerFlere);

            foreach (var gridDocument in gridDocuments)
            {
                layer.Documents.Add(new Document(NinXmlParser.ParseDocument(gridDocument)));
            }

            var localName = gridLayerXml.Root.Name.LocalName;

            switch (localName)
            {
            case "RuteNettKart":
                layer.RutenettkartFraXml(gridLayerXml);
                break;

            case "OmraadeKart":
                layer.OmrådekartFraXml(gridLayerXml);
                break;

            default:
                throw new GridParseException("The element " + localName +
                                             " contains a unknown value.");
            }
            return(layer);
        }
コード例 #2
0
        private void OmrådekartFraXml(XDocument gridLayerXml)
        {
            var mapElements = NinXmlParser.GetChildElements(gridLayerXml.Root, "kartElementer",
                                                            TillatAntall.EnEllerFlere);

            foreach (var mapElement in mapElements)
            {
                var gridMapElement = NinXmlParser.GetChildElements(mapElement, "OmraadeKartElement",
                                                                   TillatAntall.AkkuratEn);

                var gridLayerCell    = new GridLayerCellCustom();
                var gridLayerItemIds = NinXmlParser.GetChildElements(gridMapElement[0], "id",
                                                                     TillatAntall.AkkuratEn);
                gridLayerCell.CellId = gridLayerItemIds[0].Value;

                var gridLayerCellGeometries = NinXmlParser.GetChildElements(gridMapElement[0], "geometri",
                                                                            TillatAntall.AkkuratEn);
                int epsgCode;
                var geometry = NinXmlParser.ParseGeometry(gridLayerCellGeometries[0], out epsgCode);
                gridLayerCell.CustomCell = SqlGeometry.STGeomFromText(new SqlChars(geometry), epsgCode);

                var gridLayerItemValues = NinXmlParser.GetChildElements(gridMapElement[0], "trinnVerdi",
                                                                        TillatAntall.AkkuratEn);
                gridLayerCell.Value = gridLayerItemValues[0].Value;

                if (Cells.Count == 0)
                {
                    MinValue = gridLayerCell.Value;
                    MaxValue = gridLayerCell.Value;
                }
                else
                {
                    string minValue;
                    string maxValue;
                    AreaLayerImpl.GuessMinAndMaxValues(true, gridLayerCell.Value, MinValue,
                                                       MaxValue, out minValue, out maxValue);
                    MinValue = minValue;
                    MaxValue = maxValue;
                }

                Cells.Add(gridLayerCell);
            }
        }
コード例 #3
0
        private void RutenettkartFraXml(XDocument gridLayerXml)
        {
            bool numberCompare             = true;
            Collection <XElement> gridNets = NinXmlParser.GetChildElements(gridLayerXml.Root, "ruteNett",
                                                                           TillatAntall.AkkuratEn);

            Type = TilGridType(gridNets[0].Value);

            var mapElements = NinXmlParser.GetChildElements(gridLayerXml.Root, "kartElementer",
                                                            TillatAntall.EnEllerFlere);

            foreach (var mapElement in mapElements)
            {
                var gridMapElement = NinXmlParser.GetChildElements(mapElement, "RuteNettKartElement",
                                                                   TillatAntall.AkkuratEn);

                var layer            = new GridLayerCell();
                var gridLayerCellIds = NinXmlParser.GetChildElements(gridMapElement[0], "id", TillatAntall.AkkuratEn);
                layer.CellId = gridLayerCellIds[0].Value;

                var gridLayerCellValues = NinXmlParser.GetChildElements(gridMapElement[0], "trinnVerdi",
                                                                        TillatAntall.AkkuratEn);
                layer.Value = gridLayerCellValues[0].Value;

                if (Cells.Count == 0)
                {
                    MinValue = layer.Value;
                    MaxValue = layer.Value;
                }
                else
                {
                    string minValue;
                    string maxValue;
                    numberCompare = AreaLayerImpl.GuessMinAndMaxValues(numberCompare, layer.Value, MinValue,
                                                                       MaxValue, out minValue, out maxValue);
                    MinValue = minValue;
                    MaxValue = maxValue;
                }

                Cells.Add(layer);
            }
        }
コード例 #4
0
ファイル: AreaLayerImpl.cs プロジェクト: jarped/naturtypekart
        public static AreaLayer FromXml(XDocument areaLayerXml)
        {
            var  areaLayer     = new AreaLayerImpl();
            bool numberCompare = true;

            var areaNames = NinXmlParser.GetChildElements(areaLayerXml.Root, "navn", TillatAntall.AkkuratEn);

            areaLayer.Name = areaNames[0].Value;

            var areaDescriptions = NinXmlParser.GetChildElements(areaLayerXml.Root, "beskrivelse", TillatAntall.MaksimaltEn);

            if (areaDescriptions.Count == 1)
            {
                areaLayer.Description = areaDescriptions[0].Value;
            }

            var areaCodes = NinXmlParser.GetChildElements(areaLayerXml.Root, "kode", TillatAntall.AkkuratEn);

            areaLayer.Code = new Code(NinXmlParser.ParseCode(areaCodes[0]));

            var areaOwners = NinXmlParser.GetChildElements(areaLayerXml.Root, "eier", TillatAntall.AkkuratEn);

            areaLayer.Owner = new Contact(NinXmlParser.ParseContact(areaOwners[0]));

            var areaEstablishDates = NinXmlParser.GetChildElements(areaLayerXml.Root, "etablertDato", TillatAntall.AkkuratEn);

            areaLayer.Established = Convert.ToDateTime(areaEstablishDates[0].Value);

            var areaDocuments = NinXmlParser.GetChildElements(areaLayerXml.Root, "dokumenter", TillatAntall.NullEllerFlere);

            foreach (var areaDocument in areaDocuments)
            {
                areaLayer.Documents.Add(new Document(NinXmlParser.ParseDocument(areaDocument)));
            }

            var areaAdministrationAreas = NinXmlParser.GetChildElements(areaLayerXml.Root, "administrativtOmraade", TillatAntall.AkkuratEn);

            switch (areaAdministrationAreas[0].Value)
            {
            case "1":
                areaLayer.Type = AreaType.Kommune;
                break;

            case "2":
                areaLayer.Type = AreaType.Fylke;
                break;

            default:
                throw new GridParseException("The element " + areaAdministrationAreas[0].Name.LocalName +
                                             " contains a unknown value.");
            }

            var mapElements = NinXmlParser.GetChildElements(areaLayerXml.Root, "kartElementer", TillatAntall.EnEllerFlere);

            foreach (var mapElement in mapElements)
            {
                var areaMapElement = NinXmlParser.GetChildElements(mapElement, "AdministrativtOmraadeKartElement", TillatAntall.AkkuratEn);

                var areaLayerItem        = new AreaLayerItem();
                var areaLayerItemNumbers = NinXmlParser.GetChildElements(areaMapElement[0], "nr", TillatAntall.AkkuratEn);
                areaLayerItem.Number = int.Parse(areaLayerItemNumbers[0].Value);

                var areaLayerItemValues = NinXmlParser.GetChildElements(areaMapElement[0], "trinnVerdi", TillatAntall.AkkuratEn);
                areaLayerItem.Value = areaLayerItemValues[0].Value;

                if (areaLayer.Items.Count == 0)
                {
                    areaLayer.MinValue = areaLayerItem.Value;
                    areaLayer.MaxValue = areaLayerItem.Value;
                }
                else
                {
                    string minValue;
                    string maxValue;
                    numberCompare      = GuessMinAndMaxValues(numberCompare, areaLayerItem.Value, areaLayer.MinValue, areaLayer.MaxValue, out minValue, out maxValue);
                    areaLayer.MinValue = minValue;
                    areaLayer.MaxValue = maxValue;
                }

                areaLayer.Items.Add(areaLayerItem);
            }

            return(areaLayer);
        }