//"Hispaniolan pine", "Pine"); //"Nonforest", "Not stocked"); //"Improved pine stock", "Pine"); /// <summary> /// build up a dataset with code instead of import an SIT formatted dataset /// </summary> private static void Method2() { string projectPath = @"C:\Program Files (x86)\Operational-Scale CBM-CFS3\Projects\myproject\myproject.mdb"; string dirname = System.IO.Path.GetDirectoryName(projectPath); if (!System.IO.Directory.Exists(dirname)) { System.IO.Directory.CreateDirectory(dirname); } //when initialize mapping is true, incoming sit //data must be named exactly as the definitions in the archive index Sitplugin sitplugin = new Sitplugin( outputPath: projectPath, initializeMapping: true); //define ten year age class size, with 20 values (200 years) int numAgeClasses = 20; sitplugin.AddAgeClasses(10, numAgeClasses); sitplugin.AddClassifier("admin"); sitplugin.AddClassifier("eco"); sitplugin.SetAdminEcoMapping("admin", "eco"); sitplugin.AddClassifier("species"); sitplugin.SetSpeciesClassifier("species"); sitplugin.AddClassifier("group"); sitplugin.AddInventory( classifierSet: "British Columbia,Pacific Maritime,Spruce,g1",//note exact naming is required when " initializeMapping: true" age: 100, area: 10, spatialReference: 100, HistoricDisturbance: "Wildfire", MostRecentDisturbance: "Clearcut harvesting with salvage"); List <double> FakeGrowthCurve = Enumerable.Range(0, numAgeClasses) .Select(a => 200 / (1 + Math.Exp(-0.5 * (a - numAgeClasses / 2.0)))).ToList(); sitplugin.AddYield( classifierSet: "British Columbia,Pacific Maritime,Spruce,?", leadingSpeciesClassifierValue: "Spruce", values: FakeGrowthCurve); sitplugin.AddDisturbanceEvent( classifierSet: "?,?,?,?",//when spatial reference is used, events do not use a classifier set disturbanceType: "Clearcut harvesting with salvage", timestep: 100, target: 5, targetType: "Area", spatialReference: 100); sitplugin.Import(); }
private static void MapSpatialUnits(Sitplugin sitplugin, JToken mappingConfig) { if (!Enum.TryParse((string)mappingConfig["mapping_mode"], out SpatialUnitClassifierMode mode)) { throw new ArgumentException("expected one of the SpatialUnitClassifierMode enum values"); } switch (mode) { case SpatialUnitClassifierMode.JoinedAdminEcoClassifier: sitplugin.SetSPUMapping((string)mappingConfig["spu_classifier"]); foreach (var item in mappingConfig["spu_mapping"]) { sitplugin.MapSpatialUnit( (string)item["user_spatial_unit"], (string)item["default_spatial_unit"]["admin_boundary"], (string)item["default_spatial_unit"]["eco_boundary"]); } break; case SpatialUnitClassifierMode.SeperateAdminEcoClassifiers: sitplugin.SetAdminEcoMapping( (string)mappingConfig["admin_classifier"], (string)mappingConfig["eco_classifier"]); if (mappingConfig["admin_mapping"] != null) { foreach (var item in mappingConfig["admin_mapping"]) { sitplugin.MapAdminBoundary( (string)item["user_admin_boundary"], (string)item["default_admin_boundary"]); } } if (mappingConfig["eco_mapping"] != null) { foreach (var item in mappingConfig["eco_mapping"]) { sitplugin.MapEcoBoundary( (string)item["user_eco_boundary"], (string)item["default_eco_boundary"]); } } break; case SpatialUnitClassifierMode.SingleDefaultSpatialUnit: sitplugin.SetSingleSpatialUnit((int)mappingConfig["default_spuid"]); break; } }