OpenTripPlanner Tutorial

1,382 views
Skip to first unread message

Marcus Young

unread,
Nov 16, 2017, 5:01:37 PM11/16/17
to OpenTripPlanner Users
Hi,

This may be of interest to some of you. I have written a beginner to intermediate level tutorial for OpenTripPlanner. It consists of three parts:

1. You'll start by building an OTP network graph for the street network and public transport services in Greater Manchester, and then launch your OTP instance and request routes using the web interface.

2. Next, you'll query the OTP Isochrone API to obtain travel-time polygons, visualising the accessibility of Manchester Airport by public transport, and assessing the impact of a new airport link service.

3. And finally, you'll automate querying the OTP route planner API, looking up route information for each Lower Layer Super Output Area (LSOA) in Greater Manchester.

The tutorial requires R, and makes use of a set of functions that I have written in R to query the OTP API (that may - with more work - eventually become an R package). The tutorial typically takes around 2-3 hours to complete.

The tutorial and all supporting materials are available at the following GitHub Repository:

https://github.com/marcusyoung/otp-tutorial



Marcus Young
Transportation Research Group
University of Southampton


Wilfred Waters

unread,
Dec 24, 2017, 8:08:10 AM12/24/17
to OpenTripPlanner Users
Dear Marcus, 

This is really useful. I will share it with my team. Please, however, could you provide a tutorial using a shapefile as the graph source? That's what we're tasked with doing here. 

Wil

Andrew Byrd

unread,
Dec 27, 2017, 10:44:32 AM12/27/17
to Wilfred Waters, OpenTripPlanner Users
Hi Wil,

> On 24 Dec 2017, at 14:08, Wilfred Waters <wilfred...@gmail.com> wrote:
> This is really useful. I will share it with my team. Please, however, could you provide a tutorial using a shapefile as the graph source? That's what we're tasked with doing here.

When you say “shapefile as the graph source” do you mean for transit or the street network? OTP has no support for loading transit lines from shapefiles. The functionality to load a street network from shapefiles has not been maintained for years and at this point I believe you’d need to modify source code to activate it.

Andrew

Wilfred Waters

unread,
Dec 28, 2017, 2:57:41 PM12/28/17
to Andrew Byrd, wilfre...@esrinea.com, Hasnaa...@esrinea.com, OpenTripPlanner Users, Russell Ashby
Hi,

I mean the street network. We have a national street network in a file geodatabase, and a network dataset built from that using ArcGIS and would like to use OTP to build a network graph from this.

The documentation for OTP indicated it's possible to build a graph from a shapefile so it's concerning to hear this remark from you. Is it possible to share clear documented steps about how to build a graph from a shapefile? 

Based on what you said, though, it almost seems that the documentation should be updated to remove the impression graphs can be built from them.

An alternative is to convert our shapefile to the same format as OpenStreetMap data and read it in as OpenStreetMap data. What do you think of this?

Kind regards,

Wil


--
You received this message because you are subscribed to a topic in the Google Groups "OpenTripPlanner Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/opentripplanner-users/MVL6xEL6Q1Q/unsubscribe.
To unsubscribe from this group and all its topics, send an email to opentripplanner-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Seth Budick

unread,
Jan 9, 2018, 2:57:13 PM1/9/18
to OpenTripPlanner Users
Hi Marcus,

Thank you so much for putting this together!  I hope that you'll forgive an extremely naive question, but as this is my first time, I'm having a bit of trouble getting the web server running.  When I follow your instructions and execute the commands:

java -Xmx2G -jar otp.jar --router current --graphs graphs --server OR
java -Xmx2G -jar otp.jar --router current --graphs graphs --server --port 8801 --securePort 8802

the server fails to start, generating the output below.  Do you have any suggestions on how to address this?

Thank you!
Seth

