При условии, что вы будете полагаться на внешний источник (например, Google или Yahoo PlaceFinder) для обратного геокодирования, вы получите номер улицы и улицу (предположим, что город, штат и т. Д. Все совпадают). Если у вас есть улица и номер улицы, вопрос к вашей «базе данных» зон.
Таким образом, то, что вы действительно хотите здесь, это индекс, который поможет вам определить правильные зоны. Вы можете выбрать индекс для номеров улиц, названий улиц или их комбинации. Предполагая, что вы используете постоянный источник, такой как, например, Yahoo PlaceFinder, было бы безопасно предположить, что полученный вами результат будет нормализован, и может быть целесообразно использовать индекс (номер улицы, улица).
Однако, вероятно, было бы более надежным (т. Е. Меньше подвержено ошибкам из-за вариаций названия + номера), чтобы создать индекс для нормализованной формы названия улицы. Когда вы запрашиваете индекс, вы будете опрашивать каждый уличный узел, чтобы узнать, попадает ли число, которое у вас есть, в диапазон.
Так, например, ваш индекс может выглядеть так:
w. alabama ==> 1 <to> 135 ==> zone 1
e. alabama ==> 2 <to> 144 ==> zone 1
bahama ==> 2 <to> 4 ==> zone 1
==> 5 <to> 8 ==> zone 2
etc.
Выше показано, что я нормализовал адреса улиц (регистр плюс учет таких вещей, как «запад» и «восток») способом, который синхронизирован с моим внешним обратным геокодером. Затем я реализую поиск диапазона на втором уровне индекса (именно поэтому я и написал, подразумевая, что вам необходимо реализовать эту логику), чтобы мне не приходилось перечислять все числа между ними. ПРИМЕЧАНИЕ. Многие детали формата / представления здесь будут зависеть от обычаев, которым подчиняется ваш источник обратного геокодирования, поэтому важно, чтобы вы рассмотрели каноническую / нормализованную форму этих данных , иначе получить много ложных негативов.
Конечно, вы могли бы сделать многое из этого с помощью реляционной БД, в зависимости от их поддержки индексов диапазона. Но если у вас нет одного удобного устройства или вы не хотите интегрировать его, я думаю, что вышеприведенный пользовательский индекс будет работать.