//"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 LoadConfigDataObjects(Sitplugin plugin, JToken dataConfig) { var parseClassifierSet = new Func <JToken, string>((t) => { return(String.Join(",", t.Select(a => (string)a))); }); foreach (var i in dataConfig["inventory"]) { plugin.AddInventory( classifierSet: parseClassifierSet(i["classifier_set"]), area: (double)i["area"], age: (int)i["age"], spatialReference: Unpack(i, "spatial_reference", -1), delay: Unpack(i, "delay", 0), unfcccLandClass: Unpack(i, "unfccc_land_class", 0), HistoricDisturbance: Unpack(i, "historic_disturbance", (string)null), MostRecentDisturbance: Unpack(i, "last_pass_disturbance", (string)null)); } foreach (var i in dataConfig["disturbance_events"]) { plugin.AddDisturbanceEvent( classifierSet: parseClassifierSet(i["classifier_set"]), disturbanceType: (string)i["disturbance_type"], timestep: (int)i["time_step"], target: (double)i["target"], targetType: (string)i["target_type"], sort: (string)i["sort"], spatialReference: Unpack(i, "spatial_reference", -1), ageMin: Unpack(i, "age_min", -1), ageMax: Unpack(i, "age_max", -1), efficiency: Unpack(i, "efficiency", 1.0), eligibility: i["eligibility"]?.Select(a => (double)a).ToArray()); } foreach (var i in dataConfig["yield"]) { plugin.AddYield( classifierSet: parseClassifierSet(i["classifier_set"]), leadingSpeciesClassifierValue: (string)i["leading_species_classifier_value"], values: i["values"].Select(a => (double)a).ToList()); } if (dataConfig["transition_rules"] != null) { foreach (var i in dataConfig["transition_rules"]) { plugin.AddTransitionRule( classifierSetSource: parseClassifierSet(i["classifier_set_source"]), classifierSetTarget: parseClassifierSet(i["classifier_set_target"]), disturbanceType: (string)i["disturbance_type"], percent: Unpack(i, "percent", 100.0), spatialReference: Unpack(i, "spatial_reference", -1), ageMin: Unpack(i, "age_min", -1), ageMax: Unpack(i, "age_max", -1), resetAge: Unpack(i, "reset_age", -1), regenDelay: Unpack(i, "regen_delay", 0)); } } }