Как MapInfo производит геокодирование.
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Цель геокодирования - поместить графические объекты (типа точка) в базу данных. Назовем кодируемую таблицу целевой таблицей. Географические координаты берутся из исходной таблицы, которая уже содержит графические объекты. Чтобы геокодировать некоторую запись:

1. MapInfo должна найти для адреса в целевой таблице совпадающий адрес в исходной таблице.

2. Взять географические координаты из исходной таблицы и использовать их для создания точки в целевой таблице.

Все возможные проблемы возникают па нервом этапе геокодирования, при сравнении адресов в исходной и целевой таблицах.

Полный адрес обычно состоит из двух или трех компонент:

1. Номера дома на улице.

2. Названия улицы.

3. Номера квартиры, этажа, номера апартаментов в гостинице и подобной информации. Во многих адресах эта компонента отсутствует.

MapInfo использует разные процедуры для работы с номерами домов и названиями улиц. Третью компоненту, если она присутствует, MapInfo обрабатывает как часть названия улицы.

Автоматический и ручной режимы. В MapInfo имеется два режима геокодирования: автоматический и ручной. Процедуры сравнения в обоих режимах MapInfo применяет те же.

В автоматическом режиме адреса сравниваются на основании режимов, заданных в диалоге "Геокодирование". При кодировании вручную процесс сравнения останавливается каждый раз, когда адрес не может быть геокодирован, и пользователь может уточнить результат сравнения.

Как правило, лучше всего придерживаться следующей стратегии геокодирования:

· Выполнить геокодирование в автоматическом режиме.

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

Точное совпадение. При геокодировании MapInfo пытается найти в точности совпадающие адреса в исходной и целевой таблицах. Это означает, что адреса должны совпадать посимвольно. Однако, при сравнении не учитывается различие больших и малых букв. Во многих случаях MapInfo не получает полного совпадения и может проверять подстановки из файла сокращений. Если Вы поймете, в каких ситуациях не может быть найден подходящий адрес, то Вам легче будет находить выход из этих ситуаций.

При сравнении MapInfo не учитывает различие больших и малых букв. Это значит, что MapInfo посчитает совпадающими: Main, MAIN, main, maIN.

Существуют различные способы решения возникающих проблем. Во многих случаях можно использовать механизм подстановок из файла сокращений MapInfo, который будет описан ниже.

 

Процесс сравнения

Сравнение названий улиц. MapInfo начинает сравнение с адресов в исходной и целевой таблицах. Если обнаружено совпадение, то процесс может либо закончиться, либо продолжиться анализом областей: городов, районов, муниципальных округов.

Если название улицы в целевой таблице не совпадает ни с одним названием в строках исходной таблицы, MapInfo применяет возможные подстановки из файла сокращений к целевому адресу. Файл сокращений содержит пары элементов, например, “STREET ST” или “AVE AV” в английской версии и пары типа “ПРОЕЗД IIP” и “ПРОСПЕКТ ПРОСП” в русской. Когда MapInfo находит “STREET” в целевом адресе, она заменяет эту строку на “ST”, аналогично “ПРОСПЕКТ” заменяется на “ПРОСП”. Причем MapInfo не вносит изменений в данные целевой таблицы, а использует подстановки только на время сравнения адресов. Адрес! в таблицах остаются прежними.

Сделав подстановку, MapInfo пробует сравнил, полученное название с названиями улиц в исходной таблице.

Если MapInfo вновь не добивается совпадении, то проверяется наличие номера дома. Если номер дома имеется, MapInfo пытается провести сравнение без него (например, сравнить “Maple Av” с ”Maple Av”, а не с “10 Maple AV”), проходя те же шаги: прямое сравнение и сравнение после подстановки. Если для данной строки не удалось найти совпадение:

· Программа переходит к следующей строке пеленой таблицы (при геокодировании в автоматическом режиме).

· Программа показывает пользователю самый похожий вариант (при геокодировании вручную). Пользователь выбирает правильный аналог. Затем MapInfo переходит к следующей строке.

На данном этапе MapInfo находит наиболее подходящее название улицы. Следующий шаг - сравнить номера домов для тех случаев, где обнаружено совпадение названия улиц.

Сравнение номеров домов. После того, как MapInfo опознает улицу, задача состоит в анализе номера дома. MapInfo хранит диапазоны номеров домов для каждого сегмента улицы. MapInfo берет номер дома из целевого адреса и сравнивает его с диапазонами номеров из исходной таблицы для каждого сегмента улицы. Предположим, например, что надо найти дом “343 LaSalle St”. MapInfo хранит первый и последний номер дома для каждого сегмента улицы, причем отдельно по правой и по левой сторонам улицы, например:

