Esempio n. 1
0
 def merge_cities_file(cls, _format="csv"):
     res = []
     codes = {
         country: code
         for code, country in bc.Locale("en", "US").territories.iteritems()
     }
     for country in cls.request_country_codes().iterkeys():
         cities = defaultdict(dict)
         if country == "United States of America":
             short_country = "United States"
         elif country == "People's Republic of China":
             short_country = "China"
         else:
             short_country = country
         country_code = codes.get(short_country, "ZZ")
         for lang in cls.SUPPORTED_LANGUAGES:
             filename = cls.get_file_name(country, lang)
             if FileManager.exists(filename):
                 for element in FileManager.read(filename, _format="json"):
                     cities[element["city"]].update(element)
                     cities[element["city"]]['name:%s' %
                                             lang] = element["cityLabel"]
         if _format == "json":
             res = cls.to_json(res, cities.itervalues(), country_code)
         elif _format == "csv":
             res = cls.to_csv(res, cities.itervalues(), country_code)
         else:
             raise TypeError("Format %s not supported" % _format)
     FileManager.write(os.path.join(
         cls.CITIES_FOLDER_NAME,
         cls.WORLD_CITIES_FILE.format(format=_format)),
                       res,
                       _format=_format)
Esempio n. 2
0
 def has_already_data(cls, _type, mlon, mlat, Mlon, Mlat, _try=0):
     if _try > cls.MAX_TRY:
         return False
     filename = cls.get_file_name(_type, mlon, mlat, Mlon, Mlat)
     if FileManager.exists(filename):
         return True
     av_lon, av_lat = (Mlon - mlon) / 2., (Mlat - mlat) / 2.
     return all([
         cls.has_already_data(_type,
                              mlon,
                              mlat,
                              Mlon - av_lon,
                              Mlat - av_lat,
                              _try=_try + 1),
         cls.has_already_data(_type,
                              mlon,
                              mlat + av_lat,
                              Mlon - av_lon,
                              Mlat,
                              _try=_try + 1),
         cls.has_already_data(_type,
                              mlon + av_lon,
                              mlat,
                              Mlon,
                              Mlat - av_lat,
                              _try=_try + 1),
         cls.has_already_data(_type,
                              mlon + av_lon,
                              mlat + av_lat,
                              Mlon,
                              Mlat,
                              _try=_try + 1)
     ])
Esempio n. 3
0
 def has_already_data(cls, country, lang):
     filename = cls.get_file_name(country, lang)
     if FileManager.exists(filename):
         return True