コード例 #1
0
    public void LoadEvents(string path)
    {
        //var eventsPath = Path.Combine(path, "500.events.xml");
        //var eventsPath = Path.Combine(path, "event_sample.xml");
        //matSimEvents = MatsimEvents.Load(eventsPath);

        matSimEvents = MatsimEvents.ReadXml(path);
        //Debug.Log("events loaded!");

        //Debug.Log(matSimEvents.lines[0]);
        //Debug.Log(matSimEvents.lines[1]);
    }
コード例 #2
0
    public static void SaveMatSimEventFile()
    {
        string outputPath = @"C:\Users\admgaming\Desktop\Jay\output";

        if (Directory.Exists(outputPath))
        {
            var events = new MatsimEvents();
            events.CreateTestEvents();
            events.Save(Path.Combine(outputPath, "test_output_events.xml"));

            //events = MatsimEvents.Load(Path.Combine(outputPath, "test_output_events.xml"));
            events = MatsimEvents.ReadXml(Path.Combine(outputPath, "test_output_events.xml"));

            events.DebugLog();
        }
    }
コード例 #3
0
    public static void ReadMatSimEventFile()
    {
        ClearMatSimLinks();
        string outputPath = @"C:\Users\admgaming\Desktop\Jay\output";

        if (Directory.Exists(outputPath))
        {
            //var container = new MatSimContainer();
            //container.LoadEvents(outputPath);
            //var xmlPath = Path.Combine(outputPath, "event_sample.xml");
            var xmlPath = Path.Combine(outputPath, "500.events.xml");
            var events  = MatsimEvents.ReadXml(xmlPath);
            Debug.Log(events.matsimEvents.Count);
            var vehEvents = events.FindEvents("Veh140021");
            foreach (var ev in vehEvents)
            {
                Debug.Log(ev.ToString());
            }
            //events.DebugLog();
        }
    }
