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);
                }
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 public CodeItem HentFraKode(NatureLevel natureLevel)
 {
     return(HentFraKode(Naturnivå.TilKode(natureLevel)));
 }