Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upstream merge 2023-09-01 #182

Merged
merged 178 commits into from
Sep 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
178 commits
Select commit Hold shift + click to select a range
9265dd7
Add new SkipEdgeStrategy based on stop count
vesameskanen Jun 28, 2023
013225a
Update docs
vesameskanen Jun 28, 2023
93ebd8d
Fix dependency violation by using callback function
vesameskanen Jun 29, 2023
6303437
Add some javadoc
vesameskanen Jun 29, 2023
fd63183
Merge remote-tracking branch 'otp/dev-2.x' into max-nearby-stops
vesameskanen Jul 2, 2023
24eab70
Merge remote-tracking branch 'otp/dev-2.x' into max-nearby-stops
vesameskanen Jul 3, 2023
6468d75
Collect access/egress routing parameters to a JSON object
vesameskanen Jul 5, 2023
d3561a4
Update src/main/java/org/opentripplanner/graph_builder/module/NearbyS…
vesameskanen Jul 5, 2023
ea3c7f3
Keep version of renamed config params
vesameskanen Jul 5, 2023
1cfadca
Merge remote-tracking branch 'origin/max-nearby-stops' into max-nearb…
vesameskanen Jul 5, 2023
ed6b68f
Use correct type for callback
vesameskanen Jul 5, 2023
04f9616
Add test for max count strategy
leonardehrenfried Jul 5, 2023
a4b504c
Merge remote-tracking branch 'leonard/max-stop-test' into max-nearby-…
vesameskanen Jul 5, 2023
ee09503
Add more complete example of accessEgress configuration
vesameskanen Jul 6, 2023
47dee24
Do not document access/egress params in migration guide
vesameskanen Jul 19, 2023
b274a42
Merge remote-tracking branch 'otp/dev-2.x' into max-nearby-stops
vesameskanen Jul 19, 2023
5da67da
Fix test which got broken by recent edge constructor changes
vesameskanen Jul 20, 2023
925aaa3
Moved RoutingModes.md from archive to doc templates, added RoutingMod…
Arilith Jul 28, 2023
11746a9
Streetmode implements documented enum
Arilith Jul 28, 2023
28eeeb9
Ran prettier to fix build errors.
Arilith Jul 28, 2023
fda94e8
Improve routing mode documentation
leonardehrenfried Aug 8, 2023
49da184
Merge pull request #3 from leonardehrenfried/routing-modes
Arilith Aug 8, 2023
b1a61f2
Map coercing parse value exception
vpaturet Aug 15, 2023
f6468f1
Refactor SIRI-ET PubSub updater
vpaturet Aug 16, 2023
b95343d
refactor: Rename doubleFunctionScalar to linearFunctionScalar in Tran…
t2gran Jul 27, 2023
e1b4233
feature: Add penalty for access/egress street-mode to Transmodel API
t2gran Jul 27, 2023
aec5724
Merge remote-tracking branch 'otp/dev-2.x' into max-nearby-stops
vesameskanen Aug 16, 2023
52c1880
New class for access/egress preferences. Default max stop count is no…
vesameskanen Aug 17, 2023
f9f5b2b
Update route request docs
vesameskanen Aug 17, 2023
08447ed
Remove pathway information from leg
leonardehrenfried Aug 13, 2023
7809f74
Rename streetName to name
leonardehrenfried Aug 16, 2023
17f8594
Fix formatting
leonardehrenfried Aug 17, 2023
46fd26b
Merge remote-tracking branch 'otp/dev-2.x' into max-nearby-stops
vesameskanen Aug 17, 2023
c77c343
fix: Add support for decimal numbers in the constant part of a linear…
t2gran Aug 17, 2023
5e2cf72
Remove default implementations
leonardehrenfried Aug 17, 2023
3ec88ba
Merge pull request #5292 from entur/map_coercing_parse_value_exception
vpaturet Aug 17, 2023
5079b6b
Map mismatched input exception
vpaturet Aug 16, 2023
d80ffec
Merge pull request #5304 from entur/fix_linear_function
t2gran Aug 17, 2023
c8651ce
feature: Work on dominance functions
May 15, 2023
6bad1df
Include c2 value in Path
Jul 24, 2023
845fa29
Meeting code changes
Jul 24, 2023
da412ff
RideFactory changes
Jul 24, 2023
da247bc
Storage structure for pass-through points used in a search.
May 24, 2023
c8edcbf
Create a PassThroughPoints instance from the RaptorTransitPassThrough…
Jun 20, 2023
4af27d9
Rename via to passThrough
Jun 28, 2023
7872bab
Create separate routing strategy class for pass-through searches.
Jun 29, 2023
204d8cb
Filter out invalid journeys in DestinationArrivalPaths
Jun 29, 2023
34eaf22
Re-enable heuristics in code
Jul 20, 2023
6585be8
Ensure that ForwardPathMapper does not break when handling Destinatio…
Jul 21, 2023
cf475d0
Solve problems with Path constructor
Jul 21, 2023
b42b994
feature: Inject pass-through as a strategy in MultiCriteriaRoutingStr…
t2gran Jul 22, 2023
a7d8ec3
refactor: Encapsulate PassThroughPoints business logic and extend the…
t2gran Jul 22, 2023
d69c790
feature: Update c2 when boarding a ride at a pass-through stop
t2gran Jul 22, 2023
693c1a6
Create raptor module tests for pass-through functionality
Jul 24, 2023
5cd531d
Rename parameters in PathParetoSetComparators to "includeC1" and "inc…
Jul 24, 2023
f9e4957
Rename parameters in PathConfig to "includeC1Cost"
Jul 24, 2023
c15020d
Rename methods to correct name in J01_PassThroughTest.
Jul 26, 2023
a0ea15f
fix: bug in RaptorPath
Jul 27, 2023
230497f
refactor: Remove irrelevant TODO comments
Jul 27, 2023
22603ab
doc: Add javadoc
Jul 27, 2023
84b9af5
test: Create tests for StopArrivalFactoryC1 & StopArrivalFactoryC2
Jul 27, 2023
2bc1dd2
test: ArrivalParetoSetComparatorFactory.factory comparator with C2 do…
Jul 28, 2023
b4c1705
refactor: Move ModuleTestDebugLogging to support package
t2gran Jul 28, 2023
2daf1bd
test: Enable Raptor module-test debug from CMD line
t2gran Jul 28, 2023
1bdf9f0
todo: Add todos in raptor TripSchedule
t2gran Jul 28, 2023
d22b24c
- Unit tests for PatternRideC1 & PatternRideC2
Jul 28, 2023
3a6ef06
Work on PathParetoSetComparators
Aug 1, 2023
2ba3b50
doc: Cleanup the doc for PatternRide classes/interfaces
t2gran Aug 16, 2023
8ea25d5
todo: Simplify code if ok performance vice.
t2gran Aug 16, 2023
6ddff5e
Apply suggestions from code review
t2gran Aug 16, 2023
f358128
Apply suggestions from code review
t2gran Aug 16, 2023
3a81d0b
Create test for ForwardRaptorTransitCalculator.rejectC2AtDestination
Aug 16, 2023
31e98dd
Remove assertAll
Aug 16, 2023
2f863f7
Refactor test for ForwardRaptorTransitCalculator.exceedsTimeLimit
Aug 16, 2023
d0d7110
Improve test coverage.
Aug 17, 2023
81d5bfc
test: Document and make TestRaptorPath safe
t2gran Aug 16, 2023
17eb434
refactor: Rename PassThroughPoints to PassThroughPointsService
t2gran Aug 16, 2023
2bafb11
refactor: Remove unused interface
t2gran Aug 16, 2023
ccfd202
refactor: PassThroughPoints request, pass in DTO not a service
t2gran Aug 17, 2023
b602bad
refactor: PassThroughPointsService out of api package
t2gran Aug 17, 2023
082e6d2
apply-review changes
t2gran Aug 17, 2023
b68d4ae
Javadocs update
Aug 17, 2023
1db7e45
Update API wording [ci skip]
leonardehrenfried Aug 18, 2023
5ea91e7
Merge pull request #5249 from opentripplanner/pass-through_raptor-cha…
Bartosz-Kruba Aug 18, 2023
460ad9b
Remove Winkki street note updater
leonardehrenfried Aug 17, 2023
323d4a2
Return valid response when stop id is missing in Transmodel query
vpaturet Aug 18, 2023
d6c6cba
Handle missing parent station when collecting SIRI alerts
vpaturet Aug 18, 2023
4cb497e
Fix walk board cost comparison and add escalatorReluctance to hash
optionsome Aug 18, 2023
226cca2
review: Fix spelling and use duration format in examples
t2gran Aug 17, 2023
ed13189
fix(deps): update dependency ch.poole:openinghoursparser to v0.27.1
renovate[bot] Aug 18, 2023
cd6d785
refactor: Make REST API able to parse searchWindow as a duration
t2gran Aug 18, 2023
dd9525e
Add test
optionsome Aug 18, 2023
e531285
Improve tests
optionsome Aug 18, 2023
6ae9394
Update src/test/java/org/opentripplanner/generate/doc/RoutingModeDocT…
Arilith Aug 19, 2023
c23a388
Update src/test/java/org/opentripplanner/generate/doc/RoutingModeDocT…
Arilith Aug 19, 2023
4b4d8f5
Update src/main/java/org/opentripplanner/transit/model/basic/TransitM…
Arilith Aug 19, 2023
156d92a
fix(deps): update dependency com.graphql-java:graphql-java-extended-s…
renovate[bot] Aug 21, 2023
c8f8c33
Update Javadoc
leonardehrenfried Aug 21, 2023
4879b9e
Merge pull request #5312 from opentripplanner/renovate/ch.poole-openi…
leonardehrenfried Aug 21, 2023
43036ec
Remove unused test method
optionsome Aug 21, 2023
78c1c47
Ran tests to generate documentation.
Arilith Aug 21, 2023
db3dad5
Split and clean tests
optionsome Aug 21, 2023
50f3faa
Fix concurrent modification exception in vehicle rental service
vpaturet Aug 21, 2023
5c4b15f
Merge pull request #5310 from HSLdevcom/fix-cost-equals
optionsome Aug 21, 2023
d968ba8
Add changelog entry for #5310 [ci skip]
Aug 21, 2023
8c38db6
Merge pull request #5313 from opentripplanner/renovate/com.graphql-ja…
leonardehrenfried Aug 21, 2023
a367df0
Merge pull request #5314 from entur/fix_concurrent_modification_in_ve…
vpaturet Aug 21, 2023
b391945
Merge pull request #5271 from R-OV-NL/feat/mode-documentation-from-code
leonardehrenfried Aug 21, 2023
c7d7bcd
Rename FeedScopedId.parseId to FeedScopedId.parse
leonardehrenfried Aug 21, 2023
0549b04
Rename parseListOfIds to parseList
leonardehrenfried Aug 22, 2023
957783d
Revert method name
leonardehrenfried Aug 22, 2023
676ec55
Merge pull request #5296 from entur/map_mismatched_input_exception
vpaturet Aug 22, 2023
10d5e2c
Apply suggestions from code review
vpaturet Aug 22, 2023
0fe3198
Rename StreetNoteSource to StreetNoteModel
leonardehrenfried Aug 22, 2023
56bd810
Rename 'name' to 'directionText' and document
leonardehrenfried Aug 22, 2023
e372a54
Flatten structure of 'Configuration' and 'Topic overviews'
leonardehrenfried Aug 22, 2023
d15209a
Update documentation about Google Cloud instance types
leonardehrenfried Aug 22, 2023
2ea0137
refactor: Add notprivacysafe.graphql logger to interactive launcher
t2gran May 19, 2023
14445d1
revert: Rename LinearFunction back to DoubleFunction in TransmodelAPI
t2gran Aug 22, 2023
998c71c
chore(deps): update dependency org.mockito:mockito-core to v5.5.0
renovate[bot] Aug 22, 2023
a24a6af
Merge pull request #5214 from HSLdevcom/max-nearby-stops
vesameskanen Aug 23, 2023
38549d3
Add changelog entry for #5214 [ci skip]
Aug 23, 2023
b4d3966
Merge pull request #5308 from entur/fix_missing_parent_stop_in_siri_a…
vpaturet Aug 23, 2023
2f1b266
Merge pull request #5297 from entur/refactor_siri_et_pubsub_updater
t2gran Aug 23, 2023
1fe1863
Retry on failed PubSub subscription creation
vpaturet Aug 21, 2023
c76d2e7
Accept new kind of nodes in stop_area relation linking
vesameskanen Aug 23, 2023
8de36c4
Update OSM stop area docs
vesameskanen Aug 23, 2023
549fc15
Add test for stop linking in stop areas
vesameskanen Aug 23, 2023
9def5c1
Test correct bus_stop node (not an entrance on same platform)
vesameskanen Aug 23, 2023
7586766
Update DepartureRow documentation
leonardehrenfried Aug 23, 2023
4e5bb50
Use positive OSM identifiers in stopareas.pbf test file
vesameskanen Aug 24, 2023
2cbbd6e
Use very suitable existing method to check stop area linking nodes
vesameskanen Aug 24, 2023
307b204
Merge pull request #5303 from leonardehrenfried/remove-pathway-id
leonardehrenfried Aug 24, 2023
1142a54
Add changelog entry for #5303 [ci skip]
Aug 24, 2023
79d1cbc
Merge pull request #5316 from leonardehrenfried/rename-feed-id-parsing
leonardehrenfried Aug 24, 2023
a68c23c
Update StopArea docs again
vesameskanen Aug 25, 2023
e52da54
Refactor relation member type code
vesameskanen Aug 25, 2023
1f71fa5
Remove global state from test
leonardehrenfried Aug 25, 2023
ea26554
Make test deterministic
leonardehrenfried Aug 25, 2023
19523fb
Make visibilityVertices a private field
leonardehrenfried Aug 25, 2023
40f83a8
Document in-station navigation
leonardehrenfried Aug 25, 2023
9ec1087
Add 'common data errors'
leonardehrenfried Aug 25, 2023
2609224
Use consistent test naming and remove unnecessary annotation
vesameskanen Aug 28, 2023
6b9aca9
Merge pull request #5305 from leonardehrenfried/remove-winkki
leonardehrenfried Aug 29, 2023
2cf3f9e
Add changelog entry for #5305 [ci skip]
Aug 29, 2023
64299b3
Document how OTP handles isolated OSM nodes
vesameskanen Aug 29, 2023
79035c4
Merge pull request #5319 from HSLdevcom/extend-stoparea-linking
vesameskanen Aug 29, 2023
7f811fd
Add changelog entry for #5319 [ci skip]
Aug 29, 2023
2c1bc12
Bump serialization version id for #5319
Aug 29, 2023
a53618b
Merge pull request #5315 from entur/retry_on_failed_pubsub_subscripti…
vpaturet Aug 29, 2023
a5a978b
Fix datetime parsing exception
vpaturet Aug 29, 2023
5ad83e3
Merge branch 'dev-2.x' into otp2_egress_access_penalty_transmodel_api
t2gran Aug 29, 2023
89e4256
Merge pull request #5321 from leonardehrenfried/transfer-docs
leonardehrenfried Aug 29, 2023
def434b
Add changelog entry for #5321 [ci skip]
Aug 29, 2023
8773268
Merge remote-tracking branch 'upstream/dev-2.x' into topics
leonardehrenfried Aug 29, 2023
f6899ae
Add missing word in documentation [ci skip]
leonardehrenfried Aug 29, 2023
614bb79
Update transferSlack docs [ci skip]
leonardehrenfried Aug 29, 2023
36edab0
Update dependency com.hubspot.maven.plugins:prettier-maven-plugin to …
renovate[bot] Aug 29, 2023
1d762a6
Map GraphQL UnknowOperationException as bad request
vpaturet Aug 30, 2023
f26866e
Parse NeTEx Resource frame without organisation
vpaturet Aug 30, 2023
809caba
Merge pull request #5336 from entur/parse_netex_resource_frame_withou…
vpaturet Aug 30, 2023
39470f8
Remove unused variable netty.version [ci skip]
leonardehrenfried Aug 30, 2023
ff1ee90
Update google.dagger.version to v2.48
renovate[bot] Aug 30, 2023
1d9cffb
Update example in schema [ci skip]
leonardehrenfried Aug 31, 2023
cb878a4
Merge pull request #5338 from opentripplanner/renovate/google.dagger.…
leonardehrenfried Aug 31, 2023
16e7232
Merge pull request #5268 from entur/otp2_egress_access_penalty_transm…
t2gran Aug 31, 2023
347315f
Add changelog entry for #5268 [ci skip]
Aug 31, 2023
456ecfb
Merge pull request #5307 from entur/fix_query_with_null_stop_id
leonardehrenfried Aug 31, 2023
d27e56c
Update mkdocs.yml
leonardehrenfried Aug 31, 2023
388a94e
Merge pull request #5327 from entur/fix_datetime_parsing_exception
leonardehrenfried Aug 31, 2023
09a16e2
Merge pull request #5335 from entur/map_graphql_unknown_operation_error
leonardehrenfried Aug 31, 2023
ea7b80b
Merge pull request #5317 from leonardehrenfried/topics
leonardehrenfried Aug 31, 2023
77d374a
Update documenation [ci skip]
leonardehrenfried Sep 1, 2023
d74fa82
Update link [ci skip]
leonardehrenfried Sep 1, 2023
2b555ae
Update deployments
leonardehrenfried Sep 1, 2023
818faa6
Merge remote-tracking branch 'upstream/dev-2.x' into upstream-merge-2…
leonardehrenfried Sep 1, 2023
c5f626d
Update Houston test assertion
leonardehrenfried Sep 1, 2023
22dacd7
Update SEPTA assertion
leonardehrenfried Sep 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions doc-templates/BuildConfiguration.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,25 +108,6 @@ general better than trying to be exact. The period and date format follow the IS
}
```


<h2 id="transferring-within-stations">Transferring within stations</h2>

Subway systems tend to exist in their own layer of the city separate from the surface, though there
are exceptions where tracks lie right below the street and transfers happen via the surface. In
systems where the subway is quite deep and transfers happen via tunnels, the time required for an
in-station transfer is often less than that for a surface transfer.

One way to resolve this problem is by ensuring that the GTFS feed codes each platform as a separate
stop, then micro-mapping stations in OSM. When OSM data contains a detailed description of walkways,
stairs, and platforms within a station, GTFS stops can be linked to the nearest platform and
transfers will happen via the OSM ways, which should yield very realistic transfer time
expectations. This works particularly well in above-ground train stations where the layering of
non-intersecting ways is less prevalent. See [BoardingLocations](BoardingLocations.md) for more
details.

An alternative approach is to use GTFS pathways to model entrances and platforms within stations.


## OpenStreetMap(OSM) configuration

It is possible to adjust how OSM data is interpreted by OpenTripPlanner when building the road part
Expand Down
7 changes: 7 additions & 0 deletions doc-templates/RoutingModes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
This page is intended as an exhaustive listing of what OTP's routing engine is capable of and
therefore documents internal names. Since OTP has multiple APIs where each works slightly differently,
please consult your API documentation on how to select the appropriate mode.

<!-- INSERT: street-modes -->

<!-- INSERT: transit-modes -->
13 changes: 7 additions & 6 deletions docs/Apis.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@ Several services are built upon OTP's routing and transit data indexing engines.

The [GTFS GraphQL API](sandbox/GtfsGraphQlApi.md) has been used by the Digitransit and otp-react-redux
projects as a general purpose routing and transit data API in production for many years.
If your input data is mostly GTFS then this is probably your best choice as it uses the same vocabulary.
If your input data is mostly GTFS then this is probably the best choice as it uses the same vocabulary.

The [Transmodel GraphQL API](sandbox/TransmodelApi.md) is the Transmodel API is used at
Entur in production since 2020. If your input data is mostly NeTeX then you might want to investigate
this API as it uses the [Transmodel vocabulary](https://en.wikipedia.org/wiki/Transmodel) to describe transit entities.
Like the GTFS GraphQL API it is also a general purpose API.
The [Transmodel GraphQL API](sandbox/TransmodelApi.md) is used at
Entur in production since 2020. Like the GTFS GraphQL API it is also a general purpose API.
If your input data is mostly NeTeX then you might want to investigate
this API as it uses the [Transmodel vocabulary](https://en.wikipedia.org/wiki/Transmodel) to describe
its entities.

The [Vector tiles API](sandbox/MapboxVectorTilesApi.md) is a special purpose API for displaying
entities on a vector map.

The [Actuator API](sandbox/ActuatorAPI.md) provides endpoints for checking the health status of the
OTP instance. It can be useful when running OTP in a container.
OTP instance and reading live application metrics.

The [Geocoder API](sandbox/GeocoderAPI.md) allows you to geocode street corners and stop names.

Expand Down
7 changes: 5 additions & 2 deletions docs/BoardingLocations.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
It is often the case that the coordinates of stops are relatively far away from where the passengers
are expected to the wait for the vehicle.

A good example of this is [Buckhead subway station](https://www.openstreetmap.org/way/319512573) in
Atlanta.
A good example of this is [Buckhead subway station](https://www.openstreetmap.org/way/319512573) in Atlanta.

![Buckhead station](images/buckhead-station.png)

Expand Down Expand Up @@ -34,6 +33,10 @@ have one of the following tag combinations:
the place where the train stops, not the waiting area.
- The `railway` key is deprecated (even though still widespread) and you should use `public_transport`
instead.
- OTP does not process isolated nodes, but only nodes, which are part of routable ways. Therefore, adding a single ,
isloated boarding location node to OSM has no effect. There is an exception, though: isolated nodes, which are members of
`public_transport=stop_area` relation, will be considered and automatically linked with the street graph.
For more information, check the [stop area](StopAreas.md) documentation.

## Cross-referencing

Expand Down
21 changes: 1 addition & 20 deletions docs/BuildConfiguration.md
Original file line number Diff line number Diff line change
Expand Up @@ -207,25 +207,6 @@ general better than trying to be exact. The period and date format follow the IS
}
```