C:\Users\SBudick\Desktop\otp_exercise\otp>java -Xmx2G -jar otp.jar --router curr
ent --graphs graphs --server
14:50:44.827 INFO (OTPServer.java:38) Wiring up and configuring server.
14:50:44.827 INFO (GraphScanner.java:81) Attempting to automatically register ro
uterIds [current]
14:50:44.827 INFO (GraphScanner.java:82) Graph files will be sought in paths rel
ative to graphs
14:50:44.827 INFO (GraphService.java:189) Registering new router 'current'
14:50:44.827 INFO (InputStreamGraphSource.java:207) Loading graph...
14:50:44.843 ERROR (InputStreamGraphSource.java:212) Exception while loading gra
ph 'current'.
java.io.EOFException: null
        at java.base/java.io.ObjectInputStream$PeekInputStream.readFully(Unknown
 Source) ~[na:na]
        at java.base/java.io.ObjectInputStream$BlockDataInputStream.readShort(Un
known Source) ~[na:na]
        at java.base/java.io.ObjectInputStream.readStreamHeader(Unknown Source)
~[na:na]
        at java.base/java.io.ObjectInputStream.<init>(Unknown Source) ~[na:na]
        at org.opentripplanner.routing.impl.InputStreamGraphSource.loadGraph(Inp
utStreamGraphSource.java:209) [otp.jar:1.1]
        at org.opentripplanner.routing.impl.InputStreamGraphSource.reload(InputS
treamGraphSource.java:133) [otp.jar:1.1]
        at org.opentripplanner.routing.services.GraphService.registerGraph(Graph
Service.java:196) [otp.jar:1.1]
        at org.opentripplanner.routing.impl.GraphScanner.startup(GraphScanner.ja
va:86) [otp.jar:1.1]
        at org.opentripplanner.standalone.OTPMain.run(OTPMain.java:135) [otp.jar
:1.1]
        at org.opentripplanner.standalone.OTPMain.main(OTPMain.java:86) [otp.jar
:1.1]
14:50:44.843 WARN (InputStreamGraphSource.java:144) Unable to load data for rout
er 'current'.
14:50:44.843 WARN (GraphService.java:198) Can't register router ID 'current', no
 graph.
14:50:44.843 INFO (GrizzlyServer.java:50) Starting OTP Grizzly server on ports 8
080 (HTTP) and 8081 (HTTPS) of interface 0.0.0.0
14:50:44.843 INFO (GrizzlyServer.java:52) OTP server base path is /var/otp
14:50:45.968 ERROR (OTPMain.java:169) An uncaught ProcessingException occurred i
nside OTP. Restarting server.
javax.ws.rs.ProcessingException: Could not process parameter type class org.open
tripplanner.api.parameter.CRSParameter.
        at org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtra
ctorFactory.process(MultivaluedParameterExtractorFactory.java:127) ~[otp.jar:1.1
]
        at org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtra
ctorFactory.get(MultivaluedParameterExtractorFactory.java:100) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractValueFactoryProvi
der.get(AbstractValueFactoryProvider.java:106) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.QueryParamValueFactoryPro
vider.createValueFactory(QueryParamValueFactoryProvider.java:116) ~[otp.jar:1.1]

        at org.glassfish.jersey.server.internal.inject.QueryParamValueFactoryPro
