Сделав подстановку, MapInfo пробует сравнить полученное название с названиями улиц в исходной таблице. Если совпадение не найдено, то:
• программа переходит к следующей строке целевой таблицы (при геокодировании в автоматическом режиме);
• программа предлагает пользователю похожие варианты (при геокодировании вручную). Пользователь выбирает подходящий аналог Затем MapInfo Professional переходит к следующей строке.
На данном этапе MapInfo находит наиболее подходящее название улицы. Следующий шаг -сравнение номеров домов, если обнаружено совпадение названий улиц.
После того, как MapInfo опознает улицу, предстоит анализ номера дома. MapInfo хранит диапазоны номеров домов для каждого сегмента улицы. MapInfo берет номер дома из целевого адреса и сравнивает его с диапазонами номеров из исходной таблицы для каждого сегмента улицы. Предположим, что надо найти дом "343 LaSalle St". MapInfo хранит первый и последний номер домов для каждого сегмента улицы, причем отдельно по правой и по левой сторонам улицы, например:
Имя | FromLeft | ToLeft | FromRight | ToRight |
LaSalle St | 269 | 331 | 268 | 330 |
LaSalle St | 333 | 375 | 332 | 374 |
LaSalle St | 377 | 401 | 376 | 400 |
Чтобы найти "343 LaSalle St", MapInfo Professional просмотрит диапазоны номеров, пока не найдет диапазон, в который попадает номер 343. Поскольку 343 попадает между 333 и 375, то MapInfo отнесет заданный адрес ко второму сегменту улицы (средняя строка в таблице). Если MapInfo Professional находит сегмент улицы, к которому относится данный адрес, то процедура переходит к обработке следующей строки целевой таблицы. Если же такой сегмент не был найден, то MapInfo:
• программа переходит к следующей строке целевой таблицы (при геокодировании в автоматическом режиме);
• программа предлагает пользователю похожие варианты (при геокодировании вручную). Пользователь выбирает подходящий аналог. Затем MapInfo переходит к следующей строке.
На этом этапе MapInfo Professional наилучшим образом подбирает местоположение дома на улице. Напомним, что один из режимов (в диалоге Варианты) задает автоматический выбор наиболее близкого диапазона номеров при отсутствии точного совпадения - Использовать ближайший адрес. Например, Вы ищете дом с номером 412, но ни один диапазон не содержит такой номер. Однако имеется диапазон от 346 до 400. Поскольку он ближе всего подходит к номеру 412, то MapInfo в этом режиме отнесет дом с номером 412 к диапазону 346400. Следующим шагом является анализ тех фрагментов адреса, которые относятся более чем к одной улице.
При геокодировании MapInfo проверяет, сколько одинаковых улиц содержится в целевой таблице. Если более одной, то MapInfo должна выбирать, какой исходный адрес использовать. Если целевая таблица содержит столбец областей, MapInfo может уточнить геокодирование с учетом границ областей.
Предположим, что Вы геокодируете записи о Московском регионе. В базе данных имеется адрес "Ломоносова 12". В таблице кроме данных по московскому региону, есть данные по Владимирской, Тверской и Ярославской областям. В них есть восемь городов, попавших в Вашу базу. В четырех из них есть улица Ломоносова. На трех из этих четырех улиц имеется дом с номером 12. MapInfo должна сопоставить целевой адрес одному из городов. Для этого будет использована информация об областях: MapInfo сверит, в какой области лежит целевой адрес и в какой - исходный.
При задании параметров геокодирования Вы можете указать, какой столбец данных об областях следует использовать для уточнения геокодирования. Этот диалог отображается, если используются поля Искать в другой таблице и В границах, заданных в колонке.
Можно использовать различные виды областей, включая города и почтовые индексы (ZIP-коды).
Последний способ удобен для России, поскольку практически все адреса включают почтовый индекс. Если Вам удастся подобрать какой-либо аналог ZIP-кодам, например, телефонные коды, то многие задачи геокодирования будут решаться более эффективно. Если Вы зададите уточнение поиска адресов по ZIP-коду или его аналогу, MapInfo будет сравнивать ZIP-код записи из целевой таблицы с ZIP-кодами в исходной таблице. При обнаружении совпадения процесс геокодирования заканчивается. MapInfo теперь может создать точку в целевой таблице на основании координат из исходной таблицы.
Однако для некоторых адресов соответствующие записи могут так и не быть найдены. Для таких записей можно задать соответствие в ручном режиме. При работе с большими базами данных Вам, разумеется, хочется свести к минимуму ручную обработку. Повысить эффективность геокодирования можно и другими способами.
В диалоге Варианты геокодирования можно указать, что MapInfo должна автоматически выбирать другую область, добиваясь таким образом ровно одного совпадения (режим Использовать адрес, найденный в другой области). Допустим, Вы геокодируете адреса в городе Москве. Один из адресов - "Ломоносова 12" - относится не к Москве, а к Ярославлю, и только к нему. В таком случае MapInfo геокодирует "Ломоносова 12" в Ярославле. Однако, если MapInfo найдет "Ломоносова 12" еще, например, в Твери, этот адрес не будет обработан ни для одного из городов. Адрес "Ломоносова 12" останется негеокодированным.
Подробнее читайте в разделе Справочной системы: "После геокодирования". Темы этого раздела:
• Поиск негеокодированных записей
• Извлечение долготы и широты из геокодированной таблицы
• Извлечение долготы и широты в новую таблицу
• Добавление долготы и широты в исходную таблицу
• Извлечение координат для таблицы, имеющей иную проекцию
Выбор негеокодированных записей
Ваша геокодированная таблица может иметь часть записей, которые негеокодированы или Вы позже добавили новые данные к этой таблице. Можно сделать простой запрос и получить в окне Списка записи, которые негеокодированы.
1. Откройте Вашу таблицу, если она еще не открыта, и выполните команду Запрос > Выбрать.
2. Заполните диалог так, как показано ниже. Используемое выражение - "NOT OBJ". Этот запрос выберет все записи, которые не имеют объектов, т.е. негеокодированы. Нажмите OK.
Размещение новых геокодированных точек
Один из наиболее впечатляющих результатов геокодирования заключается в том, что на
карте можно увидеть размещенные точки. В зависимости от настроек новые геокодированные
точки появляются на карте сразу или после прорисовки.
Чтобы разместить на карте новые геокодированные точки, сделайте следующее:
1. Убедитесь, что окно Карты активно.
2. Выполните команду Карта > Управление слоями. Убедитесь, что таблица, которую Вы геокодировали, имеется в списке диалога Управление слоями.
Если ее там нет, нажмите кнопку Добавить и добавьте этот слой.
3. В диалоге Управление слоями переместите геокодированную таблицу наверх, под Косметический слой, для того, чтобы точки не перекрывались другими слоями.
4. Убедитесь, что геокодированный слой является видимым. Нажмите OK и выйдите из диалога.
Если точки до сих пор не видны, переходите к шагу 5.
5. Выполните команду Карта > Показать слой полностью. Выберите Вашу таблицу и нажмите OK. Эта операция должна показать все точки из Вашей таблицы. Вы можете увидеть все новые точки, однако они могут оказаться не на тех местах, где ожидалось. Если точки не на нужных местах, смотрите раздел Раскодирование выбранных записей на стр. 242.
6. Если точки и после этого не видны, выполните команду Карта > Управление слоями. Выберите слой, содержащий геокодированные точки, и нажмите кнопку Оформление.
7. Поставьте флажок Единообразно и укажите стиль символа, который будет использоваться на Вашей карте. Нажмите OK, и снова OK, чтобы вернуться в диалог Управление слоями.
Если после выполнения всех указанных шагов Вы все равно не находите геокодированных точек, попытайтесь выбрать все негеокодированные записи, как описано в разделе "Выбор негеокодированных точек".
При использовании кодов результата (для этого нужно заполнить окошко Поместить результат в колонку в диалоге Варианты геокодирования) MapInfo будет для каждой записи вырабатывать код результата обработки. Эти коды содержат информацию о том, какие шаги геокодирования были выполнены программой для данной записи, успешно ли завершилось кодирование и найдено ли точное соответствие. Коды результатов можно использовать для оценки успешности геокодирования. Вы сможете понять, что приводит к удачному кодированию, а что - к необработанным записям.
Раскодирование - это процесс удаления географических объектов, сопоставленных записям таблицы. Могут возникнуть ситуации, в которых необходимо раскодировать целую таблицу или только некоторые записи в ней. Например, Вы геокодировали базу данных о клиентах по районам. Позднее Вам понадобилось снова геокодировать эту базу, но уже с использованием полных адресов вместо центроидов районов. MapInfo Professional дает возможность удалить все графические объекты, которые были сопоставлены записям данной таблицы. Затем Вы можете вновь геокодировать базу данных. Раскодирование только выбранных данных из таблицы может быть полезным в том случае, когда изменилась лишь часть адресной информации для относительно небольшого количества записей, например, в списке клиентов, у которых поменялись адреса.