[addresses] add chome form for Japanese neighborhoods
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
import copy
|
import copy
|
||||||
import operator
|
import operator
|
||||||
import os
|
import os
|
||||||
@@ -21,6 +22,7 @@ from geodata.addresses.floors import Floor
|
|||||||
from geodata.addresses.entrances import Entrance
|
from geodata.addresses.entrances import Entrance
|
||||||
from geodata.addresses.house_numbers import HouseNumber
|
from geodata.addresses.house_numbers import HouseNumber
|
||||||
from geodata.addresses.metro_stations import MetroStation
|
from geodata.addresses.metro_stations import MetroStation
|
||||||
|
from geodata.addresses.numbering import Digits
|
||||||
from geodata.addresses.po_boxes import POBox
|
from geodata.addresses.po_boxes import POBox
|
||||||
from geodata.addresses.postcodes import PostCode
|
from geodata.addresses.postcodes import PostCode
|
||||||
from geodata.addresses.staircases import Staircase
|
from geodata.addresses.staircases import Staircase
|
||||||
@@ -51,6 +53,11 @@ PARSER_DEFAULT_CONFIG = os.path.join(this_dir, os.pardir, os.pardir, os.pardir,
|
|||||||
'resources', 'parser', 'default.yaml')
|
'resources', 'parser', 'default.yaml')
|
||||||
|
|
||||||
|
|
||||||
|
JAPAN = 'jp'
|
||||||
|
JAPANESE_ROMAJI = 'ja_rm'
|
||||||
|
ENGLISH = 'en'
|
||||||
|
|
||||||
|
|
||||||
class AddressComponents(object):
|
class AddressComponents(object):
|
||||||
'''
|
'''
|
||||||
This class, while it has a few dependencies, exposes a simple method
|
This class, while it has a few dependencies, exposes a simple method
|
||||||
@@ -783,6 +790,17 @@ class AddressComponents(object):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def format_japanese_neighborhood_romaji(self, address_components):
|
||||||
|
neighborhood = safe_decode(address_components.get(AddressFormatter.SUBURB, ''))
|
||||||
|
if neighborhood.endswith(safe_decode('丁目')):
|
||||||
|
neighborhood = neighborhood[:-2]
|
||||||
|
if neighborhood and neighborhood.isdigit():
|
||||||
|
if random.random() < 0.5:
|
||||||
|
neighborhood = Digits.rewrite_standard_width(neighborhood)
|
||||||
|
suffix = safe_decode(random.choice(('chōme', 'chome')))
|
||||||
|
hyphen = six.u('-') if random.random < 0.5 else six.u(' ')
|
||||||
|
address_components[AddressFormatter.SUBURB] = six.u('{}{}{}').format(neighborhood, hyphen, suffix)
|
||||||
|
|
||||||
def abbreviated_state(self, state, country, language):
|
def abbreviated_state(self, state, country, language):
|
||||||
abbreviate_state_prob = float(nested_get(self.config, ('state', 'abbreviated_probability')))
|
abbreviate_state_prob = float(nested_get(self.config, ('state', 'abbreviated_probability')))
|
||||||
|
|
||||||
@@ -974,7 +992,7 @@ class AddressComponents(object):
|
|||||||
return self.neighborhoods_rtree.point_in_poly(latitude, longitude, return_all=True)
|
return self.neighborhoods_rtree.point_in_poly(latitude, longitude, return_all=True)
|
||||||
|
|
||||||
def add_neighborhoods(self, address_components, neighborhoods,
|
def add_neighborhoods(self, address_components, neighborhoods,
|
||||||
country, language, language_suffix='', replace_city=False):
|
country, language, non_local_language=None, language_suffix='', replace_city=False):
|
||||||
'''
|
'''
|
||||||
Neighborhoods
|
Neighborhoods
|
||||||
-------------
|
-------------
|
||||||
@@ -1039,7 +1057,10 @@ class AddressComponents(object):
|
|||||||
neighborhood_components[component] = neighborhoods[0]
|
neighborhood_components[component] = neighborhoods[0]
|
||||||
|
|
||||||
self.abbreviate_admin_components(neighborhood_components, country, language)
|
self.abbreviate_admin_components(neighborhood_components, country, language)
|
||||||
|
|
||||||
address_components.update(neighborhood_components)
|
address_components.update(neighborhood_components)
|
||||||
|
if country == JAPAN and (language == JAPANESE_ROMAJI or non_local_language == ENGLISH):
|
||||||
|
self.format_japanese_neighborhood_romaji(address_components)
|
||||||
|
|
||||||
def generate_sub_building_component(self, component, address_components, language, country=None, **kw):
|
def generate_sub_building_component(self, component, address_components, language, country=None, **kw):
|
||||||
existing = address_components.get(component, None)
|
existing = address_components.get(component, None)
|
||||||
@@ -1525,7 +1546,7 @@ class AddressComponents(object):
|
|||||||
normalize_languages=all_languages,
|
normalize_languages=all_languages,
|
||||||
language_suffix=language_suffix)
|
language_suffix=language_suffix)
|
||||||
|
|
||||||
self.add_neighborhoods(address_components, neighborhoods, country, language,
|
self.add_neighborhoods(address_components, neighborhoods, country, language, non_local_language=non_local_language,
|
||||||
language_suffix=language_suffix)
|
language_suffix=language_suffix)
|
||||||
|
|
||||||
street = address_components.get(AddressFormatter.ROAD)
|
street = address_components.get(AddressFormatter.ROAD)
|
||||||
|
|||||||
Reference in New Issue
Block a user