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

Проблемы с сокращениями и подстановками. Целевая таблица может содержать компоненты адресов, которые отсутствуют в файле сокращений MapInfo. Например:

  Лишняя точка.
Suite Квартира Нет таких слов.
WK ЮВАО Нет таких слов.
#1 Нет таких слов.

 

Решить подобные проблемы можно одним из двух способов:

Исправить адрес в целевой таблице, чтобы MapInfo понимала его элементы.

Исправить файл сокращений MapInfo, чтобы с его помощью можно было обрабатывать адреса целевой таблицы.

Но многих случаях второй метод проще. Файл сокращений MapInfo (см. ниже) состоит из пар элементов. Второй элемент является сокращением от первого. При обработке файлов описания улиц MapInfo проводит поиск целевых адресов, содержащих один из первых элементов пар файла сокращений. Если найден такой элемент, он заменяется соответствующим сокращением.

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

Класс подстановок Ключевое слово
Простая подстановка, ограниченная пробелами !SPACE
Сокращение после знака !EOLNOSPACE
Сокращение после пробела !EOLSPACE
Удаление !NOSPACE

 

Чтобы MapInfo знала, как обрабатывать различные строки в файле сокращений, перед каждой группой инструкций должно быть указано ключевое слово.

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

Простая подстановка, ограниченная пробелами. Этот класс подстановок является стандартным в MapInfo. Он обрабатывается следующим образом: MapInfo сравнивает лексемы, ограниченные пробелами, в целевых адресах со строками файла адресов. Под лексемой, ограниченной пробелами, понимается строка символов, перед которой и после которой стоит пробел. Например, MapInfo заменит “Ave” на “Av” в названии “Park Ave”, но не заменит “Avery Blvd” на “Avry Blvd”. Оба названия улиц содержат строку “Ave”. Но эта строка ограничена пробелами только в “Park Ave”, но не в “Avery Blvd”. В “Avery Blvd”, после “Ave” следует буква “r”, а не пробел.

Данная интерпретация является стандартной для всех строк файла сокращений. Можно добавлять элементы, имеющие такой же смысл. Например, можно добавить пару “ПРОСПЕКТ ПРОСП”,

чтобы MapInfo считала, что строка “ПРОСП” в целевых адресах означает “ПРОСПЕКТ”. Аналогично можно добавить такую пару, как: “ПРОЕЗД ПР”.

Для обозначения группы строк, представляющих собой простые подстановки, ограниченные пробелами, используется ключевое слово “ISPACE”. Строки после “ISPACE” задают стандартные инструкции и могут располагаться в пределах своей группы как угодно. Когда MapInfo находит другое ключевое слово, она переключается на другую интерпретацию строк.

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

123 Appian Way, Mail Stop 829

7305 Van Zandt # 23

Ленинский проспект 100, квартира 100

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

! EOLNOSPACE

"!NOSPACE" - это ключевое слово, показывающее, что после него следуют элементы, которые следует удалить. Приведенные примеры примут вид:

369 VanRensselaer

91 St Albans

Примечание: дефис в классе NOSPACE может конфликтовать с адресами типа "1-ая улица Текстильщиков".

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

• в начале строки

• между искомой строкой и подстановкой

• и в конце строки.

Например, можно подставлять “STHWY” вместо “State Highway”. Для этого следует задать строку: “State Highway “STHWY”

Подобным образом можно решить проблемы со сложными названиями, элементы которых имеются в файле сокращений. Например, начальные строки “North St” и “Park Av” содержатся в файле сокращений. Следовательно, MapInfo подставит “N” вместо “North” и получит “N St”, а вместо “Pk” – “Park” и получит “Pk Av”. Теперь в файл сокращений можно добавить следующие строки:

“N ST “North ST”

“PK AV “PARK AV”

Отметим, что эти строки должны следовать после строк подстановок для “N” в “North” и “РК”.

Теперь при обработке NORTH N MapInfo будет преобразовывать NORTH ST в N ST. А при обработке “N ST “NORTH ST” - она будет преобразовывать N ST в NORTH ST. PARK AV преобразуется аналогично.

