首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以通过OpenTripPlanner中的代码将停靠点排除在路由之外?

是否可以通过OpenTripPlanner中的代码将停靠点排除在路由之外?
EN

Stack Overflow用户
提问于 2017-05-01 02:11:24
回答 1查看 145关注 0票数 0

我尝试从通过代码的路由中排除停靠点。I创建gtfs实时警报

代码语言:javascript
复制
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表示形式

代码语言:javascript
复制
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"
      }
    }
  }
}

然后,在图形构建完成后,我将其加载到OTPMain.java类中

代码语言:javascript
复制
ServiceAlertStop serviceAlertStop = new ServiceAlertStop(); 
serviceAlertStop.config(); 
serviceAlertStop.run(graphService.getRouter().graph);

之后我没有收到错误,但是当我开始计划行程时,这个停靠点(22126)也存在于新的路线中((我需要otp不要使用这个停靠点。是否可以通过代码将停靠点排除在路由之外?

EN

回答 1

Stack Overflow用户

发布于 2017-05-01 07:22:52

如果您使用OpenTripPlanner应用编程接口进行行程计划,则可以在plan API call中设置'bannedStops‘和'bannedStopsHard’参数,这将强制路由器忽略停止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43709676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档