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); }
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); } }
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); } }
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); }