Проблема геокодирования Graticule - PullRequest
0 голосов
/ 11 января 2011

Я пытаюсь использовать Graticule для геокодирования адреса, но сталкиваюсь с досадной проблемой. При геокодировании адреса в США атрибут региона из местоположения представляет собой двухбуквенное сокращение вместо полного имени (ОН вместо Огайо). Есть ли способ получить полное имя?

1 Ответ

0 голосов
/ 12 января 2011

Похоже, Graticule просто проходит через необработанные результаты от различных сервисов, только нормализуя имена атрибутов. Итак, короткий ответ: только с помощью службы, которая в настоящее время возвращает полное имя в поле, Graticule сопоставляется с регионом для этой службы.

Длинный ответ (или предложение действительно).

Я бы заменил значение, используя хэш, например,

US_STATES = {
  'OH' => 'Ohio'
  [...]
}

my_loc.region = US_STATES[my_loc.region] || my_loc.region

Возможно, вы захотите обернуть это в чек для страны, но тогда вы должны быть уверены, что охватили все возможные значения страны из сервисов, например,

if my_loc.country =~ /\A\s*(US|U\.?S\.?A)\s*\z/i

Это обеспечит вам некоторую стабильность, поэтому меняющиеся службы или службы, меняющие свои результаты, не удивят вас позже.

Если вы чувствуете себя бесстрашным, можете раскошелиться на Graticule и добавить методы region_name и region_abbr (или тому подобное), поскольку текущий регион имеет переменные значения / результаты и отправить запрос на извлечение ...

...