Специальные символы. MapInfo использует специальным образом восклицательный знак (!), двойные кавычки (") и обратную наклонную черту (\). Эти символы указывают MapInfo, как обрабатывать дальнейшие строки, но сами по себе не являются строками подстановок. Восклицательный знак указывает, что данная строка не является сокращением. Двойные кавычки обозначают наличие допустимого пробела в строке подстановки. А наклонная черта сообщает, что в данный момент специальный символ надо считать обычным символом.

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

\! \" \\

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

Файл сокращений представляет собой текстовый (ASCII) файл с названием MAPINFOW.ABB в Windows, MapInfo.Abbreviation в Macintosh. Его можно менять в любом текстовом редакторе, в том

числе добавлять новые строки и ключевые слова.

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

При ручном геокодировании MapInfo откроет диалоговое окно со списком близких вариантов.

Пролистайте список с помощью кнопок “Вверх” и “Вниз” и выберите нужное название.

•   Отредактируйте целевую таблицу.

Если Вы полагаете, что целевая таблица содержит слишком много ошибок, лучше отредактировать ее перед геокодированием с помощью команды ОБНОВИТЬ КОЛОНКУ.

Источником ошибки может быть простая опечатка в написании названия в исходной таблице.

•   Измените название улицы в исходной таблице.

У улицы есть другое название, или название изменилось. Для некоторых улиц используются два разных названия. Таблицы StreetInfo содержат только одно из них. Но адреса в Вашей таблице могут быть приведены в двух вариантах или не в том, которых учтен в таблице MapInfo.

Подобная проблема возникает, когда меняют название улицы. На карте будет показано старое название, поэтому адреса с новым названием не будут геокодированы. Можно изменить название на карте, но тогда адреса со старым вариантом названия “повиснут в воздухе”. Нам хотелось бы работать со всеми адресами.

Для этого можно добавить новую строку в файл названий улиц:

1 .Откройте файл filename2.TAB— файл стандарта StreetInfo названий для карты улиц (а не файл сегментов).

2. Найдите строку с названием улицы, для которой нужно ввести еще одно название, и запомните значение кода MI_REFNUM.

3. Добавьте новую строку с другим названием улицы и тем же кодом MI_REFNUM.

4. Сохраните и закройте файл.

Теперь при геокодировании MapInfo будет обрабатывать оба названия.

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

· Можно установить режим “Использовать ближайший адрес” в диалоге “Варианты”. Тогда MapInfo будет геокодировать подобные записи по ближайшему имеющемуся диапазону, относя запись к середине этого диапазона.

или

· Можно обрабатывать такие случаи в ручном режиме. MapInfo выдаст список имеющихся диапазонов. Выберите нужный диапазон из списка или нажмите кнопку “Пропустить”, чтобы оставить запись необработанной.

или

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

Абонентские ящики. Таблицы StreetInfo не содержат данных об абонентских ящиках или других нестандартных элементах адреса. Если Ваша база данных содержит такие данные, то ее нельзя геокодировать на основании таблицы StreetInfo. Нужно провести геокодирование другим способом.

Например, если Ваша таблица содержит много адресов с указанием абонентских ящиков, можно выбрать все такие записи и геокодировать их по почтовым индексам. А затем оставшиеся записи геокодировать по полным Адресам.

Чтобы выделить адреса содержащие номера абонентских ящиков, можно ориентироваться на наличие слова “box”. С помощью функции MapInfo InString$ можно выбрать все записи, содержащие подстроку “Box”. Обратите внимание на пробелы по обе стороны от слова “box”. Это гарантирует, что MapInfo не включит в выборку такие, например, адреса, как Boxwood Street. Командой выбрать или SQL-запрос выберите все записи, удовлетворяющие критерию

InString$ (1, ADDRESS, “ BOX “) > 0

Число “1” означает, что MapInfo должна искать данную подстроку, начиная с первого символа. “ADDRESS”, указывает на столбец, содержащий адреса, “ BOX “ - это искомая подстрока. Если MapInfo находит “ BOX “ в адресе, функция возвращает номер позиции, с которой начинается подстрока “ BОХ “. Это означает, что в любой записи, для которой InString$ больше нуля, адрес содержит “ Box “.

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

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

Возьмем, например, адрес "Невский проспект 50, Ленинград", который относится на самом деле к городу Санкт-Петербургу. Поскольку целевой адрес использует название, отличающееся от названия в исходной таблице, эта запись не будет геокодирована.

Можно установить режим "Использовать адрес, найденный в другой области" в диалоге "Варианты". В этом режиме MapInfo закодирует адрес по той области, к которой адрес действительно относится (если его можно отнести к единственной области). Если же адрес можно отнести к более чем одной области, запись не будет геокодирована.

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

Геокодирование и русский язык. Для геокодирования на русском языке необходимо проделать следующие шаги:

1. В диалоге команды правка “Настройки” нажать на кнопку “Страна”. В отрывшемся диалоге выбрать режим “Номера домов после названия улиц”.

2. Задать своп файл сокращений MAPINFO.ABB, используя правила, описанные выше, либо воспользоваться файлом сокращений MI-RU-S. ABB, переименовав его в MAPINFO.ABB.

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

Адреса задаются в следующем стиле, is каком они приведены в Справочнике "Улицы Москвы": Имя_улицы Прилагательное_имя Тип_улицы Номер_дома

где:

Имя_улицы - это собственно название улицы;

Прилагательное_имя - это слова тина “Верхняя”, “Нижняя”, Большая”, “Малая”, “Первая” и т.д.

Тип_улицы - это проезд, проспект, шоссе и т.д. Само слово “улица” можно не применять.

Номер_дома - число без дробей.

Чем меньше запятых, точек, дефисов и прочих небуквенно-цифровых символов будет в адресе, тем меньше вероятность ошибок в геокодировании.

Файл сокращений можно дополнить парами типа: ПЛОЩАДЬ  ПЛ

ШОССЕ      Ш

ТУПИК       ТУП

и т.д.

Классы !EOLNOSPACE, !EOLSPACE и !NOSPACE можно также дополнить сообразуясь с правилами, описанными выше.

Таким образом, можно гарантировать геокодирование адресов типа: “Ленинский проспект 100”, “Энтузиастов шоссе 40”, “Беговая 36” “Масловка верхняя 39”.

Если в классе сокращений !EOLNOSPACE задана запятая, то можно автоматически геокодировать

адреса типа

“Ленинский проспект 100, Москва”,

“Энтузиастом шоссе 40, Пете Иванову”,

“Беговая 36, фирма ЭСТИ”,

 

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

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

1.Адрес найден в другой области: 100

2.Не найден подходящий диапазон номеров: 20

3.Сделана подстановка из файла сокращений: 2.

Ниже в таблицах объяснены значения каждого элемента кода.

500 Точный адрес найден более одного раза в заданной области
600 Пользователь выбрал значение из списка
1000000 (+/-) Пользователь ввёл новое значение

 

Третья цифра кода (сотни) показывает, как MapInfo обработала область.

Получив коды результатов, Вы можете проанализировать с помощью команды SQL-ЗАПРОС, сколько записей не было обработано по каждому значению кода отдельно:

Выбрать колонки Result_Code, count(*)
Из таблицы SomeData
Сгруппировать по Result_Code

 

Будет получена таблица запроса, каждому значению кода в которой будет соответствовать отдельная строка: в ней будет указано значение кода и число записей, получивших этот код. Командой выбрать или SQL-ЗАПРОС можно выбрать все записи с определенным кодом. Эти выборки затем можно просматривать, чтобы решить, каким способом геокодировать каждый класс необработанных записей.

Примеры кодов

675 Пользователь выбрал название улицы, диапазон и область.

101 Найдено точное совпадение в единственной области, отличающейся от заданной.

Общие правила

<0 Не найдено соответствие
0 Поиск ещё не проводился
1 Точное совпадение
>1 Неполное совпадение

Коды результатов разработаны таким образом, чтобы при отсутствии совпадений они имели отрицательное значение, а в случае совпадения - положительное. Если запись еще не обрабатывалась, ей соответствует нулевой код.

Название улицы

1 Найдено точное совпадение
2 Найден диапазон, но не определена сторона улицы
3 (-) Точное совпадение не найдено
4 (-) Улица не указана
5 Пользователь выбрал название из списка

 

Первая цифра кода показывает, как MapInfo обработала название улицы.

Диапазон номеров

000 Найден подходящий диапазон и сторона улицы
10 Найден диапазон, но не определена сторона улицы
20 (+/-) Диапазон не найден, но номер лежит между минимальным и максимальным значениями
30 (+/-) Диапазон не найден, номер лежит вне диапазона, между минимальным и максимальным значениями
40 (+/-) Диапазон не задан, но подошёл к минимальному диапазону
50 (-) Улицы не пересекаются
70 Пользователь выбрал адрес из списка

 

Вторая цифра кода (десятки) показывает, как MapInfo обработала номер дома.

Уточняющие области

100 (+/-) Диапазон найден в единственной области, которая отличается от заданной
200 (-) Диапазон найден в нескольких областях, причём ни одна не совпадает с заданной
300 (+/-) Область не задана, но диапазон содержится в единственной области
400 (-) Область не задана, и диапазон найден в нескольких областях

ВОПРОСЫ К ДОМАШНЕМУ ЗАДАНИЮ

1. Что такое геокодирование?

2. Какие геокодирования вы знаете?

3. Как происходит процесс геокодирования в ручном режиме?

4. Как происходит процесс геокодирования в автоматическом режиме?

5. Какие методы геокодирования вы знаете?

 

 

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