vider.createValueFactory(QueryParamValueFactoryProvider.java:59) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractValueFactoryProvi
der.getValueFactory(AbstractValueFactoryProvider.java:134) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getValu
eFactory(ParameterValueHelper.java:145) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.createV
alueProviders(ParameterValueHelper.java:124) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.Invocable.getValueProviders(Invocab
le.java:321) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.checkValueP
roviders(ResourceMethodValidator.java:165) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.checkMethod
(ResourceMethodValidator.java:106) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.visitJaxrsR
esourceMethod(ResourceMethodValidator.java:102) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.visitResour
ceMethod(ResourceMethodValidator.java:92) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethod.accept(ResourceMetho
d.java:854) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:161) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:167) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:167) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:167) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.access$000(
ComponentModelValidator.java:90) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator$1.run(Compo
nentModelValidator.java:151) ~[otp.jar:1.1]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) ~[otp.ja
r:1.1]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) ~[otp.ja
r:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validate(Co
mponentModelValidator.java:146) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.initialize(Application
Handler.java:549) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.access$500(Application
Handler.java:183) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHand
ler.java:349) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHand
ler.java:346) ~[otp.jar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.processWithException(Errors.java
:255) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHand
ler.java:346) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHand
ler.java:310) ~[otp.jar:1.1]
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.<init>(
GrizzlyHttpContainer.java:331) ~[otp.jar:1.1]
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainerProvider
.createContainer(GrizzlyHttpContainerProvider.java:60) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ContainerFactory.createContainer(Containe
rFactory.java:81) ~[otp.jar:1.1]
        at org.opentripplanner.standalone.GrizzlyServer.run(GrizzlyServer.java:9
4) ~[otp.jar:1.1]
        at org.opentripplanner.standalone.OTPMain.run(OTPMain.java:166) [otp.jar
:1.1]
        at org.opentripplanner.standalone.OTPMain.main(OTPMain.java:86) [otp.jar
:1.1]
Caused by: javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
        at org.opentripplanner.api.parameter.CRSParameter.<init>(CRSParameter.ja
va:36) ~[otp.jar:1.1]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce(Unknown Source) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
nstance(Unknown Source) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) ~
[na:na]
        at org.glassfish.jersey.server.internal.inject.ParamConverters$StringCon
structor$1._fromString(ParamConverters.java:132) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.ParamConverters$AbstractS
tringReader.fromString(ParamConverters.java:85) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or.convert(AbstractParamValueExtractor.java:139) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or.access$000(AbstractParamValueExtractor.java:56) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or$1.get(AbstractParamValueExtractor.java:85) ~[otp.jar:1.1]
        at org.glassfish.jersey.internal.util.collection.Values$LazyUnsafeValueI
mpl.get(Values.java:425) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or.<init>(AbstractParamValueExtractor.java:91) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.SingleValueExtractor.<ini
t>(SingleValueExtractor.java:67) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtra
ctorFactory.process(MultivaluedParameterExtractorFactory.java:123) ~[otp.jar:1.1
]
        ... 40 common frames omitted
14:50:45.984 INFO (GrizzlyServer.java:50) Starting OTP Grizzly server on ports 8
080 (HTTP) and 8081 (HTTPS) of interface 0.0.0.0
14:50:45.984 INFO (GrizzlyServer.java:52) OTP server base path is /var/otp
14:50:46.165 ERROR (OTPMain.java:169) An uncaught ProcessingException occurred i
nside OTP. Restarting server.
javax.ws.rs.ProcessingException: Could not process parameter type class org.open
tripplanner.api.parameter.CRSParameter.
        at org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtra
ctorFactory.process(MultivaluedParameterExtractorFactory.java:127) ~[otp.jar:1.1
]
        at org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtra
ctorFactory.get(MultivaluedParameterExtractorFactory.java:100) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractValueFactoryProvi
der.get(AbstractValueFactoryProvider.java:106) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.QueryParamValueFactoryPro
vider.createValueFactory(QueryParamValueFactoryProvider.java:116) ~[otp.jar:1.1]

        at org.glassfish.jersey.server.internal.inject.QueryParamValueFactoryPro
