opentripplanner / OpenTripPlanner

An open source multi-modal trip planner
http://www.opentripplanner.org
Other
2.2k stars 1.03k forks source link

Cannot route trips with parent station as destination #1049

Closed Trott closed 10 years ago

Trott commented 11 years ago

I'm getting no results when using the Planner API to plan trips that end at parent stations.

Routes show up normally if I use one of the stations contained within the parent station, or if I use lat/lon instead of a station ID.

I'm using the small set of GTFS data at http://apis.ucsf.edu/static/gtfs/latest.zip.

Example route that gives "404" and "Trip is not possible" is from ucsf_MBW to ucsf_Parnassus. But if I change ucsf_Parnassus to ucsf_LPPI (which is one of the stations that is part of ucsf_Parnassus), then I get itineraries.

Failed API path:

/opentripplanner-api-webapp/ws/plan/first?fromPlace=ucsf_MBW&toPlace=ucsf_Parnassus&mode=TRANSIT,WALK&min=QUICK&maxWalkDistance=840&walkSpeed=1.341&time=10:58am&date=4/17/2013&arriveBy=false&itinID=1&wheelchair=false&preferredRoutes=&unpreferredRoutes=&bannedRoutes=

Successful API path:

/opentripplanner-api-webapp/ws/plan/first?fromPlace=ucsf_MBW&toPlace=ucsf_LPPI&mode=TRANSIT,WALK&min=QUICK&maxWalkDistance=840&walkSpeed=1.341&time=10:58am&date=4/17/2013&arriveBy=false&itinID=1&wheelchair=false&preferredRoutes=&unpreferredRoutes=&bannedRoutes=

catalina.out gives a stack trace:

2013-04-17 11:16:27,378 INFO [PlanGenerator.java:113] : Path not found: ucsf_MBW : ucsf_Parnassus org.opentripplanner.routing.error.PathNotFoundException at org.opentripplanner.api.ws.PlanGenerator.generate(PlanGenerator.java:114) at org.opentripplanner.api.ws.PlanGenerator.generateFirstTrip(PlanGenerator.java:1008) at org.opentripplanner.api.ws.Planner$2.call(Planner.java:106) at org.opentripplanner.api.ws.Planner$2.call(Planner.java:104) at org.opentripplanner.api.ws.Planner.wrapGenerate(Planner.java:77) at org.opentripplanner.api.ws.Planner.getFirstTrip(Planner.java:104) at sun.reflect.GeneratedMethodAccessor102.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.opentripplanner.web.authentication.WSSEAuthenticationFilter.doFilter(WSSEAuthenticationFilter.java:91) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.opentripplanner.jsonp.JsonpCallbackFilter.doFilter(JsonpCallbackFilter.java:71) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662)

JordenVerwer commented 10 years ago

This should be fixed now, could you try again with the latest commit?

Trott commented 10 years ago

Excited to test it. Is there a way to get a stable release from the repo? The most recent appears to be opentripplanner-0.9.1 but that's over a year old...

abyrd commented 10 years ago

@Trott, just use the code from the tip of one of these branches: mmri-rt, master, stable in increasing order of stability.

Trott commented 10 years ago

Using stable branch, I'm still seeing the bug, unfortunately.

Latest commit on master, I'm having trouble building. I'll have to get a Java/Maven person to help me. Which I'll do today. More soon.

Trott commented 10 years ago

I don't want to turn this ticket into a user support thread, but I had been using dist_template stuff for my deployment. That no longer exists, and the code commit that removed it says that it's no longer needed for standalone mode. At https://github.com/opentripplanner/OpenTripPlanner/wiki it says 'see "stand-alone mode" below' but there is nothing about stand-alone mode below that. Will keep poking, looking at docs, and trying things, but any pointers welcome. And sorry if I'm being obtuse.

Trott commented 10 years ago

OK, got the mvn package working, all is good there, now to figure out (or remember, if it hasn't changed much?) how to import my own GTFS data...

Trott commented 10 years ago

On master, I build Graph.obj using the data at http://apis.ucsf.edu/static/gtfs/latest.zip, fire up otp-rest-servlet war via tomcat, and it crashes with a null pointer exception while trying to load Graph.obj. Am I Doing It Wrong?

Trott commented 10 years ago

Switched to building graph modeled on steps at https://github.com/opentripplanner/OpenTripPlanner/wiki/TwoMinutes rather than https://github.com/opentripplanner/OpenTripPlanner/wiki/GraphBuilder and now at least I'm not getting a null pointer exception. My old URLs aren't working, but I suspect the API URLs may have changed...

abyrd commented 10 years ago

We're in the midst of updating the documentation for upcoming releases. I no longer see any reference to standalone mode on the wiki landing page. The TwoMinutes page you link to uses the "standalone" OTP commands. If you are getting a null pointer exception, we won't be able to solve that without knowing where the NPE is occurring, so please post a stack trace to the mailing list. Also, please use the mailing list for support. I will leave this ticket open until we can verify that current code does allow you to search between stations.

Trott commented 10 years ago

Thanks for your patience and tolerance while I got my act together and sorry for all the comment noise on my part. This issue does indeed seem to be fixed.

abyrd commented 10 years ago

Glad to hear it's working for you.

JordenVerwer commented 10 years ago

Excellent news! I'm glad to hear it works for others as well now.