![](/img/trans.png)
[英]OpenTripPlanner: How to run standalone instance on a port different from default 8080?
[英]Is it possible to exclude stops from routing through the code in OpenTripPlanner?
我嘗試從代碼的路由中排除停止。 我創建了gtfs實時警報
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表示形式
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中將其加載到otp中
ServiceAlertStop serviceAlertStop = new ServiceAlertStop();
serviceAlertStop.config();
serviceAlertStop.run(graphService.getRouter().graph);
之后,我沒有收到錯誤,但是當我開始計划行程時,此停靠點(22126)也存在於新路線中((我需要otp不要使用此停靠點。是否可以從代碼中排除停靠點?
如果您使用OpenTripPlanner API進行行程計划,則可以在計划API調用中設置“ bannedStops”和“ bannedStopsHard”參數,這些參數將強制路由器忽略停車。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.