vider.createValueFactory(QueryParamValueFactoryProvider.java:59) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractValueFactoryProvi
der.getValueFactory(AbstractValueFactoryProvider.java:134) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getValu
eFactory(ParameterValueHelper.java:145) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.createV
alueProviders(ParameterValueHelper.java:124) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.Invocable.getValueProviders(Invocab
le.java:321) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.checkValueP
roviders(ResourceMethodValidator.java:165) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.checkMethod
(ResourceMethodValidator.java:106) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.visitJaxrsR
esourceMethod(ResourceMethodValidator.java:102) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethodValidator.visitResour
ceMethod(ResourceMethodValidator.java:92) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ResourceMethod.accept(ResourceMetho
d.java:854) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:161) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:167) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:167) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validateWit
hErrors(ComponentModelValidator.java:167) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.access$000(
ComponentModelValidator.java:90) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator$1.run(Compo
nentModelValidator.java:151) ~[otp.jar:1.1]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) ~[otp.ja
r:1.1]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) ~[otp.ja
r:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.server.model.ComponentModelValidator.validate(Co
mponentModelValidator.java:146) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.initialize(Application
Handler.java:549) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.access$500(Application
Handler.java:183) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHand
ler.java:349) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHand
ler.java:346) ~[otp.jar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297) ~[otp.j
ar:1.1]
        at org.glassfish.jersey.internal.Errors.processWithException(Errors.java
:255) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHand
ler.java:346) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHand
ler.java:310) ~[otp.jar:1.1]
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.<init>(
GrizzlyHttpContainer.java:331) ~[otp.jar:1.1]
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainerProvider
.createContainer(GrizzlyHttpContainerProvider.java:60) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.ContainerFactory.createContainer(Containe
rFactory.java:81) ~[otp.jar:1.1]
        at org.opentripplanner.standalone.GrizzlyServer.run(GrizzlyServer.java:9
4) ~[otp.jar:1.1]
        at org.opentripplanner.standalone.OTPMain.run(OTPMain.java:166) [otp.jar
:1.1]
        at org.opentripplanner.standalone.OTPMain.main(OTPMain.java:86) [otp.jar
:1.1]
Caused by: javax.ws.rs.WebApplicationException: HTTP 400 Bad Request
        at org.opentripplanner.api.parameter.CRSParameter.<init>(CRSParameter.ja
va:36) ~[otp.jar:1.1]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInsta
nce(Unknown Source) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newI
nstance(Unknown Source) ~[na:na]
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) ~
[na:na]
        at org.glassfish.jersey.server.internal.inject.ParamConverters$StringCon
structor$1._fromString(ParamConverters.java:132) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.ParamConverters$AbstractS
tringReader.fromString(ParamConverters.java:85) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or.convert(AbstractParamValueExtractor.java:139) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or.access$000(AbstractParamValueExtractor.java:56) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or$1.get(AbstractParamValueExtractor.java:85) ~[otp.jar:1.1]
        at org.glassfish.jersey.internal.util.collection.Values$LazyUnsafeValueI
mpl.get(Values.java:425) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.AbstractParamValueExtract
or.<init>(AbstractParamValueExtractor.java:91) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.SingleValueExtractor.<ini
t>(SingleValueExtractor.java:67) ~[otp.jar:1.1]
        at org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtra
ctorFactory.process(MultivaluedParameterExtractorFactory.java:123) ~[otp.jar:1.1
]
        ... 40 common frames omitted
14:50:46.209 INFO (GrizzlyServer.java:50) Starting OTP Grizzly server on ports 8
080 (HTTP) and 8081 (HTTPS) of interface 0.0.0.0
14:50:46.209 INFO (GrizzlyServer.java:52) OTP server base path is /var/otp

Marcus Young

unread,
Jan 9, 2018, 3:16:02 PM1/9/18
to OpenTripPlanner Users

Hi Seth,

