Skip to content

Commit 834b61c

Browse files
committed
run the profile with core 0.8
1 parent bdb6728 commit 834b61c

File tree

5 files changed

+126
-63
lines changed

5 files changed

+126
-63
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ From : https://github.com/door2door-io/osrm-express-server-demo
55
## Setup OSRM containers
66

77

8-
`docker build -t osmium-tool -f Dockerfile.osmium-tool .`
9-
`docker pull osrm/osrm-backend:v5.16.4`
8+
```
9+
docker build -t osmium-tool -f Dockerfile.osmium-tool .
10+
docker pull osrm/osrm-backend:v5.16.4
11+
```
1012

1113

1214
## Data preprocessing

src/app.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,11 @@ const bodyParser = require("body-parser");
44
const helmet = require("helmet");
55
const logfmt = require("logfmt");
66
const cors = require("cors");
7-
87
const health = require("./routes/health");
98
const route = require("./routes/route");
109
const table = require("./routes/table");
1110
const ignore = require("./routes/ignore");
12-
13-
1411
const osrmBindings = require("./lib/osrm");
15-
1612
function configureMiddlewares(app) {
1713
app.use(helmet());
1814
app.use(bodyParser.json());

src/routes/ignore.js

Lines changed: 112 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,58 +6,43 @@ const Promise = require('bluebird');
66
const exec = require('executive');
77

88
const router = express.Router();
9-
9+
//Only admin can req this endpoint
1010
router.get("/", (req, res) => {
11-
// https://www.openstreetmap.org/way/448220597#map=19/-8.11742/-79.01687&layers=D
12-
// https://www.openstreetmap.org/way/90564392#map=17/-8.10327/-79.01803&layers=D
13-
var way = {
14-
id: 90564392,
15-
nodes: [4452550921,
16-
4452550922,
17-
1098601537,
18-
1051000245,
19-
5483345195,
20-
1098620120,
21-
1088227476,
22-
1098585235,
23-
1098641105,
24-
1098641400,
25-
1088227388,
26-
1098647854,
27-
1098635414,
28-
1098584127,
29-
1098639238,
30-
1098633083,
31-
1098622426,
32-
5478475745,
33-
5476546741,
34-
2573525834
35-
]
36-
};
37-
ignoreSegment(way, './data', function(error, res) {
11+
const ways = getWays(req);
12+
ignoreSegment(ways, './data', function(error, resp) {
3813
if (error) return res.json({
3914
error: 'error processing the data'
4015
});
41-
return res.json(way);
16+
return res.json({
17+
resp,
18+
ways
19+
});
4220
});
4321
});
4422

4523

46-
function createSpeedProfile(speedProfileFile, way) {
24+
function createSpeedProfile(speedProfileFile, ways) {
4725
return new Promise((resolve, reject) => {
4826
const file = fs.createWriteStream(speedProfileFile);
4927
file
5028
.on('open', () => {
5129
// Compute traffic profile.
5230
// https://github.com/Project-OSRM/osrm-backend/wiki/Traffic
53-
for (let i = 0; i < way.nodes.length - 2; i++) {
54-
if (i !== 0) {
31+
for (var k = 0; k < ways.length; k++) {
32+
let way = ways[k]
33+
if (k !== 0) {
5534
file.write('\n');
5635
}
57-
const node = way.nodes[i];
58-
const nextNode = way.nodes[i + 1];
59-
file.write(`${node},${nextNode},0\n`);
60-
file.write(`${nextNode},${node},0`);
36+
for (let i = 0; i < way.nodes.length - 2; i++) {
37+
const node = way.nodes[i];
38+
const nextNode = way.nodes[i + 1];
39+
file.write(`${node},${nextNode},0\n`);
40+
if (i + 3 === way.nodes.length) {
41+
file.write(`${nextNode},${node},0`);
42+
} else {
43+
file.write(`${nextNode},${node},0\n`);
44+
}
45+
}
6146
}
6247
file.end();
6348
})
@@ -66,15 +51,15 @@ function createSpeedProfile(speedProfileFile, way) {
6651
});
6752
}
6853

69-
function ignoreSegment(way, osrmFolder, cb) {
70-
const identifier = way.id;
71-
const speedProfileFile = `data/speed-${identifier}.csv`;
54+
function ignoreSegment(ways, osrmFolder, cb) {
55+
const identifier = ways.id;
56+
const speedProfileFile = `data/speed.csv`;
7257
const rootPath = path.resolve(__dirname, '../../');
7358
// The dockerVolMount depends on whether we're running this from another docker
7459
const dockerVolMount = rootPath;
7560
// Paths for the files depending from where this is being run.
7661
const pathSpeedProf = speedProfileFile;
77-
createSpeedProfile(speedProfileFile, way)
62+
createSpeedProfile(speedProfileFile, ways)
7863
.then(function() {
7964
const command = [
8065
'docker',
@@ -85,7 +70,9 @@ function ignoreSegment(way, osrmFolder, cb) {
8570
`${dockerVolMount}/data:/data`,
8671
'osrm/osrm-backend:v5.16.4',
8772
'osrm-contract',
88-
'--segment-speed-file', '/' + pathSpeedProf,
73+
'--segment-speed-file',
74+
'/data/speed.csv',
75+
'--core 0.8',
8976
`/data/tr.osrm`
9077
];
9178
console.log(command.join(' '));
@@ -101,4 +88,88 @@ function ignoreSegment(way, osrmFolder, cb) {
10188
});
10289
}
10390

91+
92+
function getWays(req) {
93+
// https://www.openstreetmap.org/way/448220597#map=19/-8.11742/-79.01687&layers=D
94+
// https://www.openstreetmap.org/way/90564392#map=17/-8.10327/-79.01803&layers=D
95+
var way1 = {
96+
id: 90564392,
97+
nodes: [4452550921,
98+
4452550922,
99+
1098601537,
100+
1051000245,
101+
5483345195,
102+
1098620120,
103+
1088227476,
104+
1098585235,
105+
1098641105,
106+
1098641400,
107+
1088227388,
108+
1098647854,
109+
1098635414,
110+
1098584127,
111+
1098639238,
112+
1098633083,
113+
1098622426,
114+
5478475745,
115+
5476546741,
116+
2573525834
117+
]
118+
};
119+
120+
var way2 = {
121+
id: 448220597,
122+
nodes: [
123+
4452550922,
124+
4452550920,
125+
1051000208,
126+
1026647093,
127+
316265136,
128+
4706097947,
129+
316265135,
130+
316265134,
131+
316265133,
132+
316265132,
133+
5086618919,
134+
1026647572,
135+
316265131,
136+
316265129,
137+
1026647527,
138+
316265126,
139+
316265124,
140+
1098627620,
141+
316265122,
142+
1088227255,
143+
1098594792,
144+
1098634071,
145+
1026647227,
146+
1026646809,
147+
316265120,
148+
1088227326,
149+
1098633802,
150+
316265119,
151+
316265118,
152+
1015347808,
153+
1015292423,
154+
1098595328,
155+
316488151,
156+
316265117,
157+
1098617316,
158+
316265116,
159+
1098612124,
160+
1098632182,
161+
2604839551,
162+
1098589459,
163+
320114996,
164+
1098613378,
165+
1098594789,
166+
3670684735,
167+
1088227350,
168+
3670684731
169+
]
170+
};
171+
172+
return [way1, way2];
173+
}
174+
104175
module.exports = router;

src/routes/route.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,14 @@ router.get("/", (req, res) => {
1010
});
1111
}
1212
const osrm = req.app.get("osrm");
13-
console.log(req.query);
1413
const coordinates = [req.query.coordinates.split(";")[0].split(",").map(Number), req.query.coordinates.split(";")[1].split(",").map(Number)];
1514
const options = {
1615
coordinates: coordinates,
17-
// alternatives: req.query.alternatives || false,
1816
alternatives: true,
19-
// Return route steps for each route leg
20-
// steps: req.query.steps || false,
2117
steps: true,
22-
// Return annotations for each route leg
23-
// annotations: req.query.annotations || false,
2418
annotations: true,
25-
// Returned route geometry format. Can also be geojson
2619
geometries: req.query.geometries || "polyline",
27-
// Add overview geometry either full, simplified according to
28-
// highest zoom level it could be display on, or not at all
2920
overview: req.query.overview || "false",
30-
// Forces the route to keep going straight at waypoints and don't do
31-
// a uturn even if it would be faster. Default value depends on the profile
3221
continue_straight: req.query.continue_straight || false
3322
};
3423

@@ -39,7 +28,6 @@ router.get("/", (req, res) => {
3928
error: err.message
4029
});
4130
}
42-
console.log(result);
4331
return res.json(result);
4432
});
4533
} catch (err) {

src/routes/table.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ const router = express.Router();
55

66
router.post("/", (req, res) => {
77
if (!req.body.coordinates) {
8-
return res.status(422).json({ error: "Missing coordinates" });
8+
return res.status(422).json({
9+
error: "Missing coordinates"
10+
});
911
}
1012

1113
const osrm = req.app.get("osrm");
@@ -23,14 +25,18 @@ router.post("/", (req, res) => {
2325
try {
2426
osrm.table(options, (err, result) => {
2527
if (err) {
26-
return res.status(422).json({ error: err.message });
28+
return res.status(422).json({
29+
error: err.message
30+
});
2731
}
2832
return res.json(result);
2933
});
3034
} catch (err) {
3135
logfmt.error(new Error(err.message));
32-
return res.status(500).json({ error: err.message });
36+
return res.status(500).json({
37+
error: err.message
38+
});
3339
}
3440
});
3541

36-
module.exports = router;
42+
module.exports = router;

0 commit comments

Comments
 (0)