Skip to content

Commit

Permalink
warning for stop pairs with the same departure time
Browse files Browse the repository at this point in the history
  • Loading branch information
polettif committed Nov 3, 2020
1 parent 7ef0740 commit 112a05d
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 11 deletions.
24 changes: 16 additions & 8 deletions src/main/java/org/matsim/pt2matsim/gtfs/GtfsConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public class GtfsConverter {
protected Vehicles vehiclesContainer;

protected int noStopTimeTrips;
protected int stopPairsWithoutOffset;

public GtfsConverter(GtfsFeed gtfsFeed) {
this.feed = gtfsFeed;
Expand Down Expand Up @@ -99,7 +100,7 @@ public void convert(String serviceIdsParam, String transformation, TransitSchedu

// get sample date
LocalDate extractDate = getExtractDate(serviceIdsParam);
if(extractDate != null) log.info(" Extracting schedule from date " + extractDate);
if(extractDate != null) log.info(" Extracting schedule from date " + extractDate);

// generate TransitStopFacilities from gtfsStops and add them to the schedule
createStopFacilities(schedule);
Expand Down Expand Up @@ -201,6 +202,9 @@ protected void createTransitLines(TransitSchedule schedule, LocalDate extractDat
if(noStopTimeTrips > 0) {
log.warn(noStopTimeTrips + " trips without stop times were not converted");
}
if(stopPairsWithoutOffset > 0) {
log.warn(stopPairsWithoutOffset + " trips contain stops with equal departure times.");
}
}

/**
Expand Down Expand Up @@ -228,10 +232,18 @@ protected TransitRoute createTransitRoute(Trip trip, Map<Id<TransitStopFacility>
List<TransitRouteStop> transitRouteStops = new ArrayList<>();

// create transit route stops
boolean hasStopPairsWithoutOffset = false;
int prevStopDepartureTime = -1;
for(StopTime stopTime : trip.getStopTimes()) {
TransitRouteStop newTransitRouteStop = createTransitRouteStop(stopTime, trip, stopFacilities);
transitRouteStops.add(newTransitRouteStop);

if(stopTime.getDepartureTime() == prevStopDepartureTime) {
hasStopPairsWithoutOffset = true;
}
prevStopDepartureTime = stopTime.getDepartureTime();
}
if(hasStopPairsWithoutOffset) stopPairsWithoutOffset++;

// Calculate departures from frequencies (if available)
TransitRoute transitRoute;
Expand All @@ -244,29 +256,25 @@ protected TransitRoute createTransitRoute(Trip trip, Map<Id<TransitStopFacility>
transitRoute.addDeparture(newDeparture);
}
}
return transitRoute;
} else {
// Calculate departures from stopTimes
int routeStartTime = trip.getStopTimes().first().getDepartureTime();

transitRoute = this.scheduleFactory.createTransitRoute(createTransitRouteId(trip), null, transitRouteStops, trip.getRoute().getRouteType().name);
Departure newDeparture = this.scheduleFactory.createDeparture(createDepartureId(transitRoute, routeStartTime), routeStartTime);
transitRoute.addDeparture(newDeparture);

if(shapeId != null) ScheduleTools.setShapeId(transitRoute, trip.getShape().getId());

return transitRoute;
}
if(shapeId != null) ScheduleTools.setShapeId(transitRoute, trip.getShape().getId());
return transitRoute;
}

protected TransitRouteStop createTransitRouteStop(StopTime stopTime, Trip trip, Map<Id<TransitStopFacility>, TransitStopFacility> stopFacilities) {
double arrivalOffset = Time.UNDEFINED_TIME, departureOffset = Time.UNDEFINED_TIME;
double arrivalOffset = Time.getUndefinedTime(), departureOffset = Time.getUndefinedTime();

int routeStartTime = trip.getStopTimes().first().getArrivalTime();
int firstSequencePos = trip.getStopTimes().first().getSequencePosition();
int lastSequencePos = trip.getStopTimes().last().getSequencePosition();


// add arrivalOffset time if current stopTime is not on the first stop of the route
if(!stopTime.getSequencePosition().equals(firstSequencePos)) {
arrivalOffset = stopTime.getArrivalTime() - routeStartTime;
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/org/matsim/pt2matsim/run/ExampleWorkflow.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static void main(String[] args) {

// convert schedule
String unmappedSchedule = "intermediate/schedule_unmapped.xml.gz";
Gtfs2TransitSchedule.run("gtfs", "dayWithMostTrips", osmConfig.getOutputCoordinateSystem(), unmappedSchedule, "output/vehicles_unmapped.xml.gz");
Gtfs2TransitSchedule.run("gtfs", "dayWithMostTrips", osmConfig.getOutputCoordinateSystem(), unmappedSchedule, "output/vehicles.xml.gz");

// setup public transit mapper
PublicTransitMappingConfigGroup mapperConfig = PublicTransitMappingConfigGroup.createDefaultConfig();
Expand All @@ -35,12 +35,15 @@ public static void main(String[] args) {
// map schedule to network
PTMapper.mapScheduleToNetwork(schedule, network, mapperConfig);

// write results
// write mapping results
NetworkTools.writeNetwork(network, "output/network.xml.gz");
ScheduleTools.writeTransitSchedule(schedule, "output/schedule.xml.gz");

// Write geojson result
Network2Geojson.run(osmConfig.getOutputCoordinateSystem(), network, "output/network.geojson");
Schedule2Geojson.run(osmConfig.getOutputCoordinateSystem(), schedule, "output/schedule.geojson");

// check schedule
CheckMappedSchedulePlausibility.run("output/schedule.xml.gz", "output/network.xml.gz", osmConfig.getOutputCoordinateSystem(), "output/check/");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public static void removeNotUsedStopFacilities(TransitSchedule schedule) {
removed++;
}

log.info(" " + removed + " stop facilities removed");
log.info(" " + removed + " stop facilities removed");
}

/**
Expand Down

0 comments on commit 112a05d

Please sign in to comment.