That appears to suggest that there is no graph in the router called `current'. Have you done the previous task of generating the graph and is this located in the router (i.e. folder) called current?

Marcus

Seth Budick

unread,
Jan 9, 2018, 3:32:40 PM1/9/18
to OpenTripPlanner Users
Hi Marcus,

Thanks so much for your quick reply!  

Yes, I did execute that first, and the Graph.obj file was created in the current folder (though it appears to be empty at 0 KB) so perhaps I've done something wrong.  This is the output I get when I run java -Xmx2G -jar otp.jar --build graphs/current.

Seth

C:\Users\SBudick\Desktop\otp_exercise\otp>java -Xmx2G -jar otp.jar --build graph
s/current
15:29:50.358 INFO (OTPServer.java:38) Wiring up and configuring server.
15:29:50.374 INFO (GraphBuilder.java:183) Wiring up and configuring graph builde
r task.
15:29:50.405 INFO (GraphBuilder.java:190) Searching for graph builder input file
s in graphs\current
15:29:50.420 INFO (OTPMain.java:210) File 'graphs\current\build-config.json' is
not present. Using default configuration.
15:29:50.593 INFO (OTPMain.java:207) Found and loaded JSON configuration file 'g
raphs\current\router-config.json'
15:29:50.593 INFO (GraphBuilder.java:201) Summarizing GraphBuilderParameters
DEFAULT_SUBWAY_ACCESS_TIME = 2.0
htmlAnnotations = false
maxHtmlAnnotationsPerFile = 1000
transit = true
useTransfersTxt = false
parentStopLinking = false
stationTransfers = false
subwayAccessTime = 2.0
streets = true
embedRouterConfig = true
areaVisibility = false
matchBusRoutesToStreets = false
fetchElevationUS = false
elevationBucket = null
fareServiceFactory = DefaultFareServiceFactory
customNamer = null
staticBikeRental = false
staticParkAndRide = true
staticBikeParkAndRide = false
maxInterlineDistance = 200

15:29:50.593 INFO (GraphBuilder.java:209) Found OSM file graphs\current\greater-
manchester-osm.pbf
15:29:50.593 INFO (GraphBuilder.java:205) Found GTFS file graphs\current\rail-gt
fs.zip
15:29:50.609 INFO (GraphBuilder.java:205) Found GTFS file graphs\current\tfgm-gt
fs.zip
15:29:50.640 INFO (OpenStreetMapModule.java:164) Gathering OSM from provider: An
yFileBasedOpenStreetMapProviderImpl(graphs\current\greater-manchester-osm.pbf)
15:29:53.511 WARN (OSMLevel.java:136) Could not determine floor number for layer
 .5, assumed to be ground-level.
15:29:53.512 WARN (OSMDatabase.java:578) Could not infer floor number for layer
called '.5' at 205134744. Vertical movement will still be possible, but elevator
 cost might be incorrect. Consider an OSM level map.
15:29:53.512 WARN (OSMLevel.java:136) Could not determine floor number for layer
 .5, assumed to be ground-level.
15:29:53.513 WARN (OSMDatabase.java:578) Could not infer floor number for layer
called '.5' at 205134749. Vertical movement will still be possible, but elevator
 cost might be incorrect. Consider an OSM level map.
15:29:54.161 WARN (OSMLevel.java:136) Could not determine floor number for layer
 1;2, assumed to be ground-level.
15:29:54.161 WARN (OSMDatabase.java:578) Could not infer floor number for layer
called '1;2' at 448464600. Vertical movement will still be possible, but elevato
r cost might be incorrect. Consider an OSM level map.
15:29:54.161 WARN (OSMLevel.java:136) Could not determine floor number for layer
 0;1, assumed to be ground-level.
15:29:54.161 WARN (OSMDatabase.java:578) Could not infer floor number for layer
called '0;1' at 448464602. Vertical movement will still be possible, but elevato
r cost might be incorrect. Consider an OSM level map.
15:29:54.161 WARN (OSMLevel.java:136) Could not determine floor number for layer
 0;2, assumed to be ground-level.
15:29:54.161 WARN (OSMDatabase.java:578) Could not infer floor number for layer
called '0;2' at 448467758. Vertical movement will still be possible, but elevato
r cost might be incorrect. Consider an OSM level map.
15:29:56.288 ERROR (GeometryUtils.java:43) Unable to create longitude-first WGS8
4 CRS
java.lang.IllegalArgumentException: org.opengis.referencing.datum.DatumFactory i
s not an ImageIO SPI class
        at java.desktop/javax.imageio.spi.ServiceRegistry.checkClassAllowed(Unkn
own Source) ~[na:na]
        at java.desktop/javax.imageio.spi.ServiceRegistry.<init>(Unknown Source)
 ~[na:na]
        at org.geotools.factory.FactoryRegistry.<init>(FactoryRegistry.java:155)
 ~[otp.jar:1.1]
        at org.geotools.factory.FactoryRegistry.<init>(FactoryRegistry.java:146)
 ~[otp.jar:1.1]
        at org.geotools.factory.FactoryCreator.<init>(FactoryCreator.java:82) ~[
otp.jar:1.1]
        at org.geotools.referencing.ReferencingFactoryFinder.getServiceRegistry(
ReferencingFactoryFinder.java:115) ~[otp.jar:1.1]
        at org.geotools.referencing.ReferencingFactoryFinder.getFactories(Refere
ncingFactoryFinder.java:180) ~[otp.jar:1.1]
        at org.geotools.referencing.ReferencingFactoryFinder.getCRSAuthorityFact
ories(ReferencingFactoryFinder.java:455) ~[otp.jar:1.1]
        at org.geotools.referencing.DefaultAuthorityFactory.getBackingFactory(De
faultAuthorityFactory.java:88) ~[otp.jar:1.1]
        at org.geotools.referencing.DefaultAuthorityFactory.<init>(DefaultAuthor
ityFactory.java:69) ~[otp.jar:1.1]
        at org.geotools.referencing.CRS.getAuthorityFactory(CRS.java:257) ~[otp.
jar:1.1]
        at org.opentripplanner.common.geometry.GeometryUtils.<clinit>(GeometryUt
ils.java:41) ~[otp.jar:1.1]
        at org.opentripplanner.graph_builder.module.osm.Ring.toJtsPolygon(Ring.j
ava:91) [otp.jar:1.1]
        at org.opentripplanner.graph_builder.module.osm.Area.toJTSMultiPolygon(A
rea.java:97) [otp.jar:1.1]
        at org.opentripplanner.graph_builder.module.osm.Area.<init>(Area.java:90
) [otp.jar:1.1]
        at org.opentripplanner.graph_builder.module.osm.OSMDatabase.processMulti
polygonRelations(OSMDatabase.java:665) [otp.jar:1.1]
        at org.opentripplanner.graph_builder.module.osm.OSMDatabase.doneThirdPha
seNodes(OSMDatabase.java:306) [otp.jar:1.1]
        at org.opentripplanner.openstreetmap.impl.BinaryFileBasedOpenStreetMapPr
oviderImpl.readOSM(BinaryFileBasedOpenStreetMapProviderImpl.java:56) [otp.jar:1.
1]
        at org.opentripplanner.openstreetmap.impl.AnyFileBasedOpenStreetMapProvi
derImpl.readOSM(AnyFileBasedOpenStreetMapProviderImpl.java:41) [otp.jar:1.1]
        at org.opentripplanner.graph_builder.module.osm.OpenStreetMapModule.buil
dGraph(OpenStreetMapModule.java:165) [otp.jar:1.1]
        at org.opentripplanner.graph_builder.GraphBuilder.run(GraphBuilder.java:
157) [otp.jar:1.1]
        at org.opentripplanner.standalone.OTPMain.run(OTPMain.java:111) [otp.jar
:1.1]
        at org.opentripplanner.standalone.OTPMain.main(OTPMain.java:86) [otp.jar
:1.1]
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.opentripplanner.graph_builder.module.osm.Ring.toJtsPolygon(Ring.j
ava:91)
        at org.opentripplanner.graph_builder.module.osm.Area.toJTSMultiPolygon(A
rea.java:97)
        at org.opentripplanner.graph_builder.module.osm.Area.<init>(Area.java:90
)
        at org.opentripplanner.graph_builder.module.osm.OSMDatabase.processMulti
polygonRelations(OSMDatabase.java:665)
        at org.opentripplanner.graph_builder.module.osm.OSMDatabase.doneThirdPha
seNodes(OSMDatabase.java:306)
        at org.opentripplanner.openstreetmap.impl.BinaryFileBasedOpenStreetMapPr
oviderImpl.readOSM(BinaryFileBasedOpenStreetMapProviderImpl.java:56)
        at org.opentripplanner.openstreetmap.impl.AnyFileBasedOpenStreetMapProvi
derImpl.readOSM(AnyFileBasedOpenStreetMapProviderImpl.java:41)
        at org.opentripplanner.graph_builder.module.osm.OpenStreetMapModule.buil
dGraph(OpenStreetMapModule.java:165)
        at org.opentripplanner.graph_builder.GraphBuilder.run(GraphBuilder.java:
157)
        at org.opentripplanner.standalone.OTPMain.run(OTPMain.java:111)
        at org.opentripplanner.standalone.OTPMain.main(OTPMain.java:86)
Caused by: java.lang.RuntimeException: Could not create longitude-first WGS84 co
ordinate reference system.
        at org.opentripplanner.common.geometry.GeometryUtils.<clinit>(GeometryUt
ils.java:44)
        ... 11 more

Marcus Young

unread,
Jan 9, 2018, 4:49:44 PM1/9/18
to OpenTripPlanner Users
What version of JAVA have you got installed? Needs to be version 8.

Seth Budick

unread,
Jan 9, 2018, 4:59:20 PM1/9/18
to OpenTripPlanner Users
Version 9 (see below)

C:\Users\SBudick>java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

Marcus Young

unread,
Jan 9, 2018, 5:11:22 PM1/9/18
to OpenTripPlanner Users
You need version 8. OTP doesn't support v. 9. Or at least it didn't when I built the jar for this tutorial which has some UK specific tweeks. That may have changed for more recent releases.

Andrew Byrd

unread,
Jan 9, 2018, 7:11:18 PM1/9/18
to Marcus Young, OpenTripPlanner Users
The problem is shown in your output:
15:29:56.288 ERROR (GeometryUtils.java:43) Unable to create longitude-first WGS8
4 CRS
java.lang.IllegalArgumentException: org.opengis.referencing.datum.DatumFactory i
s not an ImageIO SPI class
at java.desktop/javax.imageio.spi.ServiceRegistry.checkClassAllowed(Unkn
own Source) ~[na:na]
at java.desktop/javax.imageio.spi.ServiceRegistry.<init>(Unknown Source)
~[na:na]

I don’t know why this is happening though. It’s not that OTP doesn’t support v9, I just don’t think we knew there was an issue. Unfortunately... Java: "Write Once, Debug Everywhere”.

Andrew

> On Jan 9, 2018, at 23:11, Marcus Young <mar...@graspit.co.uk> wrote:
>
> You need version 8. OTP doesn't support v. 9. Or at least it didn't when I built the jar for this tutorial which has some UK specific tweeks. That may have changed for more recent releases.
>
> --
> You received this message because you are subscribed to the Google Groups "OpenTripPlanner Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to opentripplanner-...@googlegroups.com.

Seth Budick

unread,
Jan 10, 2018, 8:48:43 AM1/10/18
to OpenTripPlanner Users
Thank you both so much, and sorry for assuming that Version 8 meant Version 8 or later!
> To unsubscribe from this group and stop receiving emails from it, send an email to opentripplanner-users+unsub...@googlegroups.com.

Marcus Young

unread,
Jan 10, 2018, 8:57:58 AM1/10/18
to OpenTripPlanner Users
I will update the tutorial to make it clear that it won't work with version 9.

Andrew Byrd

unread,
Jan 10, 2018, 9:46:39 AM1/10/18
to Marcus Young, OpenTripPlanner Users


> On Jan 10, 2018, at 14:57, Marcus Young <mar...@graspit.co.uk> wrote:
>
> I will update the tutorial to make it clear that it won't work with version 9.

Ideally we should instead fix whatever bug keeps OTP from working with Java 9.

Andrew

Réussite

unread,
Jul 13, 2023, 8:49:55 AM7/13/23
to OpenTripPlanner Users
Hello everyone,
currently I am working on a task relating to the configuration of the open trip planner platform under windows 10.

the question I ask is that I need the source code that allows me to make this configuration and what tools should be used to make this configuration.
pending a favorable response, please sir, receive my most distinguished greetings.
Reply all
Reply to author
Forward
0 new messages