public static void InitializeMetadata(int Timestep, string severityMapFileName, string srdMapFileName, string nrdMapFileName, string logFileName, IEnumerable <IAgent> manyAgentParameters, ICore mCore) { ScenarioReplicationMetadata scenRep = new ScenarioReplicationMetadata() { //String outputFolder = OutputPath.ReplaceTemplateVars("", FINISH ME LATER); //FolderName = System.IO.Directory.GetCurrentDirectory().Split("\\".ToCharArray()).Last(), RasterOutCellArea = PlugIn.ModelCore.CellArea, TimeMin = PlugIn.ModelCore.StartTime, TimeMax = PlugIn.ModelCore.EndTime, //ProjectionFilePath = "Projection.?" //How do we get projections??? }; Extension = new ExtensionMetadata(mCore) { Name = PlugIn.ExtensionName, TimeInterval = Timestep, //change this to PlugIn.TimeStep for other extensions ScenarioReplicationMetadata = scenRep }; //--------------------------------------- // table outputs: //--------------------------------------- //PlugIn.EventLog = new MetadataTable<EventsLog>(logFileName); PlugIn.EventLog = new MetadataTable <EventsLog>("bda-log.csv"); OutputMetadata tblOut_events = new OutputMetadata() { Type = OutputType.Table, Name = "EventLog", FilePath = PlugIn.EventLog.FilePath, Visualize = false, }; tblOut_events.RetriveFields(typeof(EventsLog)); Extension.OutputMetadatas.Add(tblOut_events); //PlugIn.PDSILog = new MetadataTable<PDSI_Log>("PDSI_log.csv"); //OutputMetadata tblOut_PDSI = new OutputMetadata() //{ // Type = OutputType.Table, // Name = "PDSILog", // FilePath = PlugIn.PDSILog.FilePath //}; //tblOut_events.RetriveFields(typeof(PDSI_Log)); //Extension.OutputMetadatas.Add(tblOut_PDSI); //--------------------------------------- // map outputs: //--------------------------------------- foreach (IAgent activeAgent in manyAgentParameters) { string mapTypePath = MapNames.ReplaceTemplateVarsMetadata(severityMapFileName, activeAgent.AgentName); OutputMetadata mapOut_Severity = new OutputMetadata() { Type = OutputType.Map, Name = System.String.Format(activeAgent.AgentName + " Outbreak Severity"), FilePath = @mapTypePath, Map_DataType = MapDataType.Ordinal, Map_Unit = FieldUnits.Severity_Rank, Visualize = true, }; Extension.OutputMetadatas.Add(mapOut_Severity); if (srdMapFileName != null) { mapTypePath = MapNames.ReplaceTemplateVarsMetadata(srdMapFileName, activeAgent.AgentName); OutputMetadata mapOut_SRD = new OutputMetadata() { Type = OutputType.Map, Name = "Site Resource Dominance", FilePath = @mapTypePath, Map_DataType = MapDataType.Continuous, Map_Unit = FieldUnits.Percentage, Visualize = false, }; Extension.OutputMetadatas.Add(mapOut_SRD); } if (nrdMapFileName != null) { mapTypePath = MapNames.ReplaceTemplateVarsMetadata(nrdMapFileName, activeAgent.AgentName); OutputMetadata mapOut_NRD = new OutputMetadata() { Type = OutputType.Map, Name = "Neighborhood Resource Dominance", FilePath = @mapTypePath, Map_DataType = MapDataType.Continuous, Map_Unit = FieldUnits.Percentage, Visualize = false, }; Extension.OutputMetadatas.Add(mapOut_NRD); } } //--------------------------------------- MetadataProvider mp = new MetadataProvider(Extension); mp.WriteMetadataToXMLFile("Metadata", Extension.Name, Extension.Name); }
//--------------------------------------------------------------------- ///<summary> /// Run the BDA extension at a particular timestep. ///</summary> public override void Run() { PlugIn.ModelCore.UI.WriteLine(" Processing landscape for BDA events ..."); if (!reinitialized) { InitializePhase2(); } //SiteVars.Epidemic.SiteValues = null; int eventCount = 0; foreach (IAgent activeAgent in manyAgentParameters) { activeAgent.TimeSinceLastEpidemic += Timestep; int ROS = RegionalOutbreakStatus(activeAgent, Timestep); if (ROS > 0) { Epidemic.Initialize(activeAgent); Epidemic currentEpic = Epidemic.Simulate(activeAgent, PlugIn.ModelCore.CurrentTime, Timestep, ROS); //activeAgent.TimeSinceLastEpidemic = activeAgent.TimeSinceLastEpidemic + Timestep; if (currentEpic != null) { LogEvent(PlugIn.ModelCore.CurrentTime, currentEpic, ROS, activeAgent); if (currentEpic.MeanSeverity > 0) //Temporary fix to work with VizTool { //----- Write BDA severity maps -------- string path = MapNames.ReplaceTemplateVars(mapNameTemplate, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime); //IOutputRaster<SeverityPixel> map = CreateMap(PlugIn.ModelCore.CurrentTime, activeAgent.AgentName); //using (map) { // SeverityPixel pixel = new SeverityPixel(); using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path, modelCore.Landscape.Dimensions)) { ShortPixel pixel = outputRaster.BufferPixel; foreach (Site site in PlugIn.ModelCore.Landscape.AllSites) { if (site.IsActive) { if (SiteVars.Disturbed[site]) { pixel.MapCode.Value = (short)(activeAgent.Severity[site] + 1); } else { pixel.MapCode.Value = 1; } } else { // Inactive site pixel.MapCode.Value = 0; } outputRaster.WriteBufferPixel(); } } } if (!(srdMapNames == null)) { //----- Write BDA SRD maps -------- string path2 = MapNames.ReplaceTemplateVars(srdMapNames, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime); using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path2, modelCore.Landscape.Dimensions)) { ShortPixel pixel = outputRaster.BufferPixel; foreach (Site site in PlugIn.ModelCore.Landscape.AllSites) { if (site.IsActive) { pixel.MapCode.Value = (short)System.Math.Round(SiteVars.SiteResourceDom[site] * 100.00); } else { // Inactive site pixel.MapCode.Value = 0; } outputRaster.WriteBufferPixel(); } } } if (!(nrdMapNames == null)) { //----- Write BDA NRD maps -------- string path3 = MapNames.ReplaceTemplateVars(nrdMapNames, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime); using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path3, modelCore.Landscape.Dimensions)) { ShortPixel pixel = outputRaster.BufferPixel; foreach (Site site in PlugIn.ModelCore.Landscape.AllSites) { if (site.IsActive) { pixel.MapCode.Value = (short)System.Math.Round(SiteVars.NeighborResourceDom[site] * 100.00); } else { // Inactive site pixel.MapCode.Value = 0; } outputRaster.WriteBufferPixel(); } } } if (!(vulnMapNames == null)) { //----- Write BDA Vulnerability maps -------- string path4 = MapNames.ReplaceTemplateVars(vulnMapNames, activeAgent.AgentName, PlugIn.ModelCore.CurrentTime); using (IOutputRaster <ShortPixel> outputRaster = modelCore.CreateRaster <ShortPixel>(path4, modelCore.Landscape.Dimensions)) { ShortPixel pixel = outputRaster.BufferPixel; foreach (Site site in PlugIn.ModelCore.Landscape.AllSites) { if (site.IsActive) { pixel.MapCode.Value = (short)System.Math.Round(SiteVars.Vulnerability[site] * 100.00); } else { // Inactive site pixel.MapCode.Value = 0; } outputRaster.WriteBufferPixel(); } } } eventCount++; } } } }