pelias-openstreetmap 5.13.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/.dockerignore +2 -0
- package/.editorconfig +9 -0
- package/.github/workflows/push.yml +55 -0
- package/.jshintignore +6 -0
- package/.jshintrc +22 -0
- package/Dockerfile +23 -0
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/bin/download +3 -0
- package/bin/start +3 -0
- package/bin/test +7 -0
- package/config/category_map.js +360 -0
- package/config/features.js +52 -0
- package/config/localized_name_keys.js +44 -0
- package/config/popularity_map.js +163 -0
- package/index.js +12 -0
- package/package.json +77 -0
- package/schema/address_karlsruhe.js +25 -0
- package/schema/address_naptan.js +17 -0
- package/schema/address_osm.js +17 -0
- package/schema/address_tiger.js +18 -0
- package/schema/name_osm.js +51 -0
- package/schema.js +27 -0
- package/stream/addendum_mapper.js +71 -0
- package/stream/address_extractor.js +131 -0
- package/stream/category_mapper.js +77 -0
- package/stream/document_constructor.js +76 -0
- package/stream/importPipeline.js +36 -0
- package/stream/multiple_pbfs.js +25 -0
- package/stream/pbf.js +75 -0
- package/stream/popularity_mapper.js +80 -0
- package/stream/stats.js +47 -0
- package/stream/stringify.js +9 -0
- package/stream/tag_mapper.js +168 -0
- package/util/download_data.js +58 -0
- package/util/sendPassthroughStream.js +8 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
default category mapping, openstreetmap features on the left
|
|
4
|
+
correspond to the Pelias taxonomy on the right.
|
|
5
|
+
|
|
6
|
+
you can modify this file to suit your specific use-case, or
|
|
7
|
+
alternatively you can inject your own custom taxonomy mapping
|
|
8
|
+
at runtime.
|
|
9
|
+
|
|
10
|
+
A special key '*' is used to match any tag value for that key.
|
|
11
|
+
eg. 'aerialway:*' would match 'aerialway:foo' and 'aerialway:bar'.
|
|
12
|
+
|
|
13
|
+
Categories are cumulative, so if a document matches on many different
|
|
14
|
+
mappings then it will inherit *all* of those categories.
|
|
15
|
+
|
|
16
|
+
@see: http://wiki.openstreetmap.org/wiki/Map_Features
|
|
17
|
+
@see: https://github.com/pelias/pelias/wiki/Taxonomy-v1
|
|
18
|
+
**/
|
|
19
|
+
|
|
20
|
+
const mapping = {
|
|
21
|
+
|
|
22
|
+
'aerialway': {
|
|
23
|
+
'*': ['transport'],
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
'aeroway': {
|
|
27
|
+
'*': ['transport','transport:air'],
|
|
28
|
+
'aerodrome': ['transport','transport:air','transport:air:aerodrome'],
|
|
29
|
+
'international': ['transport','transport:air','transport:air:airport']
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
'amenity': {
|
|
33
|
+
|
|
34
|
+
'bbq': ['recreation'],
|
|
35
|
+
'dojo': ['recreation'],
|
|
36
|
+
'gym': ['recreation'],
|
|
37
|
+
|
|
38
|
+
'place_of_worship': ['religion'],
|
|
39
|
+
|
|
40
|
+
'arts_centre': ['education','entertainment'],
|
|
41
|
+
'community_centre': ['education','entertainment'],
|
|
42
|
+
'social_centre': ['education','entertainment'],
|
|
43
|
+
'library': ['education','entertainment'],
|
|
44
|
+
'planetarium': ['education','entertainment'],
|
|
45
|
+
'theatre': ['education','entertainment'],
|
|
46
|
+
'college': ['education'],
|
|
47
|
+
'kindergarten': ['education'],
|
|
48
|
+
'school': ['education'],
|
|
49
|
+
'university': ['education'],
|
|
50
|
+
|
|
51
|
+
'bar': ['nightlife'],
|
|
52
|
+
'biergarten': ['nightlife','food'],
|
|
53
|
+
'cinema': ['entertainment','nightlife'],
|
|
54
|
+
'casino': ['nightlife'],
|
|
55
|
+
'gambling': ['nightlife'],
|
|
56
|
+
'nightclub': ['nightlife'],
|
|
57
|
+
'pub': ['nightlife'],
|
|
58
|
+
|
|
59
|
+
'courthouse': ['government'],
|
|
60
|
+
'embassy': ['government'],
|
|
61
|
+
'fire_station': ['government'],
|
|
62
|
+
'police': ['government'],
|
|
63
|
+
'post_office': ['government'],
|
|
64
|
+
'ranger_station': ['government','recreation'],
|
|
65
|
+
'register_office': ['government'],
|
|
66
|
+
'townhall': ['government'],
|
|
67
|
+
|
|
68
|
+
'coworking_space': ['professional'],
|
|
69
|
+
|
|
70
|
+
'atm': ['finance'],
|
|
71
|
+
'bank': ['finance','professional'],
|
|
72
|
+
'bureau_de_change': ['finance','professional'],
|
|
73
|
+
|
|
74
|
+
'clinic': ['health'],
|
|
75
|
+
'dentist': ['health'],
|
|
76
|
+
'doctors': ['health'],
|
|
77
|
+
'hospital': ['health'],
|
|
78
|
+
'nursing_home': ['health'],
|
|
79
|
+
'pharmacy': ['health'],
|
|
80
|
+
'social_facility': ['health'],
|
|
81
|
+
'veterinary': ['professional'],
|
|
82
|
+
|
|
83
|
+
'cafe': ['food','retail'],
|
|
84
|
+
'fast_food': ['food','retail'],
|
|
85
|
+
'food_court': ['food','retail'],
|
|
86
|
+
'ice_cream': ['food','retail'],
|
|
87
|
+
'marketplace': ['food','retail'],
|
|
88
|
+
'restaurant': ['food','retail','nightlife'],
|
|
89
|
+
|
|
90
|
+
'bus_station': ['transport','transport:public','transport:bus'],
|
|
91
|
+
'taxi': ['transport','transport:taxi'],
|
|
92
|
+
|
|
93
|
+
'car_rental': ['transport','professional'],
|
|
94
|
+
'car_wash': ['professional'],
|
|
95
|
+
'charging_station': ['transport','professional'],
|
|
96
|
+
'fuel': ['transport','professional'],
|
|
97
|
+
|
|
98
|
+
'ferry_terminal': ['transport','transport:sea']
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
'building': {
|
|
102
|
+
'hotel': ['accommodation'],
|
|
103
|
+
'commercial': ['professional'],
|
|
104
|
+
'retail': ['retail'],
|
|
105
|
+
|
|
106
|
+
'chapel': ['religion'],
|
|
107
|
+
'church': ['religion'],
|
|
108
|
+
'mosque': ['religion'],
|
|
109
|
+
'temple': ['religion'],
|
|
110
|
+
'synagogue': ['religion'],
|
|
111
|
+
'shrine': ['religion'],
|
|
112
|
+
|
|
113
|
+
'civic': ['government'],
|
|
114
|
+
'hospital': ['health'],
|
|
115
|
+
'school': ['education'],
|
|
116
|
+
'stadium': ['entertainment'],
|
|
117
|
+
'university': ['education'],
|
|
118
|
+
'public': ['government'],
|
|
119
|
+
|
|
120
|
+
'farm': ['industry','industry:agriculture'],
|
|
121
|
+
|
|
122
|
+
'train_station': ['transport','transport:station'],
|
|
123
|
+
'transportation': ['transport','transport:station']
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
// experimental, import cuisines for food-related venues
|
|
127
|
+
'cuisine': {
|
|
128
|
+
'*': ['food'],
|
|
129
|
+
|
|
130
|
+
// menu focus
|
|
131
|
+
'bagel': ['food:bagel'],
|
|
132
|
+
'barbecue': ['food:barbecue'],
|
|
133
|
+
'bougatsa': ['food:bougatsa'],
|
|
134
|
+
'burger': ['food:burger'],
|
|
135
|
+
'burrito': ['food:burrito'],
|
|
136
|
+
'cake': ['food:cake'],
|
|
137
|
+
'casserole': ['food:casserole'],
|
|
138
|
+
'chicken': ['food:chicken'],
|
|
139
|
+
'coffee_shop': ['food:coffee_shop'],
|
|
140
|
+
'crepe': ['food:crepe'],
|
|
141
|
+
'couscous': ['food:couscous'],
|
|
142
|
+
'curry': ['food:curry'],
|
|
143
|
+
'dessert': ['food:dessert'],
|
|
144
|
+
'donut': ['food:donut'],
|
|
145
|
+
'doughnut': ['food:donut'],
|
|
146
|
+
'empanada': ['food:empanada'],
|
|
147
|
+
'fish': ['food:fish'],
|
|
148
|
+
'fish_and_chips': ['food:fish_and_chips'],
|
|
149
|
+
'fried_food': ['food:fried_food'],
|
|
150
|
+
'friture': ['food:friture'],
|
|
151
|
+
'gyro': ['food:gyro'],
|
|
152
|
+
'ice_cream': ['food:ice_cream'],
|
|
153
|
+
'kebab': ['food:kebab'],
|
|
154
|
+
'mediterranean': ['food:mediterranean'],
|
|
155
|
+
'noodle': ['food:noodle'],
|
|
156
|
+
'pancake': ['food:pancake'],
|
|
157
|
+
'pasta': ['food:pasta'],
|
|
158
|
+
'pie': ['food:pie'],
|
|
159
|
+
'pizza': ['food:pizza'],
|
|
160
|
+
'regional': ['food:regional'],
|
|
161
|
+
'sandwich': ['food:sandwich'],
|
|
162
|
+
'sausage': ['food:sausage'],
|
|
163
|
+
'savory_pancakes': ['food:savory_pancakes'],
|
|
164
|
+
'seafood': ['food:seafood'],
|
|
165
|
+
'steak_house': ['food:steak'],
|
|
166
|
+
'sub': ['food:sub'],
|
|
167
|
+
'sushi': ['food:sushi'],
|
|
168
|
+
'tapas': ['food:tapas'],
|
|
169
|
+
'vegan': ['food:vegan'],
|
|
170
|
+
'vegetarian': ['food:vegetarian'],
|
|
171
|
+
'wings': ['food:wings'],
|
|
172
|
+
|
|
173
|
+
// regional/cultural focus
|
|
174
|
+
'african': ['food:cuisine:african'],
|
|
175
|
+
'american': ['food:cuisine:american'],
|
|
176
|
+
'arab': ['food:cuisine:arab'],
|
|
177
|
+
'argentinian': ['food:cuisine:argentinian'],
|
|
178
|
+
'asian': ['food:cuisine:asian'],
|
|
179
|
+
'australian': ['food:cuisine:australian'],
|
|
180
|
+
'baiana': ['food:cuisine:baiana'],
|
|
181
|
+
'balkan': ['food:cuisine:balkan'],
|
|
182
|
+
'basque': ['food:cuisine:basque'],
|
|
183
|
+
'bavarian': ['food:cuisine:bavarian'],
|
|
184
|
+
'belarusian': ['food:cuisine:belarusian'],
|
|
185
|
+
'brazilian': ['food:cuisine:brazilian'],
|
|
186
|
+
'cantonese': ['food:cuisine:cantonese'],
|
|
187
|
+
'capixaba': ['food:cuisine:capixaba'],
|
|
188
|
+
'caribbean': ['food:cuisine:caribbean'],
|
|
189
|
+
'chinese': ['food:cuisine:chinese'],
|
|
190
|
+
'croatian': ['food:cuisine:croatian'],
|
|
191
|
+
'czech': ['food:cuisine:czech'],
|
|
192
|
+
'danish': ['food:cuisine:danish'],
|
|
193
|
+
'french': ['food:cuisine:french'],
|
|
194
|
+
'gaucho': ['food:cuisine:gaucho'],
|
|
195
|
+
'german': ['food:cuisine:german'],
|
|
196
|
+
'greek': ['food:cuisine:greek'],
|
|
197
|
+
'hunan': ['food:cuisine:hunan'],
|
|
198
|
+
'hungarian': ['food:cuisine:hungarian'],
|
|
199
|
+
'indian': ['food:cuisine:indian'],
|
|
200
|
+
'international': ['food:cuisine:international'],
|
|
201
|
+
'iranian': ['food:cuisine:iranian'],
|
|
202
|
+
'italian': ['food:cuisine:italian'],
|
|
203
|
+
'japanese': ['food:cuisine:japanese'],
|
|
204
|
+
'korean': ['food:cuisine:korean'],
|
|
205
|
+
'kyo_ryouri': ['food:cuisine:kyo_ryouri'],
|
|
206
|
+
'latin_american': ['food:cuisine:latin_american'],
|
|
207
|
+
'lebanese': ['food:cuisine:lebanese'],
|
|
208
|
+
'malagasy': ['food:cuisine:malagasy'],
|
|
209
|
+
'mexican': ['food:cuisine:mexican'],
|
|
210
|
+
'mineira': ['food:cuisine:mineira'],
|
|
211
|
+
'okinawa_ryori': ['food:cuisine:okinawa_ryori'],
|
|
212
|
+
'pakistani': ['food:cuisine:pakistani'],
|
|
213
|
+
'peruvian': ['food:cuisine:peruvian'],
|
|
214
|
+
'polish': ['food:cuisine:polish'],
|
|
215
|
+
'portuguese': ['food:cuisine:portuguese'],
|
|
216
|
+
'rhenish': ['food:cuisine:rhenish'],
|
|
217
|
+
'russian': ['food:cuisine:russian'],
|
|
218
|
+
'shandong': ['food:cuisine:shandong'],
|
|
219
|
+
'sichuan': ['food:cuisine:sichuan'],
|
|
220
|
+
'spanish': ['food:cuisine:spanish'],
|
|
221
|
+
'thai': ['food:cuisine:thai'],
|
|
222
|
+
'turkish': ['food:cuisine:turkish'],
|
|
223
|
+
'vietnamese': ['food:cuisine:vietnamese'],
|
|
224
|
+
'westphalian': ['food:cuisine:westphalian']
|
|
225
|
+
},
|
|
226
|
+
|
|
227
|
+
'craft': {
|
|
228
|
+
'*': ['professional']
|
|
229
|
+
},
|
|
230
|
+
|
|
231
|
+
'emergency': {
|
|
232
|
+
'ambulance_station': ['health','government']
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
'historic': {
|
|
236
|
+
'archaeological_site': ['education'],
|
|
237
|
+
'monument': ['education']
|
|
238
|
+
},
|
|
239
|
+
|
|
240
|
+
'leisure': {
|
|
241
|
+
'adult_gaming_centre': ['nightlife'],
|
|
242
|
+
'amusement_arcade': ['entertainment'],
|
|
243
|
+
'beach_resort': ['entertainment','recreation'],
|
|
244
|
+
'bandstand': ['entertainment'],
|
|
245
|
+
'dance': ['nightlife'],
|
|
246
|
+
|
|
247
|
+
'dog_park': ['recreation'],
|
|
248
|
+
'fishing': ['recreation'],
|
|
249
|
+
'garden': ['recreation'],
|
|
250
|
+
'golf_course': ['recreation','entertainment'],
|
|
251
|
+
'ice_rink': ['entertainment'],
|
|
252
|
+
'miniature_golf': ['entertainment'],
|
|
253
|
+
'nature_reserve': ['recreation'],
|
|
254
|
+
'park': ['recreation'],
|
|
255
|
+
'pitch': ['recreation','entertainment'],
|
|
256
|
+
'playground': ['recreation'],
|
|
257
|
+
'sports_centre': ['recreation','education','entertainment'],
|
|
258
|
+
'stadium': ['entertainment'],
|
|
259
|
+
'summer_camp': ['recreation','education'],
|
|
260
|
+
'swimming_pool': ['recreation'],
|
|
261
|
+
'track': ['recreation'],
|
|
262
|
+
'water_park': ['entertainment'],
|
|
263
|
+
|
|
264
|
+
'hackerspace': ['education','entertainment'],
|
|
265
|
+
},
|
|
266
|
+
|
|
267
|
+
'military': {
|
|
268
|
+
'*': ['government:military','government'],
|
|
269
|
+
},
|
|
270
|
+
|
|
271
|
+
'natural': {
|
|
272
|
+
'wood': ['natural','recreation'],
|
|
273
|
+
'water': ['natural','natural:water','recreation'],
|
|
274
|
+
'glacier': ['natural','recreation'],
|
|
275
|
+
'beach': ['natural','recreation'],
|
|
276
|
+
},
|
|
277
|
+
|
|
278
|
+
'office': {
|
|
279
|
+
'*': ['professional']
|
|
280
|
+
},
|
|
281
|
+
|
|
282
|
+
'public_transport': {
|
|
283
|
+
'*': ['transport','transport:public'],
|
|
284
|
+
'station': ['transport','transport:station']
|
|
285
|
+
},
|
|
286
|
+
|
|
287
|
+
'railway': {
|
|
288
|
+
'light_rail': ['transport','transport:rail'],
|
|
289
|
+
'subway': ['transport','transport:rail'],
|
|
290
|
+
'tram': ['transport','transport:rail'],
|
|
291
|
+
'station': ['transport','transport:rail','transport:station']
|
|
292
|
+
},
|
|
293
|
+
|
|
294
|
+
'shop': {
|
|
295
|
+
'*': ['retail'],
|
|
296
|
+
'bakery': ['food'],
|
|
297
|
+
'butcher': ['food'],
|
|
298
|
+
'cheese': ['food'],
|
|
299
|
+
'chocolate': ['food'],
|
|
300
|
+
'coffee': ['food'],
|
|
301
|
+
'deli': ['food'],
|
|
302
|
+
'greengrocer': ['food'],
|
|
303
|
+
'seafood': ['food'],
|
|
304
|
+
'supermarket': ['food'],
|
|
305
|
+
|
|
306
|
+
'tailor': ['professional'],
|
|
307
|
+
'copyshop': ['professional'],
|
|
308
|
+
'dry_cleaning': ['professional'],
|
|
309
|
+
|
|
310
|
+
'chemist': ['health'],
|
|
311
|
+
'medical_supply': ['health'],
|
|
312
|
+
'optician': ['health']
|
|
313
|
+
},
|
|
314
|
+
|
|
315
|
+
'sport': {
|
|
316
|
+
'*': ['recreation'],
|
|
317
|
+
'american_football': ['entertainment'],
|
|
318
|
+
'australian_football': ['entertainment'],
|
|
319
|
+
'badminton': ['entertainment'],
|
|
320
|
+
'baseball': ['entertainment'],
|
|
321
|
+
'basketball': ['entertainment'],
|
|
322
|
+
'beachvolleyball': ['entertainment'],
|
|
323
|
+
'billiards': ['entertainment'],
|
|
324
|
+
'canadian_football': ['entertainment'],
|
|
325
|
+
'chess': ['entertainment'],
|
|
326
|
+
'cricket': ['entertainment'],
|
|
327
|
+
'dog_racing': ['entertainment'],
|
|
328
|
+
'field_hockey': ['entertainment'],
|
|
329
|
+
'gaelic_games': ['entertainment'],
|
|
330
|
+
'horse_racing': ['entertainment'],
|
|
331
|
+
'ice_hockey': ['entertainment'],
|
|
332
|
+
'karting': ['entertainment'],
|
|
333
|
+
'rc_car': ['entertainment'],
|
|
334
|
+
'rugby_league': ['entertainment'],
|
|
335
|
+
'rugby_union': ['entertainment'],
|
|
336
|
+
'safety_training': ['education']
|
|
337
|
+
},
|
|
338
|
+
|
|
339
|
+
'tourism': {
|
|
340
|
+
'hotel': ['accommodation'],
|
|
341
|
+
'motel': ['accommodation'],
|
|
342
|
+
'alpine_hut': ['accommodation'],
|
|
343
|
+
'apartment': ['accommodation'],
|
|
344
|
+
'guest_house': ['accommodation'],
|
|
345
|
+
'chalet': ['accommodation'],
|
|
346
|
+
'caravan_site': ['accommodation'],
|
|
347
|
+
'camp_site': ['accommodation'],
|
|
348
|
+
'wilderness_hut': ['accommodation'],
|
|
349
|
+
'information': ['government'],
|
|
350
|
+
'attraction': ['entertainment'],
|
|
351
|
+
'theme_park': ['entertainment'],
|
|
352
|
+
'viewpoint': ['recreation'],
|
|
353
|
+
'museum': ['education','entertainment'],
|
|
354
|
+
'gallery': ['education','entertainment'],
|
|
355
|
+
'zoo': ['education','entertainment']
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
};
|
|
359
|
+
|
|
360
|
+
module.exports = mapping;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
default list of tags to extract from the pbf file when running
|
|
4
|
+
imports. @see: https://github.com/pelias/pbf2json for more info.
|
|
5
|
+
**/
|
|
6
|
+
|
|
7
|
+
// default tags imported
|
|
8
|
+
const tags = [
|
|
9
|
+
'addr:housenumber+addr:street'
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
// tags corresponding to venues
|
|
13
|
+
const venue_tags = [
|
|
14
|
+
'amenity+name',
|
|
15
|
+
'building+name',
|
|
16
|
+
'shop+name',
|
|
17
|
+
'office+name',
|
|
18
|
+
'public_transport+name',
|
|
19
|
+
'cuisine+name',
|
|
20
|
+
'railway~station+name',
|
|
21
|
+
'railway~tram_stop+name',
|
|
22
|
+
'railway~halt+name',
|
|
23
|
+
'railway~subway_entrance+name',
|
|
24
|
+
'railway~train_station_entrance+name',
|
|
25
|
+
'highway~pedestrian+area~yes+name',
|
|
26
|
+
'place~square+name',
|
|
27
|
+
'sport+name',
|
|
28
|
+
'natural+name',
|
|
29
|
+
'tourism+name',
|
|
30
|
+
'leisure+name',
|
|
31
|
+
'historic+name',
|
|
32
|
+
'man_made+name',
|
|
33
|
+
'landuse+name',
|
|
34
|
+
'waterway+name',
|
|
35
|
+
'aerialway+name',
|
|
36
|
+
'craft+name',
|
|
37
|
+
'military+name',
|
|
38
|
+
'aeroway~terminal+name',
|
|
39
|
+
'aeroway~aerodrome+name',
|
|
40
|
+
'aeroway~helipad+name',
|
|
41
|
+
'aeroway~airstrip+name',
|
|
42
|
+
'aeroway~heliport+name',
|
|
43
|
+
'aeroway~areodrome+name',
|
|
44
|
+
'aeroway~spaceport+name',
|
|
45
|
+
'aeroway~landing_strip+name',
|
|
46
|
+
'aeroway~airfield+name',
|
|
47
|
+
'aeroway~airport+name',
|
|
48
|
+
'brand+name',
|
|
49
|
+
'healthcare+name'
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
module.exports = {tags,venue_tags};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
list of iso-639-1 language codes to extract from osm tags
|
|
4
|
+
|
|
5
|
+
this file is nessesary due to the free-tagging nature of
|
|
6
|
+
osm. @see ./test/fixtures for an example list of tags
|
|
7
|
+
contained in the planet file (sourced from taginfo)
|
|
8
|
+
|
|
9
|
+
some common keys we need to defend against:
|
|
10
|
+
'name:ဗမာ', 'name:<阪神電鉄>', 'name:*'
|
|
11
|
+
|
|
12
|
+
Here is an example of the usage.
|
|
13
|
+
All these tags might appear on the same element:
|
|
14
|
+
|
|
15
|
+
name=Irgendwas (the default name, used locally)
|
|
16
|
+
name:en=Something (the name in English)
|
|
17
|
+
name:el=Κάτι (the name in Greek)
|
|
18
|
+
name:de=Irgendwas (the name in German)
|
|
19
|
+
name:pl=Coś (the name in Polish)
|
|
20
|
+
name:fr=Quelque chose (the name in French)
|
|
21
|
+
name:es=Algo (the name in Spanish)
|
|
22
|
+
name:it=Qualcosa (the name in Italian)
|
|
23
|
+
name:ja=何か (the name in Japanese)
|
|
24
|
+
name:ko=뭔가 (the name in Korean)
|
|
25
|
+
name:ko_rm=Mweonga (the name in Romanised Korean)
|
|
26
|
+
|
|
27
|
+
@note: 'ko_rm' is present in the osm database but not supported
|
|
28
|
+
by pelias due to it not being listed in the ISO specification.
|
|
29
|
+
|
|
30
|
+
@see: http://wiki.openstreetmap.org/wiki/Talk:Names
|
|
31
|
+
**/
|
|
32
|
+
|
|
33
|
+
const _ = require('lodash');
|
|
34
|
+
const iso6393 = require('iso-639-3');
|
|
35
|
+
const keys = [];
|
|
36
|
+
|
|
37
|
+
_.each(iso6393, (lang) => {
|
|
38
|
+
let code = _.get(lang, 'iso6391');
|
|
39
|
+
if( code ){
|
|
40
|
+
keys.push( code );
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
module.exports = keys;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
The popularity mapper is responsible for generating a 'popularity'
|
|
3
|
+
value by inspecting OSM tags.
|
|
4
|
+
|
|
5
|
+
Disused and abandoned places are given a strong negative score.
|
|
6
|
+
If the popularity score is less than zero then the document is discarded.
|
|
7
|
+
|
|
8
|
+
Feel free to make changes to this mapping file!
|
|
9
|
+
**/
|
|
10
|
+
|
|
11
|
+
const mapping = {
|
|
12
|
+
// https://taginfo.openstreetmap.org/keys/importance
|
|
13
|
+
importance: {
|
|
14
|
+
international: { _score: 50000 },
|
|
15
|
+
national: { _score: 10000 },
|
|
16
|
+
regional: { _score: 5000 },
|
|
17
|
+
urban: { _score: 1000 },
|
|
18
|
+
suburban: { _score: 500 },
|
|
19
|
+
local: { _score: 100 },
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
// concordances
|
|
23
|
+
wikipedia: { _score: 3000 },
|
|
24
|
+
wikidata: { _score: 3000 },
|
|
25
|
+
|
|
26
|
+
// properties found on major landmarks &
|
|
27
|
+
// public buildings.
|
|
28
|
+
architect: { _score: 5000 },
|
|
29
|
+
heritage: { _score: 5000 },
|
|
30
|
+
'heritage:operator': { _score: 2000 },
|
|
31
|
+
historic: {
|
|
32
|
+
building: { _score: 5000 },
|
|
33
|
+
church: { _score: 5000 },
|
|
34
|
+
heritage: { _score: 7000 },
|
|
35
|
+
_score: 1000,
|
|
36
|
+
},
|
|
37
|
+
building: {
|
|
38
|
+
colour: { _score: 2000 },
|
|
39
|
+
material: { _score: 2000 },
|
|
40
|
+
supermarket: { _score: 2000 },
|
|
41
|
+
civic: { _score: 2000 },
|
|
42
|
+
government: { _score: 2000 },
|
|
43
|
+
hospital: { _score: 2000 },
|
|
44
|
+
train_station: { _score: 5000 },
|
|
45
|
+
transportation: { _score: 2000 },
|
|
46
|
+
university: { _score: 2000 },
|
|
47
|
+
public: { _score: 2000 },
|
|
48
|
+
sports_hall: { _score: 2000 },
|
|
49
|
+
historic: { _score: 5000 },
|
|
50
|
+
},
|
|
51
|
+
height: { _score: 2000 },
|
|
52
|
+
start_date: { _score: 2000 },
|
|
53
|
+
opening_date: { _score: 2000 },
|
|
54
|
+
|
|
55
|
+
// properties found on tourist attractions
|
|
56
|
+
tourism: {
|
|
57
|
+
visitors: { _score: 2000 },
|
|
58
|
+
aquarium: { _score: 2000 },
|
|
59
|
+
attraction: { _score: 1000 },
|
|
60
|
+
museum: { _score: 2000 },
|
|
61
|
+
theme_park: { _score: 2000 },
|
|
62
|
+
zoo: { _score: 2000 },
|
|
63
|
+
_score: 1000
|
|
64
|
+
},
|
|
65
|
+
museum: { _score: 2000 },
|
|
66
|
+
museum_type: { _score: 2000 },
|
|
67
|
+
opening_hours: { _score: 1000 },
|
|
68
|
+
operator: { _score: 1000 },
|
|
69
|
+
fee: { _score: 2000 },
|
|
70
|
+
|
|
71
|
+
// closed and abandoned places
|
|
72
|
+
// https://wiki.openstreetmap.org/wiki/Key:disused:
|
|
73
|
+
disused: { _score: -100000 },
|
|
74
|
+
'disused:shop': { _score: -100000 },
|
|
75
|
+
'disused:amenity': { _score: -100000 },
|
|
76
|
+
'disused:railway': { _score: -100000 },
|
|
77
|
+
'disused:leisure': { _score: -100000 },
|
|
78
|
+
// https://wiki.openstreetmap.org/wiki/Key:abandoned:
|
|
79
|
+
abandoned: { _score: -100000 },
|
|
80
|
+
'abandoned:shop': { _score: -100000 },
|
|
81
|
+
'abandoned:amenity': {
|
|
82
|
+
// note: some places such as 'Angkor Wat' are tagged 'abandoned:amenity=place_of_worship'.
|
|
83
|
+
// we use a positive integer to negate the effects of the base _score below (zeroing it out).
|
|
84
|
+
place_of_worship: { _score: +100000 },
|
|
85
|
+
_score: -100000
|
|
86
|
+
},
|
|
87
|
+
'abandoned:railway': { _score: -100000 },
|
|
88
|
+
'abandoned:leisure': { _score: -100000 },
|
|
89
|
+
|
|
90
|
+
// types of public amenities
|
|
91
|
+
amenity: {
|
|
92
|
+
disused: { _score: -100000 },
|
|
93
|
+
college: { _score: 2000 },
|
|
94
|
+
library: { _score: 2000 },
|
|
95
|
+
school: { _score: 1000 },
|
|
96
|
+
university: { _score: 2000 },
|
|
97
|
+
bank: { _score: 1000 },
|
|
98
|
+
clinic: { _score: 1000 },
|
|
99
|
+
dentist: { _score: 1000 },
|
|
100
|
+
doctors: { _score: 1000 },
|
|
101
|
+
hospital: { _score: 2000 },
|
|
102
|
+
nursing_home: { _score: 1000 },
|
|
103
|
+
pharmacy: { _score: 1000 },
|
|
104
|
+
social_facility: { _score: 1000 },
|
|
105
|
+
veterinary: { _score: 1000 },
|
|
106
|
+
community_centre: { _score: 1000 },
|
|
107
|
+
music_venue: { _score: 1000 },
|
|
108
|
+
nightclub: { _score: 1000 },
|
|
109
|
+
planetarium: { _score: 1000 },
|
|
110
|
+
social_centre: { _score: 1000 },
|
|
111
|
+
theatre: { _score: 1000 },
|
|
112
|
+
courthouse: { _score: 1000 },
|
|
113
|
+
coworking_space: { _score: 1000 },
|
|
114
|
+
dojo: { _score: 1000 },
|
|
115
|
+
embassy: { _score: 1000 },
|
|
116
|
+
ferry_terminal: { _score: 2000 },
|
|
117
|
+
fire_station: { _score: 1000 },
|
|
118
|
+
marketplace: { _score: 1000 },
|
|
119
|
+
place_of_worship: { _score: 1000 },
|
|
120
|
+
police: { _score: 1000 },
|
|
121
|
+
post_office: { _score: 1000 },
|
|
122
|
+
prison: { _score: 1000 },
|
|
123
|
+
public_bath: { _score: 1000 },
|
|
124
|
+
townhall: { _score: 1000 }
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
// transportation
|
|
128
|
+
aerodrome: {
|
|
129
|
+
international: { _score: 10000 },
|
|
130
|
+
regional: { _score: 5000 }
|
|
131
|
+
},
|
|
132
|
+
iata: {
|
|
133
|
+
_score: 5000,
|
|
134
|
+
none: { _score: -5000 }
|
|
135
|
+
},
|
|
136
|
+
railway: {
|
|
137
|
+
station: { _score: 2000 },
|
|
138
|
+
subway_entrance: { _score: 2000 },
|
|
139
|
+
},
|
|
140
|
+
public_transport: {
|
|
141
|
+
station: { _score: 2000 }
|
|
142
|
+
// no scoring boost for `public_transport:*`, as many unimportant records have other tags
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
// contact information
|
|
146
|
+
website: { _score: 200 },
|
|
147
|
+
phone: { _score: 200 },
|
|
148
|
+
'contact:website': { _score: 200 },
|
|
149
|
+
'contact:email': { _score: 200 },
|
|
150
|
+
'contact:phone': { _score: 200 },
|
|
151
|
+
'contact:fax': { _score: 200 },
|
|
152
|
+
|
|
153
|
+
// social media
|
|
154
|
+
'contact:foursquare': { _score: 200 },
|
|
155
|
+
'contact:facebook': { _score: 200 },
|
|
156
|
+
'contact:linkedin': { _score: 200 },
|
|
157
|
+
'contact:instagram': { _score: 200 },
|
|
158
|
+
'contact:skype': { _score: 200 },
|
|
159
|
+
'contact:flickr': { _score: 200 },
|
|
160
|
+
'contact:youtube': { _score: 200 },
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
module.exports = mapping;
|
package/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const peliasConfig = require('pelias-config').generate(require('./schema'));
|
|
2
|
+
const _ = require('lodash');
|
|
3
|
+
const logger = require('pelias-logger').get('openstreetmap');
|
|
4
|
+
|
|
5
|
+
if (_.has(peliasConfig, 'imports.openstreetmap.adminLookup')) {
|
|
6
|
+
logger.info('imports.openstreetmap.adminLookup has been deprecated, ' +
|
|
7
|
+
'enable adminLookup using imports.adminLookup.enabled = true');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const importPipeline = require('./stream/importPipeline');
|
|
11
|
+
|
|
12
|
+
importPipeline.import();
|