2017-04-30 5 views
0

J'essaie d'exclure un arrêt du routage à travers le code. Je crée gtfs en temps réel d'alerteEst-il possible d'exclure les arrêts du routage via le code dans OpenTripPlanner?

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); 

    } 
} 

représentation ASCII d'une ma alerte

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" 
     } 
    } 
    } 
} 

Puis-je charger dans BdP après le graphique est construit, en classe OTPMain.java

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

Après cela, je ne reçois pas d'erreur, mais quand je commence le voyage de planificateur cet arrêt (22126) existe aussi dans la nouvelle route ((J'ai besoin que otp n'utilise pas cet arrêt.) Est-il possible d'exclure les arrêts de r sortie à travers le code?

Répondre

0

Si vous utilisez l'API OpenTripPlanner pour planifier vos déplacements, il existe un paramètre 'bannedStops' et 'bannedStopsHard' que vous pouvez définir dans le plan API call pour forcer le routeur à ignorer un arrêt.