コード例 #4
0
    public static MatsimEvents ReadXml(string path)
    {
        if (!File.Exists(path))
        {
            return(null);
        }

        using (XmlReader reader = new XmlTextReader(path))
        {
            var events = new MatsimEvents()
            {
                matsimEvents = new List <MatsimEvent>()
            };
            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                case XmlNodeType.Element:
                    if (reader.Name.Equals("event"))
                    {
                        float time;
                        if (!float.TryParse(reader.GetAttribute("time"), out time))
                        {
                            continue;
                        }

                        switch (reader.GetAttribute("type"))
                        {
                        case "TransitDriverStarts":
                            events.AddEvent(new MatsimDriverStarts(time,
                                                                   reader.GetAttribute("type"),
                                                                   reader.GetAttribute("driverId"),
                                                                   reader.GetAttribute("vehicleId"),
                                                                   reader.GetAttribute("transitLineId"),
                                                                   reader.GetAttribute("transitRouteId"),
                                                                   reader.GetAttribute("departureId"))
                                            );
                            break;

                        case "departure":
                            events.AddEvent(new MatsimDeparture(time,
                                                                reader.GetAttribute("type"),
                                                                reader.GetAttribute("person"),
                                                                reader.GetAttribute("link"),
                                                                reader.GetAttribute("legMode"))
                                            );
                            break;

                        case "arrival":
                            events.AddEvent(new MatsimArrival(time,
                                                              reader.GetAttribute("type"),
                                                              reader.GetAttribute("person"),
                                                              reader.GetAttribute("link"),
                                                              reader.GetAttribute("legMode"))
                                            );
                            break;

                        case "PersonEntersVehicle":
                            events.AddEvent(new MatsimEntersVehicle(time,
                                                                    reader.GetAttribute("type"),
                                                                    reader.GetAttribute("person"),
                                                                    reader.GetAttribute("vehicle"))
                                            );
                            break;

                        case "PersonLeavesVehicle":
                            events.AddEvent(new MatsimLeavesVehicle(time,
                                                                    reader.GetAttribute("type"),
                                                                    reader.GetAttribute("person"),
                                                                    reader.GetAttribute("vehicle"))
                                            );
                            break;

                        case "vehicle leaves traffic":
                            events.AddEvent(new MatsimLeavesTraffic(time,
                                                                    reader.GetAttribute("type"),
                                                                    reader.GetAttribute("person"),
                                                                    reader.GetAttribute("link"),
                                                                    reader.GetAttribute("vehicle"),
                                                                    reader.GetAttribute("networkMode"),
                                                                    float.Parse(reader.GetAttribute("relativePosition")))
                                            );
                            break;

                        case "wait2link":
                            events.AddEvent(new MatsimWait2Link(time,
                                                                reader.GetAttribute("type"),
                                                                reader.GetAttribute("person"),
                                                                reader.GetAttribute("link"),
                                                                reader.GetAttribute("vehicle"),
                                                                reader.GetAttribute("networkMode"),
                                                                float.Parse(reader.GetAttribute("relativePosition")))
                                            );
                            break;

                        case "entered link":
                            events.AddEvent(new MatsimEnterLink(time,
                                                                reader.GetAttribute("type"),
                                                                reader.GetAttribute("person"),
                                                                reader.GetAttribute("link"),
                                                                reader.GetAttribute("vehicle"))
                                            );
                            break;

                        case "left link":
                            events.AddEvent(new MatsimLeftLink(time,
                                                               reader.GetAttribute("type"),
                                                               reader.GetAttribute("person"),
                                                               reader.GetAttribute("link"),
                                                               reader.GetAttribute("vehicle"))
                                            );
                            break;

                        case "waitingForPt":
                            events.AddEvent(new MatsimWaitingForPt(time,
                                                                   reader.GetAttribute("type"),
                                                                   reader.GetAttribute("agent"),
                                                                   reader.GetAttribute("atStop"),
                                                                   reader.GetAttribute("destinationStop"))
                                            );
                            break;

                        case "actstart":
                            events.AddEvent(new MatsimActStart(time,
                                                               reader.GetAttribute("type"),
                                                               reader.GetAttribute("person"),
                                                               reader.GetAttribute("link"),
                                                               reader.GetAttribute("actType"))
                                            );
                            break;

                        case "actend":
                            events.AddEvent(new MatsimActStart(time,
                                                               reader.GetAttribute("type"),
                                                               reader.GetAttribute("person"),
                                                               reader.GetAttribute("link"),
                                                               reader.GetAttribute("actType"))
                                            );
                            break;

                        case "VehicleArrivesAtFacility":
                            events.AddEvent(new MatsimVehicleArrivesAtFacility(time,
                                                                               reader.GetAttribute("type"),
                                                                               reader.GetAttribute("vehicle"),
                                                                               reader.GetAttribute("facility"),
                                                                               float.Parse(reader.GetAttribute("delay")))
                                            );
                            break;

                        case "VehicleDepartsAtFacility":
                            events.AddEvent(new MatsimVehicleDepartsAtFacility(time,
                                                                               reader.GetAttribute("type"),
                                                                               reader.GetAttribute("vehicle"),
                                                                               reader.GetAttribute("facility"),
                                                                               float.Parse(reader.GetAttribute("delay")))
                                            );
                            break;

                        case "travelled":
                            events.AddEvent(new MatsimTravelled(time,
                                                                reader.GetAttribute("type"),
                                                                reader.GetAttribute("person"),
                                                                double.Parse(reader.GetAttribute("distance")))
                                            );
                            break;

                        case "stuckAndAbort":
                            var linkStr = reader.GetAttribute("link");
                            var legStr  = reader.GetAttribute("legMode");
                            var perStr  = reader.GetAttribute("person");
                            if (!string.IsNullOrEmpty(perStr))
                            {
                                if (!string.IsNullOrEmpty(linkStr) && !string.IsNullOrEmpty(legStr))
                                {
                                    events.AddEvent(new MatsimStuck(time,
                                                                    reader.GetAttribute("type"),
                                                                    linkStr,
                                                                    legStr,
                                                                    perStr));
                                }
                                else
                                {
                                    events.AddEvent(new MatsimStuck(time,
                                                                    reader.GetAttribute("type"),
                                                                    perStr));
                                }
                            }
                            break;
                        }
                    }
                    break;

                case XmlNodeType.EndElement:
                    Debug.Log("Events loaded.");
                    break;
                }
            }
            return(events);
        }
    }