public static IntersectionData CreateIntersection(int numThruLanes, int cycleLengthSec, AreaType ArtAreaType, AnalysisMode ProjAnalMode) { List <TimerData> Timers = TimerData.GetStandardTimers(); List <ApproachData> newApproaches = new List <ApproachData>(); List <LaneGroupData> newLaneGroups = new List <LaneGroupData>(); List <LaneData> newLanes; List <SignalPhaseData> Phases = new List <SignalPhaseData>(); // Intersection Signal Data SignalPhaseData WBLSignalPhase = new SignalPhaseData(nemaPhaseId: 1, nemaMvmtId: NemaMovementNumbers.WBLeft, phaseType: PhasingType.Protected, greenTime: 20, yellowTime: 3, allRedTime: 1, startUpLostTime: 2, timer: Timers[0]); SignalPhaseData EBLSignalPhase = new SignalPhaseData(5, NemaMovementNumbers.EBLeft, PhasingType.Protected, 20, 3, 1, 2, Timers[1]); SignalPhaseData EBTSignalPhase = new SignalPhaseData(2, NemaMovementNumbers.EBThru, PhasingType.Protected, 45, 3, 1, 2, Timers[2]); SignalPhaseData WBTSignalPhase = new SignalPhaseData(6, NemaMovementNumbers.WBThru, PhasingType.Protected, 45, 3, 1, 2, Timers[3]); SignalPhaseData NBLSignalPhase = new SignalPhaseData(3, NemaMovementNumbers.NBLeft, PhasingType.Protected, 8, 3, 1, 2, Timers[4]); SignalPhaseData SBLSignalPhase = new SignalPhaseData(7, NemaMovementNumbers.SBLeft, PhasingType.Protected, 8, 3, 1, 2, Timers[5]); SignalPhaseData SBTSignalPhase = new SignalPhaseData(4, NemaMovementNumbers.SBThru, PhasingType.Protected, 35, 3, 1, 2, Timers[6]); SignalPhaseData NBTSignalPhase = new SignalPhaseData(8, NemaMovementNumbers.NBThru, PhasingType.Protected, 35, 3, 1, 2, Timers[7]); Phases.Add(WBLSignalPhase); Phases.Add(EBTSignalPhase); Phases.Add(NBLSignalPhase); Phases.Add(SBTSignalPhase); Phases.Add(EBLSignalPhase); Phases.Add(WBTSignalPhase); Phases.Add(SBLSignalPhase); Phases.Add(NBTSignalPhase); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, 0); newLaneGroups.Add(new LaneGroupData(1, "NB Thru+Right", LaneMovementsAllowed.ThruRightShared, NemaMovementNumbers.NBThru, TravelDirection.Northbound, newLanes, NBTSignalPhase, arvType: 3)); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, numThruLanes); newLaneGroups.Add(new LaneGroupData(2, "NB Left", LaneMovementsAllowed.LeftOnly, NemaMovementNumbers.NBLeft, TravelDirection.Northbound, newLanes, NBLSignalPhase, arvType: 3)); newApproaches.Add(new ApproachData(1, TravelDirection.Northbound, "NB", 0, newLaneGroups)); newLaneGroups = new List <LaneGroupData>(); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, 0); newLaneGroups.Add(new LaneGroupData(1, "EB Thru+Right", LaneMovementsAllowed.ThruRightShared, NemaMovementNumbers.EBThru, TravelDirection.Eastbound, newLanes, EBTSignalPhase, arvType: 3)); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, numThruLanes); newLaneGroups.Add(new LaneGroupData(2, "EB Left", LaneMovementsAllowed.LeftOnly, NemaMovementNumbers.EBLeft, TravelDirection.Eastbound, newLanes, EBLSignalPhase, arvType: 3)); newApproaches.Add(new ApproachData(2, TravelDirection.Eastbound, "EB", 0, newLaneGroups)); newLaneGroups = new List <LaneGroupData>(); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, 0); newLaneGroups.Add(new LaneGroupData(1, "SB Thru+Right", LaneMovementsAllowed.ThruRightShared, NemaMovementNumbers.SBThru, TravelDirection.Southbound, newLanes, SBTSignalPhase, arvType: 3)); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, numThruLanes); newLaneGroups.Add(new LaneGroupData(2, "SB Left", LaneMovementsAllowed.LeftOnly, NemaMovementNumbers.SBLeft, TravelDirection.Southbound, newLanes, SBLSignalPhase, arvType: 3)); newApproaches.Add(new ApproachData(3, TravelDirection.Southbound, "SB", 0, newLaneGroups)); newLaneGroups = new List <LaneGroupData>(); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, 0); newLaneGroups.Add(new LaneGroupData(1, "WB Thru+Right", LaneMovementsAllowed.ThruRightShared, NemaMovementNumbers.WBThru, TravelDirection.Westbound, newLanes, WBTSignalPhase, arvType: 3)); newLanes = CreateArterial_HCMExample1.CreateLanes(numThruLanes, numThruLanes); newLaneGroups.Add(new LaneGroupData(2, "WB Left", LaneMovementsAllowed.LeftOnly, NemaMovementNumbers.WBLeft, TravelDirection.Westbound, newLanes, WBLSignalPhase, arvType: 3)); newApproaches.Add(new ApproachData(4, TravelDirection.Westbound, "WB", 0, newLaneGroups)); SignalCycleData newSignalData = new SignalCycleData(SigControlType.CoordinatedActuated, cycleLengthSec, Phases); IntersectionData newIntersection = new IntersectionData(1, ArtAreaType, ArterialClass.ClassI, newApproaches, newSignalData, ProjAnalMode); return(newIntersection); }
private void btnCreateArterial_Click(object sender, EventArgs e) { Project = new ProjectData(); //ArterialData newArterial = CreateArterial.NewArterial(); //Art = CreateArterial2.NewArterial(); Art = CreateArterial_HCMExample1.NewArterial(Project.AnalMode, 800); //Change file path/name as appropriate //Project.FileName = @"X:\OneDrive\Software Projects\HCM-CALC\_DataFiles\HCM\Urban Streets\HCMExample1.xml"; //Project.FileName = @"C:\Users\Christian\source\repos\HCMCalc_UrbanStreets\bin\Output\HCMExample1.xml"; if (OutputFilesFolder == "") { Project.FileName = "HCMExample1.xml"; } else { Project.FileName = OutputFilesFolder + "\\HCMExample1.xml"; } FileInputOutput2.SerializeArterialData(Project.FileName, Art); }