public static bool SaveLayers(Map map, string directory, Chart pieChart, Panel panel, ref CustomerInterpolation interpolation, ref List<InterpolatedFields> saveFields) { var projectFile = new Project(); var layers = new List<ProjectLayer>(); var baseMap = new BaseMapLayer(); UncheckAllLayers(map); foreach (var item in map.GetLayers()) { // Map Layer if (item is MapImageLayer && item.DataSet is InRamImageData) { } else { //Point Features Layer if (item is MapPointLayer && item.DataSet is PointShapefile) { var layer = item as IMapFeatureLayer; var fileName = Path.GetFileName(layer.DataSet.Filename); var path = Path.Combine(directory, fileName); layer.DataSet.SaveAs(Path.Combine(directory, fileName), true); layers.Add(new ProjectLayer() { Path = path }); item.Checked = true; PluginExtension.MyAppManager.Map.Refresh(); } else if (item is MapPolygonLayer && item.DataSet is IFeatureSet) { var layer = item as IMapPolygonLayer; var fileName = Path.GetFileName(layer.DataSet.Filename); var path = Path.Combine(directory, fileName); var imagePath = Path.Combine(directory, Path.GetFileNameWithoutExtension(layer.DataSet.Filename) + ".png"); var colorPlatImg = Path.Combine(directory, Path.GetFileNameWithoutExtension(layer.DataSet.Filename) + "_ColorPlate.png"); var pieChartImage = Path.Combine(directory, Path.GetFileNameWithoutExtension(layer.DataSet.Filename) + "_PIEChart.png"); item.Checked = true; PluginExtension.MyAppManager.Map.Refresh(); if (KrigingTemp.Fields.Where(c => c.OutputShapeFile == fileName).Count() > 0) { var tempField = KrigingTemp.Fields.Where(c => c.OutputShapeFile == fileName).First(); SaveGridFile(tempField.OutputShapeFile, directory); var intField = new InterpolatedFields(); intField.ZData = tempField.OutputZ; intField.Field = tempField.Field; intField.ShapeFile = path; intField.Image = imagePath; intField.PieChartData = Newtonsoft.Json.JsonConvert.SerializeObject(tempField.PieChartData); intField.ProductValue = tempField.ProductResult; if (new ConfigSaveKriging().LoadPieChart(pieChart, panel, tempField.PieChartData, pieChartImage)) { intField.PieChartImage = pieChartImage; } var ls = new List<ColorCategory>(); foreach (var s in layer.Symbology.Categories.ToList()) { ls.Add(new ColorCategory() { Color = s.GetColor(), Expression = s.FilterExpression, LegendText = s.LegendText, Max = s.Maximum, Min = s.Minimum, }); } var colorPlate = CreateColorPlate(ls); if (colorPlate != null) { colorPlate.Save(colorPlatImg, System.Drawing.Imaging.ImageFormat.Png); intField.ColorPlateImage = colorPlatImg; } intField.ColorsCategories = Newtonsoft.Json.JsonConvert.SerializeObject(ls); var array = Array.ConvertAll(tempField.OutputZ.Split(','), Double.Parse); intField.Max = Convert.ToDouble(array.Max(), System.Globalization.CultureInfo.InvariantCulture.NumberFormat); intField.Min = Convert.ToDouble(array.Min(), System.Globalization.CultureInfo.InvariantCulture.NumberFormat); intField.Mean = Convert.ToDouble(Math.Round(array.Average(), 2), System.Globalization.CultureInfo.InvariantCulture.NumberFormat); saveFields.Add(intField); getSnapshot(imagePath); } else { layers.Add(new ProjectLayer() { Path = path }); } layer.DataSet.SaveAs(path, true); } } } projectFile.BaseMap = baseMap; projectFile.Layers = layers; interpolation.ProjectFiles = Newtonsoft.Json.JsonConvert.SerializeObject(projectFile); return true; }
public static void UncheckAllLayers(Map map) { int count = 0; foreach (var item in map.GetLayers()) { if (!(item is MapImageLayer)) { item.Checked = false; } if (item is MapPolygonLayer && count == 0) { count++; var layer = item as IMapPolygonLayer; Extent ext = layer.Extent; //map.ViewExtents = ext; } } PluginExtension.MyAppManager.Legend.RefreshNodes(); PluginExtension.MyAppManager.Map.Refresh(); }