-
Notifications
You must be signed in to change notification settings - Fork 10
/
map.js
80 lines (74 loc) · 2.02 KB
/
map.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'use strict';
var turf = require('@turf/turf');
module.exports = function(tileLayers, tile, writeData, done) {
var osmLayer = tileLayers.osm.osm;
var tigerLayer = tileLayers.tiger.tiger2015;
var preserveType = {
motorway: true,
motorway_link: true,
primary: true,
primary_link: true,
secondary: true,
secondary_link: true,
tertiary: true,
tertiary_link: true,
trunk: true,
trunk_link: true,
residential: true,
unclassified: true,
living_street: true,
road: true
};
var osmlint = 'missingnamehighwayus';
var osmFC = [];
var tigerFC = [];
for (var k = 0; k < osmLayer.features.length; k++) {
var osmVal = osmLayer.features[k];
if (
osmVal.properties.highway &&
osmVal.geometry.type === 'LineString' &&
preserveType[osmVal.properties.highway] &&
!osmVal.properties.name &&
!osmVal.properties.ref
) {
osmFC.push(osmVal);
}
}
for (var h = 0; h < tigerLayer.features.length; h++) {
var tigerVal = tigerLayer.features[h];
if (
tigerVal.properties.FULLNAME &&
tigerVal.geometry.type === 'LineString'
) {
tigerFC.push(tigerVal);
}
}
var result = [];
if (osmFC.length > 0) {
for (var i = 0; i < osmFC.length; i++) {
var osmWay = osmFC[i];
var buffer = turf.buffer(osmWay, 0.004, {
units: 'miles'
});
for (var j = 0; j < tigerFC.length; j++) {
var tigerWay = tigerFC[j];
var tigerPoints = turf.explode(tigerWay);
var nodes;
nodes = turf.within(tigerPoints, turf.featureCollection([buffer]));
if (
nodes.features.length >= tigerPoints.features.length / 2 &&
tigerWay.properties.FULLNAME
) {
osmWay.properties._osmlint = osmlint;
osmWay.properties.name = tigerWay.properties.FULLNAME;
result.push(osmWay);
}
}
}
}
if (result.length > 0) {
var fc = turf.featureCollection(result);
writeData(JSON.stringify(fc) + '\n');
}
done(null, null);
};