2017-04-30 1 views
0

Ich versuche, einen Stopp vom Routing durch den Code auszuschließen. Ich schaffe gtfs Echtzeit AlarmIst es möglich, Stopps vom Routing durch den Code in OpenTripPlanner auszuschließen?

public class ServiceAlertStop { 

    GtfsRealtime.FeedMessage feedMessage; 

    public GtfsRealtime.FeedMessage config(){ 
    GtfsRealtime.FeedMessage.Builder feedMessageBuilder = 
    GtfsRealtime.FeedMessage.newBuilder(); 

    GtfsRealtime.FeedHeader.Builder header = 
    GtfsRealtime.FeedHeader.newBuilder(); 
    header.setTimestamp(System.currentTimeMillis()); 

    header.setIncrementality(GtfsRealtime.FeedHeader. 
    Incrementality.FULL_DATASET); 
    header.setGtfsRealtimeVersion("1.0"); 
    feedMessageBuilder.setHeader(header); 

    GtfsRealtime.FeedEntity.Builder entity = 
    GtfsRealtime.FeedEntity.newBuilder(); 
    entity.setId("0"); 

    GtfsRealtime.Alert.Builder alert = GtfsRealtime.Alert.newBuilder(); 
    alert.setCause(GtfsRealtime.Alert.Cause.UNKNOWN_CAUSE); 
    alert.setEffect(GtfsRealtime.Alert.Effect.STOP_MOVED); 

    GtfsRealtime.TimeRange.Builder activePeriod = 
    alert.addActivePeriodBuilder(); 
    activePeriod.setStart(System.currentTimeMillis()); 
    activePeriod.setEnd(System.currentTimeMillis() + 172800000); 
    GtfsRealtime.TranslatedString.Builder translatedString = 
    GtfsRealtime.TranslatedString.newBuilder(); 
    GtfsRealtime.TranslatedString.Translation.Builder translation = 
    GtfsRealtime.TranslatedString.Translation.newBuilder(); 
    translation.setLanguage("en"); 
    translation.setText("Stop is closed!"); 
    translatedString.addTranslation(translation); 
    alert.setDescriptionText(translatedString); 

    alert.setHeaderText(translatedString); 

    GtfsRealtime.EntitySelector.Builder entitySelector = 
    alert.addInformedEntityBuilder(); 
    entitySelector.setStopId("22126"); 

    entity.setAlert(alert); 
    feedMessageBuilder.addEntity(entity); 
    feedMessage = feedMessageBuilder.build(); 
    return feedMessage; 
    } 

    public void run(Graph graph){ 
    AlertsUpdateHandler updateHandler = new AlertsUpdateHandler(); 
    updateHandler.setEarlyStart(1); 
    updateHandler.setFeedId("1"); 
    updateHandler.setAlertPatchService(new AlertPatchServiceImpl(graph)); 
    updateHandler.setFuzzyTripMatcher(new 
    GtfsRealtimeFuzzyTripMatcher(graph.index)); 
    updateHandler.update(feedMessage); 

    } 
} 

ASCII-Darstellung eines meiner Benachrichtigung

header { 
    gtfs_realtime_version: "1.0" 
    incrementality: FULL_DATASET 
    timestamp: 1493520112381 
} 
    entity { 
    id: "0" 
    alert { 
     active_period { 
     start: 1493520112415 
     end: 1493692912415 
     } 
    informed_entity { 
     stop_id: "22126" 
    } 
    cause: UNKNOWN_CAUSE 
    effect: STOP_MOVED 
    header_text { 
     translation { 
     text: "Stop is closed!" 
     language: "en" 
     } 
    } 
    description_text { 
     translation { 
     text: "Stop is closed!" 
     language: "en" 
     } 
    } 
    } 
} 

ich es in OTP laden Dann, nachdem der Graph erstellt wird, in der Klasse OTPMain.java

ServiceAlertStop serviceAlertStop = new ServiceAlertStop(); 
serviceAlertStop.config(); 
serviceAlertStop.run(graphService.getRouter().graph); 

Danach erhalte ich keinen Fehler, aber wenn ich plane trip stop (22126) existiere auch in neue Route ((Ich brauche diese otp nicht diesen Halt verwenden. Ist es möglich, Stopps von r ausschließen Ausflug durch den Code?

Antwort

0

Wenn Sie die OpenTripPlanner-API für die Planung Ihrer Reise verwenden, können Sie mit dem Parameter 'bannedStops' und 'bannedStopsHard' plan API call festlegen, dass der Router einen Stopp ignoriert.

Verwandte Themen