diff --git a/resources/states/au.yaml b/resources/states/au.yaml new file mode 100644 index 00000000..f4efe02f --- /dev/null +++ b/resources/states/au.yaml @@ -0,0 +1,20 @@ +aat: + en: Australian Antarctic Territory +act: + en: Australian Capital Territory +jbt: + en: Jervis Bay Territory +nsw: + en: New South Wales +nt: + en: Northern Territory +qld: + en: Queensland +sa: + en: South Australia +tas: + en: Tasmania +vic: + en: Victoria +wa: + en: Western Australia \ No newline at end of file diff --git a/resources/states/ca.yaml b/resources/states/ca.yaml new file mode 100644 index 00000000..5051d995 --- /dev/null +++ b/resources/states/ca.yaml @@ -0,0 +1,39 @@ +ab: + fr: Alberta + en: Alberta +bc: + fr: Colombie-Britannique + en: British Columbia +mb: + fr: Manitoba + en: Manitoba +nb: + fr: Nouveau-Brunswick + en: New Brunswick +nl: + fr: Terre-Neuve-et-Labrador + en: Newfoundland and Labrador +ns: + fr: Nouvelle-Écosse + en: Nova Scotia +nt: + fr: Territoires du Nord-Ouest + en: Northwest Territories +nu: + fr: Nunavut + en: Nunavut +on: + fr: Ontario + en: Ontario +pe: + fr: Île-du-Prince-Édouard + en: Prince Edward Island +qc: + fr: Québec + en: Quebec +sk: + fr: Saskatchewan + en: Saskatchewan +yt: + fr: Yukon + en: Yukon \ No newline at end of file diff --git a/resources/states/us.yaml b/resources/states/us.yaml new file mode 100644 index 00000000..96f8fcec --- /dev/null +++ b/resources/states/us.yaml @@ -0,0 +1,102 @@ +ak: + en: Alaska +al: + en: Alabama +ar: + en: Arkansas +az: + en: Arizona +ca: + en: California +co: + en: Colorado +ct: + en: Connecticut +dc: + en: District of Columbia +de: + en: Delaware +fl: + en: Florida +ga: + en: Georgia +hi: + en: Hawaii +ia: + en: Iowa +id: + en: Idaho +il: + en: Illinois +in: + en: Indiana +ks: + en: Kansas +ky: + en: Kentucky +la: + en: Louisiana +ma: + en: Massachusetts +md: + en: Maryland +me: + en: Maine +mi: + en: Michigan +mn: + en: Minnesota +mo: + en: Missouri +ms: + en: Mississippi +mt: + en: Montana +nc: + en: North Carolina +nd: + en: North Dakota +ne: + en: Nebraska +nh: + en: New Hampshire +nj: + en: New Jersey +nm: + en: New Mexico +nv: + en: Nevada +ny: + en: New York +oh: + en: Ohio +ok: + en: Oklahoma +or: + en: Oregon +pa: + en: Pennsylvania +ri: + en: Rhode Island +sc: + en: South Carolina +sd: + en: South Dakota +tn: + en: Tennessee +tx: + en: Texas +ut: + en: Utah +va: + en: Virginia +vt: + en: Vermont +wa: + en: Washington +wi: + en: Wisconsin +wv: + en: West Virginia +wy: + en: Wyoming \ No newline at end of file diff --git a/scripts/geodata/states/state_abbreviations.py b/scripts/geodata/states/state_abbreviations.py index d6b95ace..d8648863 100644 --- a/scripts/geodata/states/state_abbreviations.py +++ b/scripts/geodata/states/state_abbreviations.py @@ -1,93 +1,53 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals +import os +import six +import sys +import yaml + from collections import defaultdict -STATE_ABBREVIATIONS = { - 'US': { - 'AL': {'en': 'Alabama'}, - 'AK': {'en': 'Alaska'}, - 'AZ': {'en': 'Arizona'}, - 'AR': {'en': 'Arkansas'}, - 'CA': {'en': 'California'}, - 'CO': {'en': 'Colorado'}, - 'CT': {'en': 'Connecticut'}, - 'DE': {'en': 'Delaware'}, - 'DC': {'en': 'District of Columbia'}, - 'FL': {'en': 'Florida'}, - 'GA': {'en': 'Georgia'}, - 'HI': {'en': 'Hawaii'}, - 'ID': {'en': 'Idaho'}, - 'IL': {'en': 'Illinois'}, - 'IN': {'en': 'Indiana'}, - 'IA': {'en': 'Iowa'}, - 'KS': {'en': 'Kansas'}, - 'LA': {'en': 'Louisiana'}, - 'KY': {'en': 'Kentucky'}, - 'ME': {'en': 'Maine'}, - 'MD': {'en': 'Maryland'}, - 'MA': {'en': 'Massachusetts'}, - 'MI': {'en': 'Michigan'}, - 'MN': {'en': 'Minnesota'}, - 'MS': {'en': 'Mississippi'}, - 'MO': {'en': 'Missouri'}, - 'MT': {'en': 'Montana'}, - 'NE': {'en': 'Nebraska'}, - 'NV': {'en': 'Nevada'}, - 'NH': {'en': 'New Hampshire'}, - 'NJ': {'en': 'New Jersey'}, - 'NM': {'en': 'New Mexico'}, - 'NY': {'en': 'New York'}, - 'NC': {'en': 'North Carolina'}, - 'ND': {'en': 'North Dakota'}, - 'OH': {'en': 'Ohio'}, - 'OK': {'en': 'Oklahoma'}, - 'OR': {'en': 'Oregon'}, - 'PA': {'en': 'Pennsylvania'}, - 'RI': {'en': 'Rhode Island'}, - 'SC': {'en': 'South Carolina'}, - 'SD': {'en': 'South Dakota'}, - 'TN': {'en': 'Tennessee'}, - 'TX': {'en': 'Texas'}, - 'UT': {'en': 'Utah'}, - 'VT': {'en': 'Vermont'}, - 'VA': {'en': 'Virginia'}, - 'WA': {'en': 'Washington'}, - 'WV': {'en': 'West Virginia'}, - 'WI': {'en': 'Wisconsin'}, - 'WY': {'en': 'Wyoming'} - }, - 'CA': { - 'AB': {'en': 'Alberta', 'fr': 'Alberta'}, - 'BC': {'en': 'British Columbia', 'fr': 'Colombie-Britannique'}, - 'MB': {'en': 'Manitoba', 'fr': 'Manitoba'}, - 'NB': {'en': 'New Brunswick', 'fr': 'Nouveau-Brunswick'}, - 'NL': {'en': 'Newfoundland and Labrador', 'fr': 'Terre-Neuve-et-Labrador'}, - 'NS': {'en': 'Nova Scotia', 'fr': 'Nouvelle-Écosse'}, - 'NT': {'en': 'Northwest Territories', 'fr': 'Territoires du Nord-Ouest'}, - 'NU': {'en': 'Nunavut', 'fr': 'Nunavut'}, - 'ON': {'en': 'Ontario', 'fr': 'Ontario'}, - 'PE': {'en': 'Prince Edward Island', 'fr': 'Île-du-Prince-Édouard'}, - 'QC': {'en': 'Quebec', 'fr': 'Québec'}, - 'SK': {'en': 'Saskatchewan', 'fr': 'Saskatchewan'}, - 'YT': {'en': 'Yukon', 'fr': 'Yukon'}, - }, - 'AU': { - 'AAT': {'en': 'Australian Antarctic Territory'}, - 'ACT': {'en': 'Australian Capital Territory'}, - 'JBT': {'en': 'Jervis Bay Territory'}, - 'NSW': {'en': 'New South Wales'}, - 'NT': {'en': 'Northern Territory'}, - 'QLD': {'en': 'Queensland'}, - 'SA': {'en': 'South Australia'}, - 'TAS': {'en': 'Tasmania'}, - 'VIC': {'en': 'Victoria'}, - 'WA': {'en': 'Western Australia'}, - }, -} +this_dir = os.path.realpath(os.path.dirname(__file__)) -STATE_EXPANSIONS = defaultdict(dict) +from geodata.configs.utils import nested_get, DoesNotExist +from geodata.encoding import safe_decode -for country, values in STATE_ABBREVIATIONS.iteritems(): - for abbrev, expansions in values.iteritems(): - for lang, expansion in expansions.iteritems(): - STATE_EXPANSIONS[country][expansion] = abbrev + +STATE_DIR = os.path.join(this_dir, os.pardir, os.pardir, os.pardir, + 'resources', 'states') + + +class StateAbbreviations(object): + def __init__(self, base_dir=STATE_DIR): + self.full_names = {} + self.abbreviations = {} + + for filename in os.listdir(base_dir): + country = filename.split('.yaml')[0] + country_config = yaml.load(open(os.path.join(base_dir, filename))) + + country_abbreviations = defaultdict(dict) + country_full_names = defaultdict(dict) + + for abbreviation, vals in six.iteritems(country_config): + for language, full_name in six.iteritems(vals): + full_name = safe_decode(full_name) + abbreviation = safe_decode(abbreviation) + country_abbreviations[full_name.lower()][language] = abbreviation + country_full_names[abbreviation][language] = full_name + + self.abbreviations[country] = dict(country_abbreviations) + self.full_names[country] = dict(country_full_names) + + def get_abbreviation(self, country, language, state, default=None): + value = nested_get(self.abbreviations, (country.lower(), state.lower(), language.lower())) + if value is DoesNotExist: + return None + return value + + def get_full_name(self, country, language, state, default=None): + value = nested_get(self.full_names, (country.lower(), state.lower(), language.lower())) + if value is DoesNotExist: + return None + return value + + +state_abbreivations = StateAbbreviations()