private static void ValidateDefinitionsAndParameters(IReadOnlyCollection <NinVariabelDefinisjon> variableDefinitions, IEnumerable <NatureArea> natureAreas) { foreach (var natureArea in natureAreas) { string natureLevelCode = Naturnivå.TilKode(natureArea.Nivå); foreach (var parameter in natureArea.Parameters) { Validate(variableDefinitions, parameter, natureLevelCode); } } }
public static MemoryStream GenerateShapeFile(Collection <NatureArea> natureAreas, int epsgCode) { // Return empty memory stream if there are no nature areas or no epsg code: if (natureAreas.Count == 0 || epsgCode < 0) { return(new MemoryStream()); } // Define a new set of features and set projection: FeatureSet featureSets = new FeatureSet { Projection = ProjectionInfo.FromEpsgCode(epsgCode) }; // Add data columns featureSets.DataTable.Columns.Add(new DataColumn("LocalId", typeof(string))); featureSets.DataTable.Columns.Add(new DataColumn("Nivå", typeof(string))); featureSets.DataTable.Columns.Add(new DataColumn("NiN", typeof(string))); // Create geometry objects: foreach (var natureArea in natureAreas) { if (natureArea.Area == null) { continue; } IFeature feature = featureSets.AddFeature(DotSpatialGeometry.GetGeometry(natureArea.Area)); // Adding values for the data columns feature.DataRow.BeginEdit(); feature.DataRow["LocalId"] = natureArea.UniqueId.LocalId.ToString(); feature.DataRow["Nivå"] = Naturnivå.TilNavn(natureArea.Nivå); feature.DataRow["NiN"] = FormatNatureAreaTypes(natureArea.Parameters); feature.DataRow.EndEdit(); } // Create temporary directory: string tempDirectoryPath = GetTempDirectoryPath(); // Save the feature set: featureSets.SaveAs(tempDirectoryPath + "\\TempShapeFiles\\data.shp", true); // Zip all shape files: ZipFile.CreateFromDirectory(tempDirectoryPath + "\\TempShapeFiles", tempDirectoryPath + "\\data.zip"); // Read the zip file: var bytes = File.ReadAllBytes(tempDirectoryPath + "\\data.zip"); // Delete the temporary directory: Directory.Delete(tempDirectoryPath, true); return(new MemoryStream(bytes)); }
public MemoryStream GenerateXlsxStream(Collection <NatureAreaExport> natureAreas) { var descriptionVariableColumns = GetDistinctDescriptionVariables(natureAreas); var workBook = new XLWorkbook(); var sheet = workBook.AddWorksheet("Naturtypekart"); sheet.Name = "Naturtypekart"; int columnNumber = 0; int rowNumber = 0; sheet.Cell(1, 1).Value = "asdf"; sheet.Cell(++rowNumber, ++columnNumber).Value = "Id"; sheet.Cell(rowNumber, ++columnNumber).Value = "Naturnivå"; sheet.Cell(rowNumber, ++columnNumber).Value = "Hovedtypegruppe"; sheet.Cell(rowNumber, ++columnNumber).Value = "Hovedtype"; sheet.Cell(rowNumber, ++columnNumber).Value = "Grunntype"; sheet.Cell(rowNumber, ++columnNumber).Value = "Mosaikk"; sheet.Cell(rowNumber, ++columnNumber).Value = "Målestokk"; foreach (var descriptionVariableColumn in descriptionVariableColumns) { sheet.Cell(rowNumber, ++columnNumber).Value = descriptionVariableColumn; } sheet.Cell(rowNumber, ++columnNumber).Value = "Kartlagt dato"; sheet.Cell(rowNumber, ++columnNumber).Value = "Datakilde"; sheet.Cell(rowNumber, ++columnNumber).Value = "Program"; sheet.Cell(rowNumber, ++columnNumber).Value = "Størrelse (m²)"; sheet.Row(rowNumber).Style.Font.Bold = true; sheet.Row(rowNumber).Style.Fill.SetPatternColor(XLColor.LightGray); foreach (var natureArea in natureAreas) { SqlGeometry area = null; if (natureArea.Area != null) { area = reproject.Reproject(natureArea.Area); } foreach (var parameter in natureArea.Parameters) { ++rowNumber; sheet.Cell(rowNumber, 1).Value = natureArea.UniqueId.LocalId.ToString(); sheet.Cell(rowNumber, 2).Value = Naturnivå.TilNavn(natureArea.Nivå); sheet.Cell(rowNumber, 6).Value = natureArea.Parameters.Count > 1 ? "Ja" : "Nei"; sheet.Cell(rowNumber, 7).Value = natureArea.MetadataSurveyScale; if (parameter.GetType() == typeof(NatureAreaType)) { var natureAreaType = (NatureAreaType)parameter; var ninCode = naturtypeKodetre.HentFraKode(natureAreaType.Code); if (ninCode != null && ninCode.ParentCodeItems.Count == 1) { sheet.Cell(rowNumber, 4).Value = ninCode.Name; } else if (ninCode != null && ninCode.ParentCodeItems.Count == 2) { sheet.Cell(rowNumber, 4).Value = ninCode.ParentCodeItems[1].Name; } else if (ninCode != null && ninCode.ParentCodeItems.Count == 3) { sheet.Cell(rowNumber, 3).Value = ninCode.ParentCodeItems[1].Name; sheet.Cell(rowNumber, 4).Value = ninCode.ParentCodeItems[2].Name; } sheet.Cell(rowNumber, 5).Value = natureAreaType.Code; foreach (var additionalVariable in natureAreaType.AdditionalVariables) { int columnIndex = descriptionVariableColumns.IndexOf(additionalVariable.Code); double additionalVariableValueDouble; int additionalVariableValueInt; if (double.TryParse(additionalVariable.Value, out additionalVariableValueDouble)) { sheet.Cell(rowNumber, columnIndex + 8).Value = additionalVariableValueDouble; } else if (int.TryParse(additionalVariable.Value, out additionalVariableValueInt)) { sheet.Cell(rowNumber, columnIndex + 8).Value = additionalVariableValueInt; } else { sheet.Cell(rowNumber, columnIndex + 8).Value = additionalVariable.Value; } } } else if (parameter.GetType() == typeof(DescriptionVariable)) { var descriptionVariable = (DescriptionVariable)parameter; int columnIndex = descriptionVariableColumns.IndexOf(descriptionVariable.Code); double descriptionVariableValueDouble; int descriptionVariableValueInt; if (double.TryParse(descriptionVariable.Value, out descriptionVariableValueDouble)) { sheet.Cell(rowNumber, columnIndex + 8).Value = descriptionVariableValueDouble; } else if (int.TryParse(descriptionVariable.Value, out descriptionVariableValueInt)) { sheet.Cell(rowNumber, columnIndex + 8).Value = descriptionVariableValueInt; } else { sheet.Cell(rowNumber, columnIndex + 8).Value = descriptionVariable.Value; } } sheet.Cell(rowNumber, 8 + descriptionVariableColumns.Count).Value = natureArea.Surveyed?.ToShortDateString() ?? string.Empty; sheet.Cell(rowNumber, 9 + descriptionVariableColumns.Count).Value = natureArea.Institution; sheet.Cell(rowNumber, 10 + descriptionVariableColumns.Count).Value = natureArea.MetadataProgram; if (area != null) { sheet.Cell(rowNumber, 11 + descriptionVariableColumns.Count).Value = Math.Round(area.STArea().Value, 2); } } } sheet.AutoFilter.Set(sheet.Range(1, 1, columnNumber, rowNumber)); sheet.Columns().AdjustToContents(); MemoryStream xlsxStream = new MemoryStream(); workBook.SaveAs(xlsxStream); xlsxStream.Position = 0; return(xlsxStream); }
public CodeItem HentFraKode(NatureLevel natureLevel) { return(HentFraKode(Naturnivå.TilKode(natureLevel))); }