Name FromLeft ToLeft FromRight ToRight
LaSalle St 269 331 268 330
LaSalle St 333 375 332 374
LaSalle St 377 401 376 400

 

(Названия колонок: Name, FromLeft, ToLeft, FromRight и ToRight применяются в файлах улиц стандарта StreeInfo и означают соответственно: Имя, Слева, Налево, Справа и Направо).

Чтобы найти “343 LaSalle St”, MapInfo просмотрит диапазоны номеров, пока не найдет диапазон, в который попадет номер “343”. Так как 343 попадет между 333 и 375, то MapInfo отнесет заданный адрес ко второму сегменту улицы (средняя строка в табличке).

Если MapInfo находит сегмент улицы, к которому относится данный адрес, то процедура переходит к обработке следующей строки целевой таблицы. Если же такой сегмент не был найден, то MapInfo:

Переходит к анализу следующей строки, если она геокодирует в автоматическом режиме.

Показывает пользователю самый похожий вариант (при геокодировании вручную). Пользователь сам подбирает правильный сегмент. Затем MapInfo переходит к следующей строке.

На этом этапе MapInfo наилучшим образом подбирает местоположение дома на улице. Напомним, что один из режимов (в диалоге “Варианты”) задает автоматический выбор наиболее близкого диапазона номеров при отсутствии точного совпадения — “Использовать ближайший адрес”. Например, Вы ищите дом с номером “412”, по ни один диапазон не содержит такой номер. Однако имеется диапазон от 346 до 400. Поскольку он ближе всего подходит к номеру 412, то MapInfo в этом режиме отнесет дом с номером 412 к диапазону 346-400.

Следующим шагом является анализ тех фрагментов адреса, которые относятся более чем к одной улице.

Сравнение областей. При геокодировании MapInfo проверяет, сколько одинаковых улиц содержится, в целевой таблице. Если более одной, то MapInfo должна выбирать, какой исходный адрес использовать. Если целевая таблица содержит столбец областей, MapInfo может уточнить геокодирование с учетом границ областей.

Предположим, например, что Вы геокодируете записи об Архангельской области. В базе данных имеется адрес “Ломоносова 12”. В Архангельской области расположено восемь городов. В четырех из них есть улица Ломоносова. На трех из этих четырех улиц имеется дом с номером 12. MapInfo должна сопоставить целевой адрес одному из городов. Для этого будет использована информация об областях: MapInfo сверит, в какой области лежит целевой адрес и в какой области лежит исходный адрес.

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

Можно использовать различные виды областей, включая города и почтовые индексы (ZIP-коды). Последний способ наиболее удобен для США, поскольку практически нее адреса включают почтовый индекс. Если Вам удастся подобрать какой-либо аналог ZIP-кодам, то многие задачи геокодирования могут решаться более эффективно.

Если Вы зададите уточнение поиска адресов по ZIP-коду или его аналогу, MapInfo будет сравнивать ZIP-код записи из целевой таблицы с ZIP-кодами в исходной таблице. При обнаружении совпадения процесс геокодирования заканчивается. MapInfo теперь может создать точку и целевой таблице на основании координат из исходной таблицы.

Однако для некоторых адресов соответствующие записи могут так и не быть найдены. Для таких записей можно задать соответствие в ручном режиме. При работе с большими базами данных, Вам, разумеется, хочется свести к минимуму ручную обработку. Повысить эффективность геокодирования можно и другими способами.

В диалоге “Варианты” можно указать, что MapInfo должна автоматически выбирать другую область, добиваясь таким образом ровно одного совпадения (режим “Использовать адрес, найденный в другой области”). Допустим, Вы геокодируете адреса в городе Архангельске. Один из адресов – “Ломоносова 12” - относится не к Архангельску, а к Сестрорецку и только к нему. В таком случае MapInfo геокодирует “Ломоносова 12” в Сестрорецке. Однако, если MapInfo найдет “Ломоносова 12” еще и, например, в Воркуте, этот адрес не будет вообще обработан.

Коды результата. При использовании кодов результата (для этого нужно заполнить окошко “Поместить результат в колонку” в диалоге “Варианты”) MapInfo будет для каждой записи вырабатывать код результата обработки. Эти коды содержат информацию о том, какие шаги геокодирования были выполнены MapInfo для данной записи, завершилось ли кодирование успехом и найдено ли точное соответствие. Коды результатов можно использовать для оценки параметров геокодирования. Вы сможете понять, что приводит к ложно-удачному кодированию, а что - к необработанным надписям.

Дата: 2019-12-10, просмотров: 367.