<h2 id="transferring-within-stations">Transferring within stations</h2>

Subway systems tend to exist in their own layer of the city separate from the surface, though there
are exceptions where tracks lie right below the street and transfers happen via the surface. In
systems where the subway is quite deep and transfers happen via tunnels, the time required for an
in-station transfer is often less than that for a surface transfer.

One way to resolve this problem is by ensuring that the GTFS feed codes each platform as a separate
stop, then micro-mapping stations in OSM. When OSM data contains a detailed description of walkways,
stairs, and platforms within a station, GTFS stops can be linked to the nearest platform and
transfers will happen via the OSM ways, which should yield very realistic transfer time
expectations. This works particularly well in above-ground train stations where the layering of
non-intersecting ways is less prevalent. See [BoardingLocations](BoardingLocations.md) for more
details.

An alternative approach is to use GTFS pathways to model entrances and platforms within stations.


## OpenStreetMap(OSM) configuration

It is possible to adjust how OSM data is interpreted by OpenTripPlanner when building the road part
Expand Down Expand Up @@ -585,7 +566,7 @@ The file is created or overwritten if OTP saves the graph to the file
Minutes necessary to reach stops served by trips on routes of route_type=1 (subway) from the street.

Note! The preferred way to do this is to update the OSM data.
See [Transferring within stations](#transferring-within-stations).
See [In-station navigation](In-Station-Navigation.md).

The ride locations for some modes of transport such as subways can be slow to reach from the street.
When planning a trip, we need to allow additional time to reach these locations to properly inform
Expand Down
7 changes: 7 additions & 0 deletions docs/Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ based on merged pull requests. Search GitHub issues and pull requests for smalle
- Support Fares v2 FareMedium and update spec implementation [#5227](https://github.com/opentripplanner/OpenTripPlanner/pull/5227)
- Replace DoubleFunction with linear function [#5267](https://github.com/opentripplanner/OpenTripPlanner/pull/5267)
- Improve walk step narrative for entering/exiting stations and signposted pathways [#5285](https://github.com/opentripplanner/OpenTripPlanner/pull/5285)
- Fix walk board cost comparison and add escalatorReluctance to hash [#5310](https://github.com/opentripplanner/OpenTripPlanner/pull/5310)
- Stop count limit for access/egress routing and new accessEgress configuration object [#5214](https://github.com/opentripplanner/OpenTripPlanner/pull/5214)
- Remove pathway id from REST API [#5303](https://github.com/opentripplanner/OpenTripPlanner/pull/5303)
- Remove Winkki street note updater [#5305](https://github.com/opentripplanner/OpenTripPlanner/pull/5305)
- Extend stop area relation linking to include bus stop and platform nodes [#5319](https://github.com/opentripplanner/OpenTripPlanner/pull/5319)
- Document in-station navigation [#5321](https://github.com/opentripplanner/OpenTripPlanner/pull/5321)
- Add access/egress penalty transmodel api [#5268](https://github.com/opentripplanner/OpenTripPlanner/pull/5268)
[](AUTOMATIC_CHANGELOG_PLACEHOLDER_DO_NOT_REMOVE)


Expand Down
18 changes: 10 additions & 8 deletions docs/Deployments.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,22 @@ The following are known deployments of OTP in a government- or agency-sponsored
real-time component.
* **Finland Intercity** The Finnish intercity coach
service [Matkahuolto](https://en.wikipedia.org/wiki/Matkahuolto)
has [developed a trip planner in partnership with Kyyti](https://www.kyyti.com/matkahuoltos-new-app-brings-real-travel-chains-within-the-reach-of-citizens-in-addition-to-coach-travel-hsl-tickets-are-also-available/)
.
* **Lower Saxony, Germany** The [VBN](https://www.vbn.de/en/) transportation authority offers an [OTP instance](https://www.vbn.de/en/service/developer-information/opendata-and-openservice) as alternative to the [Hafas](https://www.hacon.de/en/portfolio/information-ticketing/#section_8294) passenger information system.
* **Leipzig, Germany** As of summer 2020 [Leipzig Move](https://leipzig-move.de/) has been using
OpenTripPlanner.
has [developed a trip planner in partnership with Kyyti](https://www.kyyti.com/matkahuoltos-new-app-brings-real-travel-chains-within-the-reach-of-citizens-in-addition-to-coach-travel-hsl-tickets-are-also-available/).
* **Skåne, Sweden**, the JourneyPlanner and mobile app for the regional transit agency [Skånetrafiken](https://www.skanetrafiken.se/)
uses OTP2 with the nordic profile of NeTEx and SIRI for realtime updates.
* [**Northern Colorado**](https://discover.rideno.co/)
* [**Philadelphia and surrounding areas**](https://plan.septa.org)
* **Portland, Oregon** TriMet is the agency that originally started the OpenTripPlanner project.
Their [Regional Trip Planner](http://ride.trimet.org) is based on OTP and provides about 40,000
trip plans on a typical weekday.
* [**New York City**](https://new.mta.info/)
* **New York State** The State Department of
Transportation's [transit trip planner](https://511ny.org/#TransitRegion-1) provides itineraries
for public transit systems throughout the state in a single unified OTP instance.
* **Los Angeles, California** The new [metro.net trip planner](https://www.metro.net/).
* **Atlanta, Georgia** The Metropolitan Atlanta Rapid Transit Authority's (
MARTA) [trip planner](http://itsmarta.com/planatrip.aspx) and the Atlanta region's transit
information hub [atltransit.org](https://atltransit.org/) both use OTP to power their website trip
information hub [https://atlrides.com/](https://atlrides.com/) both use OTP to power their website trip
planners.
* **Boston, Massachusetts**
The [Massachusetts Bay Transportation Authority trip planner](https://www.mbta.com/trip-planner).
Expand Down Expand Up @@ -74,8 +75,9 @@ The following are known deployments of OTP in a government- or agency-sponsored
around the campus using multiple modes of transportation, including the USF Bull Runner campus
shuttle, Share-A-Bull bike share, and pedestrian pathways.
Open-sourced [on Github](https://github.com/CUTR-at-USF/usf-mobullity).
* **Skåne, Sweden**, the JourneyPlanner and mobile app for the regional transit agency [Skånetrafiken](https://www.skanetrafiken.se/)
uses OTP2 with the nordic profile of NeTEx and SIRI for realtime updates.
* **Lower Saxony, Germany** The [VBN](https://www.vbn.de/en/) transportation authority offers an [OTP instance](https://www.vbn.de/en/service/developer-information/opendata-and-openservice) as alternative to the [Hafas](https://www.hacon.de/en/portfolio/information-ticketing/#section_8294) passenger information system.
* **Leipzig, Germany** As of summer 2020 [Leipzig Move](https://leipzig-move.de/) has been using
OpenTripPlanner.

## Independent Production

Expand Down
109 changes: 109 additions & 0 deletions docs/In-Station-Navigation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
OTP offers a variety of ways to produce precise walking instructions
for walking inside a station or between transit stops.

### OSM generated navigation

In the most common case, the walking instructions for reaching a transit stop are generated from the
available OSM data. For this reason it is important that the coordinate of the stop is as close as
possible to where the passenger is expected to wait for the vehicle, not where the vehicle will stop.

It is therefore a good idea to place the stop coordinates at a bus shelter or railway platform
rather than at the middle of the road or the railway tracks.

Of course you also want the data in OSM as precise as possible: data for railway platforms, stairs,
tunnels and other infrastructure help OTP to generate good walking instructions.

#### Example: exiting a railway platform

The train arrives in a [railway station in Stuttgart](https://www.openstreetmap.org/#map=19/48.73761/9.11627)
(green line), the passenger alights and is instructed (grey line) to walk along the platform,
up the stairs and across a [bridge](https://www.openstreetmap.org/way/22908778) to continue to
their final destination.

![Exiting Oesterfeld station](images/exiting-oesterfeld.png)

### Boarding locations

If your stop coordinates are not very well-placed, OTP may direct passengers to the wrong waiting
location or offer incorrect transfer paths and time. As this a common problem and stop coordinates
can be hard to change due to upstream systems, OTP offers a
[way to derive the waiting coordinates](BoardingLocations.md) from OSM data.

Even if your stop coordinates are good, some stations are underground and to get correct walking
instructions it's required to use this feature so that correct instructions for using entrances and
stairs are generated.

#### Example: walking downstairs to underground stations

This shows an underground [subway station in Stuttgart](https://www.openstreetmap.org/way/122569371)
which can only be reached by using entrances at either end walking down to the platform via
a series of stairs and walkways. OTP can only generate these detailed instructions because the platform
has a tag `ref:IFOPT` which identifies it in the German national stop register.

![Boarding Schwabstrasse](images/boarding-schwabstrasse.png)

### GTFS pathways

If your GTFS input file contains [pathways](https://github.com/google/transit/blob/master/gtfs/spec/en/reference.md#pathwaystxt)
this will override the OSM-generated instructions. It is therefore important that the pathways
contain as much precision as possible.

One advantage that pathways offer is the possibility to add information like "follow signs for X"
which OTP adds to the textual turn-by-turn instructions.

#### Example: Transferring at Südkreuz

Here the pathways don't offer a lot of precision: In a [railway hub in Berlin](https://www.openstreetmap.org/#map=18/52.47572/13.36534&layers=T)
there are suboptimal instructions on how to move from one platform to another because the pathways
only contain rudimentary information about how to move inside the station. (The red lines represent
train lines with the grey line showing the walking path.)

![Transferring at Suedkreuz](images/transfer-suedkreuz.png)

### Transfers

The above precedence rules of

- GTFS pathways, if it exists
- then OSM data

also apply when computing transfers from one stop to another.

#### Example: transferring from tram to rail at Oslo Central

Here the passenger arrives in a local tram (blue line) near the [main station in Oslo](https://www.openstreetmap.org/#map=17/59.90964/10.75503). They are
instructed (grey line) to walk into the station right onto the correct platform and leave
on a long-distance train (red line).

![Transferring at Oslo 1](images/transfer-oslo-1.png)

#### Example: transferring between platforms at Oslo Central

This example instructs the passenger to get off a train, then walking down the stairs and via a tunnel
to another platform.

![Transferring at Oslo 2](images/transfer-oslo-2.png)

### Transfer time

The routing engine calculates the time to move from one stop to another by how long it thinks the
walking takes based on the navigation instructions outlined above. So, if OTP thinks that
it takes 5 minutes to walk from platform 1 to platform 8, then the routing algorithm will not suggest
a transit connection that departs less than 5 minutes after arriving at platform 1.

However, how fast the passenger is assumed to walk is controllable through the walk speed parameter.
This can be configured per installation or passed as an API call parameter.

The parameters [`alightSlack`](RouteRequest.md#rd_alightSlack), [`transferSlack`](RouteRequest.md#rd_transferSlack)
and [`boardSlack`](RouteRequest.md#rd_boardSlack) also allow you to define extra buffer time
for transferring.

[GTFS minimum transfer times](https://github.com/google/transit/blob/master/gtfs/spec/en/reference.md#transferstxt)
are also supported but generally not advised. It is preferable to micromap your stations and
improve the stop coordinates rather than force specific transfer times by adding this data.

### Common data errors

- Stop coordinates not where passengers are expected to board
- All stops/platforms in a railway station having the same coordinates
- OSM platforms [not connected to the street network](https://github.com/opentripplanner/OpenTripPlanner/issues/5029)
Loading
Loading