Skip to content

Commit

Permalink
fix #8389
Browse files Browse the repository at this point in the history
  • Loading branch information
namdre committed Mar 18, 2021
1 parent eb3b576 commit 55bfd7a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
19 changes: 13 additions & 6 deletions src/od/ODMatrix.cpp
Expand Up @@ -230,6 +230,13 @@ ODMatrix::write(SUMOTime begin, const SUMOTime end,
std::vector<ODCell*>::iterator next = myContainer.begin();
std::vector<ODVehicle> vehicles;
SUMOTime lastOut = -DELTA_T;

const OptionsCont& oc = OptionsCont::getOptions();
std::string personDepartPos = oc.isSet("departpos") ? oc.getString("departpos") : "random";
std::string personArrivalPos = oc.isSet("arrivalpos") ? oc.getString("arrivalpos") : "random";
std::string fromAttr = oc.getString("from-attr");
std::string toAttr = oc.getString("to-attr");

// go through the time steps
for (SUMOTime t = begin; t < end;) {
if (stepLog && t - lastOut >= DELTA_T) {
Expand Down Expand Up @@ -260,17 +267,15 @@ ODMatrix::write(SUMOTime begin, const SUMOTime end,
sort(vehicles.begin(), vehicles.end(), descending_departure_comperator());
}

const OptionsCont& oc = OptionsCont::getOptions();
std::string personDepartPos = oc.isSet("departpos") ? oc.getString("departpos") : "random";
std::string personArrivalPos = oc.isSet("arrivalpos") ? oc.getString("arrivalpos") : "random";
for (std::vector<ODVehicle>::reverse_iterator i = vehicles.rbegin(); i != vehicles.rend() && (*i).depart == t; ++i) {
if (t >= begin) {
myNumWritten++;
if (pedestrians) {
dev.openTag(SUMO_TAG_PERSON).writeAttr(SUMO_ATTR_ID, (*i).id).writeAttr(SUMO_ATTR_DEPART, time2string(t));
dev.writeAttr(SUMO_ATTR_DEPARTPOS, personDepartPos);
dev.openTag(SUMO_TAG_WALK);
dev.writeAttr(SUMO_ATTR_FROM, (*i).from).writeAttr(SUMO_ATTR_TO, (*i).to);
dev.writeAttr(fromAttr, (*i).from);
dev.writeAttr(toAttr, (*i).to);
dev.writeAttr(SUMO_ATTR_FROM_TAZ, (*i).cell->origin).writeAttr(SUMO_ATTR_TO_TAZ, (*i).cell->destination);
dev.writeAttr(SUMO_ATTR_ARRIVALPOS, personArrivalPos);
dev.closeTag();
Expand All @@ -279,7 +284,8 @@ ODMatrix::write(SUMOTime begin, const SUMOTime end,
dev.openTag(SUMO_TAG_PERSON).writeAttr(SUMO_ATTR_ID, (*i).id).writeAttr(SUMO_ATTR_DEPART, time2string(t));
dev.writeAttr(SUMO_ATTR_DEPARTPOS, personDepartPos);
dev.openTag(SUMO_TAG_PERSONTRIP);
dev.writeAttr(SUMO_ATTR_FROM, (*i).from).writeAttr(SUMO_ATTR_TO, (*i).to);
dev.writeAttr(fromAttr, (*i).from);
dev.writeAttr(toAttr, (*i).to);
dev.writeAttr(SUMO_ATTR_FROM_TAZ, (*i).cell->origin).writeAttr(SUMO_ATTR_TO_TAZ, (*i).cell->destination);
dev.writeAttr(SUMO_ATTR_ARRIVALPOS, personArrivalPos);
if (modes != "") {
Expand All @@ -289,7 +295,8 @@ ODMatrix::write(SUMOTime begin, const SUMOTime end,
dev.closeTag();
} else {
dev.openTag(SUMO_TAG_TRIP).writeAttr(SUMO_ATTR_ID, (*i).id).writeAttr(SUMO_ATTR_DEPART, time2string(t));
dev.writeAttr(SUMO_ATTR_FROM, (*i).from).writeAttr(SUMO_ATTR_TO, (*i).to);
dev.writeAttr(fromAttr, (*i).from);
dev.writeAttr(toAttr, (*i).to);
writeDefaultAttrs(dev, noVtype, i->cell);
dev.closeTag();
}
Expand Down
6 changes: 6 additions & 0 deletions src/od2trips_main.cpp
Expand Up @@ -114,6 +114,12 @@ fillOptions() {
oc.addSynonyme("ignore-vehicle-type", "no-vtype", true);
oc.addDescription("ignore-vehicle-type", "Output", "Does not save vtype information");

oc.doRegister("from-attr", new Option_String(toString(SUMO_ATTR_FROM)));
oc.addDescription("from-attr", "Output", "Defines an alternative from-attribute (i.e. fromJunction)");

oc.doRegister("to-attr", new Option_String(toString(SUMO_ATTR_TO)));
oc.addDescription("to-attr", "Output", "Defines an alternative to-attribute (i.e. toJunction)");


// register the time settings
oc.doRegister("begin", 'b', new Option_String("0", "TIME"));
Expand Down

0 comments on commit 55bfd7a

Please sign in to comment.