|
19 | 19 | package com.graphhopper.resources;
|
20 | 20 |
|
21 | 21 | import com.conveyal.gtfs.model.Stop;
|
| 22 | +import com.graphhopper.GraphHopper; |
22 | 23 | import com.graphhopper.gtfs.*;
|
| 24 | +import com.graphhopper.http.DurationParam; |
23 | 25 | import com.graphhopper.http.GHLocationParam;
|
24 | 26 | import com.graphhopper.http.OffsetDateTimeParam;
|
25 | 27 | import com.graphhopper.isochrone.algorithm.ContourBuilder;
|
|
35 | 37 | import com.graphhopper.storage.index.LocationIndex;
|
36 | 38 | import com.graphhopper.util.EdgeIteratorState;
|
37 | 39 | import com.graphhopper.util.JsonFeature;
|
| 40 | +import com.graphhopper.util.PMap; |
38 | 41 | import com.graphhopper.util.shapes.BBox;
|
39 | 42 | import org.locationtech.jts.geom.*;
|
40 | 43 | import org.locationtech.jts.triangulate.ConformingDelaunayTriangulator;
|
|
43 | 46 | import org.locationtech.jts.triangulate.quadedge.QuadEdge;
|
44 | 47 | import org.locationtech.jts.triangulate.quadedge.QuadEdgeSubdivision;
|
45 | 48 | import org.locationtech.jts.triangulate.quadedge.Vertex;
|
| 49 | +import org.slf4j.Logger; |
| 50 | +import org.slf4j.LoggerFactory; |
46 | 51 |
|
47 | 52 | import javax.inject.Inject;
|
48 | 53 | import javax.validation.constraints.NotNull;
|
|
55 | 60 | public class PtIsochroneResource {
|
56 | 61 |
|
57 | 62 | private static final double JTS_TOLERANCE = 0.00001;
|
58 |
| - |
| 63 | + private static final Logger logger = LoggerFactory.getLogger(GraphHopper.class); // TODO: Remove. |
59 | 64 | private final GtfsStorage gtfsStorage;
|
60 | 65 | private final EncodingManager encodingManager;
|
61 | 66 | private final BaseGraph baseGraph;
|
@@ -85,21 +90,45 @@ public Response doGet(
|
85 | 90 | @QueryParam("time_limit") @DefaultValue("600") long seconds,
|
86 | 91 | @QueryParam("reverse_flow") @DefaultValue("false") boolean reverseFlow,
|
87 | 92 | @QueryParam("pt.earliest_departure_time") @NotNull OffsetDateTimeParam departureTimeParam,
|
| 93 | + @QueryParam("pt.access_profile") @DefaultValue("foot") String accessProfile, |
| 94 | +// @QueryParam("pt.beta_access_time") @DefaultValue("PT30M") Double betaAccessTime, |
| 95 | + @QueryParam("pt.egress_profile") @DefaultValue("foot") String egressProfile, |
| 96 | +// @QueryParam("pt.beta_egress_time") @DefaultValue("false") Double betaEgressTime, |
| 97 | + @QueryParam("pt.limit_street_time") @DefaultValue("PT30M") DurationParam limitStreetTimeParam, |
88 | 98 | @QueryParam("pt.blocked_route_types") @DefaultValue("0") int blockedRouteTypes,
|
89 | 99 | @QueryParam("result") @DefaultValue("multipolygon") String format) {
|
90 | 100 | Instant initialTime = departureTimeParam.get().toInstant();
|
91 | 101 | GHLocation location = sourceParam.get();
|
92 | 102 |
|
| 103 | + // TODO: Remove |
| 104 | + logger.warn(accessProfile); |
| 105 | + |
| 106 | +// accessProfile = config.getProfiles().stream().filter(p -> p.getName().equals(request.getAccessProfile())).findFirst().get(); |
| 107 | +// accessWeighting = weightingFactory.createWeighting(accessProfile, new PMap(), false); |
| 108 | +// accessSnapFilter = new DefaultSnapFilter(accessWeighting, encodingManager.getBooleanEncodedValue(Subnetwork.key(accessProfile.getName()))); |
| 109 | +// egressProfile = config.getProfiles().stream().filter(p -> p.getName().equals(request.getEgressProfile())).findFirst().get(); |
| 110 | +// egressWeighting = weightingFactory.createWeighting(egressProfile, new PMap(), false); |
| 111 | +// egressSnapFilter = new DefaultSnapFilter(egressWeighting, encodingManager.getBooleanEncodedValue(Subnetwork.key(egressProfile.getName()))); |
| 112 | + |
| 113 | +// PtLocationSnapper.Result result = new PtLocationSnapper(baseGraph, locationIndex, gtfsStorage).snapAll(Arrays.asList(enter, exit), Arrays.asList(accessSnapFilter, egressSnapFilter)); |
| 114 | + |
93 | 115 | double targetZ = seconds * 1000;
|
94 | 116 |
|
95 | 117 | GeometryFactory geometryFactory = new GeometryFactory();
|
96 |
| - BooleanEncodedValue accessEnc = encodingManager.getBooleanEncodedValue(VehicleAccess.key("foot")); |
97 |
| - DecimalEncodedValue speedEnc = encodingManager.getDecimalEncodedValue(VehicleSpeed.key("foot")); |
98 |
| - final Weighting weighting = new FastestWeighting(accessEnc, speedEnc); |
99 |
| - DefaultSnapFilter snapFilter = new DefaultSnapFilter(weighting, encodingManager.getBooleanEncodedValue(Subnetwork.key("foot"))); |
100 | 118 |
|
101 |
| - PtLocationSnapper.Result snapResult = new PtLocationSnapper(baseGraph, locationIndex, gtfsStorage).snapAll(Arrays.asList(location), Arrays.asList(snapFilter)); |
102 |
| - GraphExplorer graphExplorer = new GraphExplorer(snapResult.queryGraph, gtfsStorage.getPtGraph(), weighting, gtfsStorage, RealtimeFeed.empty(), reverseFlow, false, false, 5.0, reverseFlow, blockedRouteTypes); |
| 119 | + BooleanEncodedValue accessProfileEnc = encodingManager.getBooleanEncodedValue(VehicleAccess.key(accessProfile)); |
| 120 | + DecimalEncodedValue accessSpeedEnc = encodingManager.getDecimalEncodedValue(VehicleSpeed.key(accessProfile)); |
| 121 | + final Weighting accessWeighting = new FastestWeighting(accessProfileEnc, accessSpeedEnc); |
| 122 | + DefaultSnapFilter accessSnapFilter = new DefaultSnapFilter(accessWeighting, encodingManager.getBooleanEncodedValue(Subnetwork.key(accessProfile))); |
| 123 | + BooleanEncodedValue egressProfileEnc = encodingManager.getBooleanEncodedValue(VehicleAccess.key(egressProfile)); |
| 124 | + DecimalEncodedValue egressSpeedEnc = encodingManager.getDecimalEncodedValue(VehicleSpeed.key(egressProfile)); |
| 125 | + final Weighting egressWeighting = new FastestWeighting(egressProfileEnc, egressSpeedEnc); |
| 126 | + DefaultSnapFilter egressSnapFilter = new DefaultSnapFilter(egressWeighting, encodingManager.getBooleanEncodedValue(Subnetwork.key(egressProfile))); |
| 127 | + |
| 128 | + PtLocationSnapper.Result snapResult = new PtLocationSnapper(baseGraph, locationIndex, gtfsStorage).snapAll(Arrays.asList(location), Arrays.asList(accessSnapFilter, egressSnapFilter)); |
| 129 | + |
| 130 | + // TODO: Should also incorporate egressWeighting in some way. |
| 131 | + GraphExplorer graphExplorer = new GraphExplorer(snapResult.queryGraph, gtfsStorage.getPtGraph(), accessWeighting, gtfsStorage, RealtimeFeed.empty(), reverseFlow, false, false, 5.0, reverseFlow, blockedRouteTypes); |
103 | 132 | MultiCriteriaLabelSetting router = new MultiCriteriaLabelSetting(graphExplorer, reverseFlow, false, false, 0, Collections.emptyList());
|
104 | 133 |
|
105 | 134 | Map<Coordinate, Double> z1 = new HashMap<>();
|
|
0 commit comments