diff --git a/data/taxi_places/rutaxi.json b/data/taxi_places/rutaxi.json index 3999b2bca3..2310fa8b3b 100644 --- a/data/taxi_places/rutaxi.json +++ b/data/taxi_places/rutaxi.json @@ -1,122 +1,141 @@ { + "disabled": { + "countries": [], + "mwms": [] + }, "enabled": { "countries": [ { - "id": "Russian Federation", "cities": [ - "Abakan", - "Aleksin", - "Almaty", - "Angarsk", - "Astana", - "Astrakhan", - "Barnaul", - "Berezniki", - "Blagoveshchensk", - "Bryansk", - "Veliky Novgorod", - "Vladivostok", - "Vladimir", - "Volgograd", - "Volzhsky", - "Vologda", - "Voronezh", - "Votkinsk", - "Gatchina", - "Dzerzhinsk", - "Dimitrovgrad", - "Donskoj", - "Yekaterinburg", - "Zhigulyovsk", - "Zlatoust", - "Ivanovo", - "Izhevsk", - "Irkutsk", - "Yoshkar-Ola", - "Kazan", - "Kaliningrad", - "Kaluga", - "Karaganda", - "Kemerovo", - "Kirov", - "Kirov", - "Kozelsk", - "Kondrovo", - "Kostroma", - "Krasnodar", - "Krasnoyarsk", - "Kungur", - "Kyzyl", - "Lipetsk", - "Lysva", - "Lyudinovo", - "Magnitogorsk", - "Miass", - "Minusinsk", - "Moscow", - "Murmansk", - "Naberezhnye Chelny", - "Nizhny Novgorod", - "Nizhny Tagil", - "Novoaltaysk", - "Novokuznetsk", - "Novokuybyshevsk", - "Novomoskovsk", - "Novorossiysk", - "Novosibirsk", - "Novocherkassk", - "Obninsk", - "Oktyabrskiy", - "Omsk", - "Orenburg", - "Orsk", - "Penza", - "Pervouralsk", - "Perm", - "Petrozavodsk", - "Pskov", - "Rostov-on-Don", - "Ryazan", - "Salavat", - "Samara", - "Saint Petersburg", - "Saransk", - "Saratov", - "Sayanogorsk", - "Serpukhov", - "Smolensk", - "Solikamsk", - "Sochi", - "Sterlitamak", - "Syzran", - "Syktyvkar", - "Taganrog", - "Tambov", - "Tver", - "Tolyatti", - "Tomsk", - "Tyumen", - "Ulan-Ude", - "Ulyanovsk", - "Ufa", - "Khabarovsk", - "Chaikovsky", - "Chapaevsk", - "Cheboksary", - "Chelyabinsk", - "Cherepovets", - "Chernogorsk", - "Chita", - "Chusovoy", - "Shakhty", - "Engels" - ] + "Abakan", + "Aleksin", + "Angarsk", + "Astrakhan", + "Barnaul", + "Berezniki", + "Blagoveshchensk", + "Bryansk", + "Veliky Novgorod", + "Vladivostok", + "Vladimir", + "Volgograd", + "Volzhsky", + "Vologda", + "Voronezh", + "Votkinsk", + "Gatchina", + "Dzerzhinsk", + "Dimitrovgrad", + "Donskoj", + "Yekaterinburg", + "Zhigulyovsk", + "Zlatoust", + "Ivanovo", + "Izhevsk", + "Irkutsk", + "Yoshkar-Ola", + "Kazan", + "Kaliningrad", + "Kaluga", + "Kemerovo", + "Kirov", + "Kirov", + "Kozelsk", + "Kondrovo", + "Kostroma", + "Krasnodar", + "Krasnoyarsk", + "Kungur", + "Kyzyl", + "Lipetsk", + "Lysva", + "Lyudinovo", + "Magnitogorsk", + "Miass", + "Minusinsk", + "Moscow", + "Murmansk", + "Naberezhnye Chelny", + "Nizhny Novgorod", + "Nizhny Tagil", + "Novoaltaysk", + "Novokuznetsk", + "Novokuybyshevsk", + "Novomoskovsk", + "Novorossiysk", + "Novosibirsk", + "Novocherkassk", + "Obninsk", + "Oktyabrskiy", + "Omsk", + "Orenburg", + "Orsk", + "Penza", + "Pervouralsk", + "Perm", + "Petrozavodsk", + "Pskov", + "Rostov-on-Don", + "Ryazan", + "Salavat", + "Samara", + "Saint Petersburg", + "Saransk", + "Saratov", + "Sayanogorsk", + "Serpukhov", + "Smolensk", + "Solikamsk", + "Sochi", + "Sterlitamak", + "Syzran", + "Syktyvkar", + "Taganrog", + "Tambov", + "Tver", + "Tolyatti", + "Tomsk", + "Tyumen", + "Ulan-Ude", + "Ulyanovsk", + "Ufa", + "Khabarovsk", + "Chaikovsky", + "Chapaevsk", + "Cheboksary", + "Chelyabinsk", + "Cherepovets", + "Chernogorsk", + "Chita", + "Chusovoy", + "Shakhty", + "Engels", + "Yaroslavl", + "Mytishchi", + "Reutov", + "Kotelniki", + "Dzerzhinsky", + "Vidnoye", + "Odintsovo", + "Krasnogorsk", + "Dolgoprudny", + "Khimki", + "Sestroretsk", + "Murino", + "Shushary", + "Kolpino" + ], + "id": "Russian Federation" + }, + { + "cities": [ + "Almaty", + "Astana", + "Karaganda" + ], + "id": "Kazakhstan" } - ], - "mwms": [] - }, - "disabled": { - "countries": [], + ], "mwms": [] } -} +} \ No newline at end of file diff --git a/data/taxi_places/yandex.json b/data/taxi_places/yandex.json index e6305491fd..c802c2932c 100644 --- a/data/taxi_places/yandex.json +++ b/data/taxi_places/yandex.json @@ -1,386 +1,383 @@ { + "disabled": { + "countries": [], + "mwms": [] + }, "enabled": { "countries": [ { - "id": "Armenia", "cities": [ - "Artashat", - "Vanadzor", - "Goris", - "Gyumri", - "Yerevan", - "Kapan", - "Hrazdan" - ] - }, + "Kyiv", + "Odessa" + ], + "id": "Ukraine" + }, { - "id": "Belarus", - "cities": [ + "cities": [ + "Bishkek", + "Osh" + ], + "id": "Kyrgyzstan" + }, + { + "cities": [ "Homel", "Minsk", "Rechytsa" - ] - }, + ], + "id": "Belarus" + }, { - "id": "Kazakhstan", - "cities": [ - "Aktau", - "Atyrau", - "Zhezkazgan", - "Kokshetau", - "Kyzylorda", - "Pavlodar", - "Taldykorgan", - "Taraz", - "Shymkent", - "Ekibastuz" - ] - }, - { - "id": "Kyrgyzstan", - "cities": [ - "Bishkek", - "Osh" - ] - }, - { - "id": "Latvia", - "cities": [ - "Riga" - ] - }, - { - "id": "Lithuania", - "cities": [ - "Vilnius" - ] - }, - { - "id": "Moldova", - "cities": [ - "Kishinev" - ] - }, - { - "id": "Ukraine", - "cities": [ - "Kyiv", - "Odessa" - ] - }, - { - "id": "Serbia", - "cities": [ - "Belgrade" - ] - }, - { - "id": "Uzbekistan", - "cities": [ - "Tashkent" - ] - }, - { - "id": "Estonia", "cities": [ "Tallinn" - ] - }, + ], + "id": "Estonia" + }, { - "id": "Russian Federation", "cities": [ - "Adler", - "Adygeysk", - "Aznakayevo", - "Azov", - "Akademgorodok", - "Alapaevsk", - "Alatyr", - "Alekseevka", - "Almetyevsk", - "Anapa", - "Andzhero-Sudzhensk", - "Arzamas", - "Armavir", - "Artyom", - "Arkhangelsk", - "Asbest", - "Achinsk", - "Baksan", - "Balabanovo", - "Balakovo", - "Balashov", - "Belgorod", - "Belebei", - "Belogorsk", - "Belokurikha", - "Beloozyorsky", - "Belorechensk", - "Berdsk", - "Biysk", - "Birobidzhan", - "Birsk", - "Bologoe", - "Borisoglebsk", - "Borovichi", - "Bratsk", - "Bronnitsy", - "Bryukhovetskaya", - "Bugulma", - "Budyonnovsk", - "Buzuluk", - "Buturlinovka", - "Valuyki", - "Verkhneyarkeevo", - "Verkhnyaya Salda", - "Vladikavkaz", - "Volgodonsk", - "Volzhsk", - "Volsk", - "Voskresensk", - "Vsevolozhsk", - "Vyborg", - "Vyksa", - "Vyazniki", - "Vyazma", - "Vyatskiye Polyany", - "Gagarin", - "Gelendzhik", - "Georgiyevsk", - "Glazov", - "Gorno-Altaysk", - "Goryachiy Klyuch", - "Grozny", - "Gusev", - "Gus-Khrustalny", - "Derbent", - "Dinskaya", - "Dmitrov", - "Dobryanka", - "Dolgoderevenskoye", - "Dubna", - "Dyurtyuli", - "Yegoryevsk", - "Yeysk", - "Yelabuga", - "Yelets", - "Ershov", - "Yessentuki", - "Yefremov", - "Zheleznogorsk", - "Zavitinsk", - "Zaraysk", - "Zvenigorod", - "Zelenogorsk", - "Zelenogradsk", - "Zelenodolsk", - "Zelenokumsk", - "Iskitim", - "Istra", - "Ishimbay", - "Kamenka", - "Kamensk-Uralsky", - "Kamensk-Shakhtinsky", - "Kamyshin", - "Kanash", - "Karasuk", - "Kasimov", - "Kaspiysk", - "Katchkanar", - "Kashira", - "Kizilyurt", - "Kingisepp", - "Kineshma", - "Kirovo-Chepetsk", - "Kirovsk", - "Kislovodsk", - "Klin", - "Klintsy", - "Kovrov", - "Kogalym", - "Kolomna", - "Kolpino", - "Kolchugino", - "Komsomolsk-on-Amur", - "Korenovsk", - "Korsakov", - "Kotlas", - "Krasnyy Sulin", - "Krestzy", - "Kronstadt", - "Kropotkin", - "Krymsk", - "Kubinka", - "Kudymkar", - "Kuznetsk", - "Kumertau", - "Kurgan", - "Kurganinsk", - "Kurovskoye", - "Kurortny District", - "Kursk", - "Kurchatov", - "Kushchovskaya", - "Labinsk", - "Leninogorsk", - "Livny", - "Likino-Dulyovo", - "Liski", - "Lomonosov", - "Losino-Petrovsky", - "Luga", - "Lukhovitsy", - "Lyantor", - "Magadan", - "Magas", - "Maykop", - "Maloyaroslavets", - "Matveyev Kurgan", - "Makhachkala", - "Mednogorsk", - "Meleuz", - "Mineralnye Vody", - "Mitchurinsk", - "Mozhaisk", - "Mozhga", - "Mozdok", - "Monino", - "Murom", - "Nadym", - "Nalchik", - "Naro-Fominsk", - "Nartkala", - "Nakhodka", - "Nevinnomyssk", - "Neftegorsk", - "Neftekamsk", - "Neftekumsk", - "Nefteyugansk", - "Nizhnevartovsk", - "Nizhnekamsk", - "Nikolskoye", - "Novovoronezh", - "Novozybkov", - "Novotroitsk", - "Novouralsk", - "Novy Urengoy", - "Noginsk", - "Norilsk", - "Noyabrsk", - "Nurlat", - "Ozersk", - "Ozyory", - "Oktyabrsk", - "Oryol", - "Orekhovo-Zuyevo", - "Osa", - "Ostrogozhsk", - "Otradnoe", - "Pavlovsk", - "Pavlovsky Posad", - "Peterhof", - "Petropavlovsk-Kamchatsky", - "Podporozhye", - "Pokhvistnevo", - "Pravdinskiy", - "Prokopyevsk", - "Protvino", - "Prokhladny", - "Pushkin", - "Pyatigorsk", - "Rasskazovo", - "Revda", - "Roslavl", - "Rossosh", - "Rubtsovsk", - "Ruzaevka", - "Rybinsk", - "Saraktash", - "Sarapul", - "Sarov", - "Sasovo", - "Satka", - "Svetlograd", - "Severodvinsk", - "Seversk", - "Semikarakorsk", - "Sergiyev Posad", - "Serdobsk", - "Sertolovo", - "Sestroretsk", - "Sibay", - "Slavgorod", - "Slavyansk-na-Kubani", - "Slobodskoy", - "Sovetskiy", - "Solnechnogorsk", - "Solnechnodolsk", - "Sosnoviy Bor", - "Sofrino", - "Stavropol", - "Stary Oskol", - "Strezhevoi", - "Stupino", - "Sudzha", - "Suzdal", - "Surgut", - "Tara", - "Teykovo", - "Temryuk", - "Timashewsk", - "Tikhvin", - "Tikhoretsk", - "Tobolsk", - "Toksova", - "Tosno", - "Troitsk", - "Trubchevsk", - "Tuapse", - "Tuymazy", - "Tula", - "Tuchkovo", - "Tynda", - "Uglich", - "Ussurijsk", - "Ust-Labinsk", - "Ukhta", - "Khanty-Mansiysk", - "Khasavyurt", - "Khorol", - "Khotkovo", - "Tsyvilsk", - "Chebarkul", - "Chegem", - "Cheremkhovo", - "Cherkessk", - "Chernogolovka", - "Chernushka", - "Chernyakhovsk", - "Chekhov", - "Chistopol", - "Shadrinsk", - "Sharya", - "Shatura", - "Shumerlya", - "Elektrogorsk", - "Elektrostal", - "Elista", - "Yugorsk", - "Yuzhno-Sakhalinsk", - "Yuzhnouralsk", - "Yurga", - "Yakutsk", - "Yarovoe", - "Yaroslavl", - "Yartsevo", + "Belgrade" + ], + "id": "Serbia" + }, + { + "cities": [ + "Vilnius" + ], + "id": "Lithuania" + }, + { + "cities": [ + "Kishinev" + ], + "id": "Moldova" + }, + { + "cities": [ + "Tashkent" + ], + "id": "Uzbekistan" + }, + { + "cities": [ + "Riga" + ], + "id": "Latvia" + }, + { + "cities": [ + "Artashat", + "Vanadzor", + "Goris", + "Gyumri", + "Yerevan", + "Kapan", + "Hrazdan" + ], + "id": "Armenia" + }, + { + "cities": [ + "Adler", + "Adygeysk", + "Aznakayevo", + "Azov", + "Akademgorodok", + "Alapaevsk", + "Alatyr", + "Alekseevka", + "Almetyevsk", + "Anapa", + "Andzhero-Sudzhensk", + "Arzamas", + "Armavir", + "Artyom", + "Arkhangelsk", + "Asbest", + "Achinsk", + "Sochi International Airport", + "Baksan", + "Balabanovo", + "Balakovo", + "Balashov", + "Belgorod", + "Belebei", + "Belogorsk", + "Belokurikha", + "Beloozyorsky", + "Belorechensk", + "Berdsk", + "Biysk", + "Birobidzhan", + "Birsk", + "Bologoe", + "Borisoglebsk", + "Borovichi", + "Bratsk", + "Bronnitsy", + "Bryukhovetskaya", + "Bugulma", + "Budyonnovsk", + "Buzuluk", + "Buturlinovka", + "Valuyki", + "Verkhneyarkeevo", + "Verkhnyaya Salda", + "Vladikavkaz", + "Volgodonsk", + "Volzhsk", + "Volsk", + "Voskresensk", + "Vsevolozhsk", + "Vyborg", + "Vyksa", + "Vyazniki", + "Vyazma", + "Vyatskiye Polyany", + "Gagarin", + "Gelendzhik", + "Georgiyevsk", + "Glazov", + "Gorno-Altaysk", + "Goryachiy Klyuch", + "Grozny", + "Gusev", + "Gus-Khrustalny", + "Derbent", + "Dinskaya", + "Dmitrov", + "Dobryanka", + "Dolgoderevenskoye", + "Dubna", + "Dyurtyuli", + "Yegoryevsk", + "Yeysk", + "Yelabuga", + "Yelets", + "Ershov", + "Yessentuki", + "Yefremov", + "Zheleznogorsk", + "Zavitinsk", + "Zaraysk", + "Zvenigorod", + "Zelenogradsk", + "Zelenodolsk", + "Zelenokumsk", + "Iskitim", + "Istra", + "Ishimbay", + "Kamenka", + "Kamensk-Uralsky", + "Kamensk-Shakhtinsky", + "Kamyshin", + "Kanash", + "Karasuk", + "Kasimov", + "Kaspiysk", + "Katchkanar", + "Kashira", + "Kizilyurt", + "Kingisepp", + "Kineshma", + "Kirovo-Chepetsk", + "Kirovsk", + "Kislovodsk", + "Klin", + "Klintsy", + "Kovrov", + "Kogalym", + "Kolomna", + "Kolchugino", + "Komsomolsk-on-Amur", + "Korenovsk", + "Korsakov", + "Kotlas", + "Krasnyy Sulin", + "Krestzy", + "Kronstadt", + "Kropotkin", + "Krymsk", + "Kubinka", + "Kudymkar", + "Kuznetsk", + "Kumertau", + "Kurgan", + "Kurganinsk", + "Kurovskoye", + "Kurortny District", + "Kursk", + "Kurchatov", + "Kushchovskaya", + "Labinsk", + "Leninogorsk", + "Livny", + "Likino-Dulyovo", + "Liski", + "Lomonosov", + "Losino-Petrovsky", + "Luga", + "Lukhovitsy", + "Lyantor", + "Magadan", + "Magas", + "Maykop", + "Maloyaroslavets", + "Matveyev Kurgan", + "Makhachkala", + "Mednogorsk", + "Meleuz", + "Mineralnye Vody", + "Mitchurinsk", + "Mozhaisk", + "Mozhga", + "Mozdok", + "Monino", + "Murom", + "Nadym", + "Nalchik", + "Naro-Fominsk", + "Nartkala", + "Nakhodka", + "Nevinnomyssk", + "Neftegorsk", + "Neftekamsk", + "Neftekumsk", + "Nefteyugansk", + "Nizhnevartovsk", + "Nizhnekamsk", + "Nikolskoye", + "Novovoronezh", + "Novozybkov", + "Novotroitsk", + "Novouralsk", + "Novy Urengoy", + "Noginsk", + "Norilsk", + "Noyabrsk", + "Nurlat", + "Ozersk", + "Ozyory", + "Oktyabrsk", + "Oryol", + "Orekhovo-Zuyevo", + "Osa", + "Ostrogozhsk", + "Otradnoe", + "Pavlovsk", + "Pavlovsky Posad", + "Peterhof", + "Petropavlovsk-Kamchatsky", + "Podporozhye", + "Pokhvistnevo", + "Pravdinskiy", + "Prokopyevsk", + "Protvino", + "Prokhladny", + "Pushkin", + "Pyatigorsk", + "Rasskazovo", + "Revda", + "Roslavl", + "Rossosh", + "Rubtsovsk", + "Ruzaevka", + "Rybinsk", + "Saraktash", + "Sarapul", + "Sarov", + "Sasovo", + "Satka", + "Svetlograd", + "Severodvinsk", + "Seversk", + "Semikarakorsk", + "Sergiyev Posad", + "Serdobsk", + "Sertolovo", + "Sibay", + "Slavgorod", + "Slavyansk-na-Kubani", + "Slobodskoy", + "Sovetskiy", + "Solnechnogorsk", + "Solnechnodolsk", + "Sosnoviy Bor", + "Sofrino", + "Stavropol", + "Stary Oskol", + "Strezhevoi", + "Stupino", + "Sudzha", + "Suzdal", + "Surgut", + "Tara", + "Teykovo", + "Temryuk", + "Timashewsk", + "Tikhvin", + "Tikhoretsk", + "Tobolsk", + "Toksova", + "Tosno", + "Troitsk", + "Trubchevsk", + "Tuapse", + "Tuymazy", + "Tula", + "Tuchkovo", + "Tynda", + "Uglich", + "Ussurijsk", + "Ust-Labinsk", + "Ukhta", + "Khanty-Mansiysk", + "Khasavyurt", + "Khorol", + "Khotkovo", + "Tsyvilsk", + "Chebarkul", + "Chegem", + "Cheremkhovo", + "Cherkessk", + "Chernogolovka", + "Chernushka", + "Chernyakhovsk", + "Chekhov", + "Chistopol", + "Shadrinsk", + "Sharya", + "Shatura", + "Shumerlya", + "Elektrogorsk", + "Elektrostal", + "Elista", + "Yugorsk", + "Yuzhno-Sakhalinsk", + "Yuzhnouralsk", + "Yurga", + "Yakutsk", + "Yarovoe", + "Yartsevo", "Yakhroma" - ] + ], + "id": "Russian Federation" + }, + { + "cities": [ + "Aktau", + "Atyrau", + "Zhezkazgan", + "Kokshetau", + "Kyzylorda", + "Pavlodar", + "Taldykorgan", + "Taraz", + "Shymkent", + "Ekibastuz" + ], + "id": "Kazakhstan" } - ], - "mwms": [] - }, - "disabled": { - "countries": [], + ], "mwms": [] } -} +} \ No newline at end of file diff --git a/tools/python/taxi_csv_to_json.py b/tools/python/taxi_csv_to_json.py new file mode 100644 index 0000000000..8e75e91d21 --- /dev/null +++ b/tools/python/taxi_csv_to_json.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python +# coding: utf8 + +from argparse import ArgumentParser +from collections import defaultdict + +import json +import logging + + +def deserialize_places(src): + lines = src.splitlines() + # Skip header. + lines = lines[1:] + countries = defaultdict(list) + mwms = [] + + try: + for l in lines: + cells = l.split('\t') + + if len(cells) < 5 and not cells[0]: + logging.error("Country cell is empty. Incorrect line: {}".format(cells)) + exit() + + # Add full country. + if len(cells) < 3: + countries[cells[0]] = [] + # Add city of the country. + elif len(cells) < 5: + countries[cells[0]].append(cells[2]) + # Add mwm. + elif len(cells) >= 5: + mwms.append(cells[4]) + except IndexError as e: + logging.error("The structure of src file is incorrect. Exception: {}".format(e)) + exit() + + return countries, mwms + + +def convert(src_path, dst_path): + try: + with open(src_path, "r") as f: + src = f.read() + except (OSError, IOError): + logging.error("Cannot read src file {}".format(src_path)) + return + + countries, mwms = deserialize_places(src) + + # Carcass of the result. + result = { + "enabled": {"countries": [], "mwms": []}, + "disabled": {"countries": [], "mwms": []} + } + + for country, cities in countries.iteritems(): + result["enabled"]["countries"].append({ + "id": country, + "cities": cities + }) + + result["enabled"]["mwms"] = mwms + + try: + with open(dst_path, "w") as f: + json.dump(result, f, indent=2, sort_keys=True) + except (OSError, IOError): + logging.error("Cannot write result into dst file {}".format(dst_path)) + return + + +def process_options(): + parser = ArgumentParser(description='Load taxi file in csv format and convert it into json') + + parser.add_argument("--src", type=str, dest="src", help="Path to csv file", required=True) + parser.add_argument("--dst", type=str, dest="dst", help="Path to json file", required=True) + + options = parser.parse_args() + + if not options.src or not options.dst: + parser.print_help() + return None + + return options + + +def main(): + options = process_options() + if options: + convert(options.src, options.dst) + + +if __name__ == "__main__": + main()