osm2geojson-lite 0.8.16 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Makefile +1 -1
- package/lib/index.js +51 -59
- package/osm2geojson-lite +10 -0
- package/package.json +8 -2
package/Makefile
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
osm2geojson-lite.js: lib/index.js package.json
|
|
2
|
-
browserify -s osm2geojson lib/index.js | uglifyjs -c -m -o dist/osm2geojson-lite.js
|
|
2
|
+
npx browserify -s osm2geojson lib/index.js | npx uglifyjs -c -m -o dist/osm2geojson-lite.js
|
package/lib/index.js
CHANGED
|
@@ -50,8 +50,9 @@ module.exports = (osm, opts) => {
|
|
|
50
50
|
|
|
51
51
|
case 'relation':
|
|
52
52
|
let relation = new Relation(elem.id, refElements);
|
|
53
|
-
|
|
54
|
-
relation.setBounds([parseFloat(minlon), parseFloat(minlat), parseFloat(maxlon), parseFloat(maxlat)]);
|
|
53
|
+
if (elem.bounds) {
|
|
54
|
+
relation.setBounds([parseFloat(elem.bounds.minlon), parseFloat(elem.bounds.minlat), parseFloat(elem.bounds.maxlon), parseFloat(elem.bounds.maxlat)]);
|
|
55
|
+
}
|
|
55
56
|
if (elem.tags) relation.addTags(elem.tags);
|
|
56
57
|
relation.addProps(purgeProps(elem, ['id', 'type', 'tags', 'bounds', 'members']));
|
|
57
58
|
if (elem.members)
|
|
@@ -69,35 +70,31 @@ module.exports = (osm, opts) => {
|
|
|
69
70
|
const xmlParser = new XmlParser({progressive: true});
|
|
70
71
|
|
|
71
72
|
xmlParser.on('</osm.node>', node => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
nd.addTag(ind.k, ind.v);
|
|
82
|
-
}
|
|
73
|
+
let nd = new Node(node.id, refElements);
|
|
74
|
+
for (let [k, v] of Object.entries(node))
|
|
75
|
+
if (!k.startsWith('$') && ['id', 'lon', 'lat'].indexOf(k) < 0)
|
|
76
|
+
nd.addProp(k, v);
|
|
77
|
+
nd.setLatLng(node);
|
|
78
|
+
if (node.$innerNodes)
|
|
79
|
+
for (let ind of node.$innerNodes)
|
|
80
|
+
if(ind.$tag === 'tag')
|
|
81
|
+
nd.addTag(ind.k, ind.v);
|
|
83
82
|
});
|
|
84
83
|
|
|
85
84
|
xmlParser.on('</osm.way>', node => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (ind
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
way.addTag(ind.k, ind.v);
|
|
100
|
-
}
|
|
85
|
+
let way = new Way(node.id, refElements);
|
|
86
|
+
for (let [k, v] of Object.entries(node))
|
|
87
|
+
if (!k.startsWith('$') && ['id'].indexOf(k) < 0)
|
|
88
|
+
way.addProp(k, v);
|
|
89
|
+
if (node.$innerNodes) {
|
|
90
|
+
for (let ind of node.$innerNodes)
|
|
91
|
+
if (ind.$tag === 'nd') {
|
|
92
|
+
if (ind.lon && ind.lat)
|
|
93
|
+
way.addLatLng(ind);
|
|
94
|
+
else if (ind.ref)
|
|
95
|
+
way.addNodeRef(ind.ref);
|
|
96
|
+
} else if (ind.$tag === 'tag')
|
|
97
|
+
way.addTag(ind.k, ind.v);
|
|
101
98
|
}
|
|
102
99
|
});
|
|
103
100
|
|
|
@@ -106,42 +103,37 @@ module.exports = (osm, opts) => {
|
|
|
106
103
|
});
|
|
107
104
|
|
|
108
105
|
xmlParser.on('</osm.relation.member>', (node, parent) => {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
geometry.push(ind);
|
|
130
|
-
else
|
|
131
|
-
nodes.push(ind.ref);
|
|
132
|
-
}
|
|
133
|
-
if (geometry.length > 0)
|
|
134
|
-
member.geometry = geometry;
|
|
135
|
-
else if (nodes.length > 0)
|
|
136
|
-
member.nodes = nodes;
|
|
106
|
+
let relation = refElements.get(`relation/${parent.id}`);
|
|
107
|
+
let member = {
|
|
108
|
+
type: node.type,
|
|
109
|
+
role: node.role? node.role : '',
|
|
110
|
+
ref: node.ref
|
|
111
|
+
};
|
|
112
|
+
if (node.lat && node.lon) {
|
|
113
|
+
member.lat = node.lat, member.lon = node.lon, member.tags = {};
|
|
114
|
+
for (let [k, v] of Object.entries(node))
|
|
115
|
+
if (!k.startsWith('$') && ['type', 'lat', 'lon'].indexOf(k) < 0)
|
|
116
|
+
member[k] = v;
|
|
117
|
+
}
|
|
118
|
+
if (node.$innerNodes) {
|
|
119
|
+
let geometry = [];
|
|
120
|
+
let nodes = [];
|
|
121
|
+
for (let ind of node.$innerNodes) {
|
|
122
|
+
if (ind.lat && ind.lon)
|
|
123
|
+
geometry.push(ind);
|
|
124
|
+
else
|
|
125
|
+
nodes.push(ind.ref);
|
|
137
126
|
}
|
|
138
|
-
|
|
127
|
+
if (geometry.length > 0)
|
|
128
|
+
member.geometry = geometry;
|
|
129
|
+
else if (nodes.length > 0)
|
|
130
|
+
member.nodes = nodes;
|
|
139
131
|
}
|
|
132
|
+
relation.addMember(member);
|
|
140
133
|
});
|
|
141
134
|
|
|
142
135
|
xmlParser.on('</osm.relation.bounds>', (node, parent) => {
|
|
143
|
-
|
|
144
|
-
refElements.get(`relation/${parent.id}`).setBounds([parseFloat(minlon), parseFloat(minlat), parseFloat(maxlon), parseFloat(maxlat)]);
|
|
136
|
+
refElements.get(`relation/${parent.id}`).setBounds([parseFloat(node.minlon), parseFloat(node.minlat), parseFloat(node.maxlon), parseFloat(node.maxlat)]);
|
|
145
137
|
});
|
|
146
138
|
|
|
147
139
|
xmlParser.on('</osm.relation.tag>', (node, parent) => {
|
package/osm2geojson-lite
ADDED
package/package.json
CHANGED
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
"/"
|
|
20
20
|
],
|
|
21
21
|
"author": "tibetty",
|
|
22
|
+
"bin": {
|
|
23
|
+
"osm2geojson-lite": "osm2geojson-lite"
|
|
24
|
+
},
|
|
22
25
|
"bugs": {
|
|
23
26
|
"url": "https://github.com/tibetty/osm2geojson-lite/issues"
|
|
24
27
|
},
|
|
@@ -56,10 +59,13 @@
|
|
|
56
59
|
"@types/geojson": "^1.0.6"
|
|
57
60
|
},
|
|
58
61
|
"types": "lib/index.d.ts",
|
|
59
|
-
"version": "0.
|
|
62
|
+
"version": "0.9.0",
|
|
60
63
|
"directories": {
|
|
61
64
|
"lib": "lib",
|
|
62
65
|
"test": "test"
|
|
63
66
|
},
|
|
64
|
-
"devDependencies": {
|
|
67
|
+
"devDependencies": {
|
|
68
|
+
"browserify": "^17.0.0",
|
|
69
|
+
"uglify-js": "^3.14.5"
|
|
70
|
+
}
|
|
65
71
|
}
|