|
|
Приложение B: Техника геокодирования |
|
|
|
|
|
|
40 (+/-) |
Диапазон не задан, но подошел к минимальному диапазону |
|
|
|
|
|
|
50 (-) |
Улицы не пересекаются |
|
|
|
|
|
|
70 |
Пользователь выбрал адрес из списка |
|
|
|
|
|
|
Вторая цифра кода (десятки) показывает, как MapInfo обработала номер дома.
|
Уточняющие области |
100 (+/-) |
Диапазон найден в единственной области, которая отличается |
|
от заданной |
|
|
200 (-) |
Диапазон найден в нескольких областях, причем ни одна не |
|
совпадает с заданной |
|
|
300 (+/-) |
Область не задана, но диапазон содержится в единственной |
|
области |
|
|
400 (-) |
Область не задана и диапазон найден в нескольких областях |
|
|
500 |
Точный адрес найден более одного раза в заданной области |
|
|
600 |
Пользователь выбрал значение из списка |
|
|
1000000 |
Пользователь ввел новое значение |
(+/-) |
|
|
|
Третья цифра кода (сотни) показывает, как MapInfo обработала область.
Получив коды результатов, Вы можете проанализировать с помощью команды SQL- ЗАПРОС, сколько записей не было обработано по каждому значению кода отдельно:
Выбрать колонки: |
Result_Code, count(*) |
из таблиц: |
SomeData |
Сгруппировать по: |
Result_Code |
|
|
Будет получена таблица запроса, каждому значению кода в которой будет соответствовать отдельная строка: в ней будет указано значение кода и число записей, получивших этот код. Командой ВЫБРАТЬ èëè SQL-ЗАПРОС можно выбрать все записи с определенным кодом. Эти выборки затем можно просматривать, чтобы решить, каким способом геокодировать каждый класс необработанных записей.
Примеры кодов
675 Пользователь выбрал название улицы, диапазон и область.
101 Найдено точное совпадение в единственной области, отличающейся от заданной.
Приложение C: Преобразование файлов MI
DOS â MI äëÿ Windows
MAP2MIF и BDY2MIF – это вспомогательные программы, преобразующие файлы MapInfo для DOS в формат MapInfo для Windows. MAP2MIF и BDY2MIF преобразуют файл карт (Mapfiles) и файлы границ (Boundary) программы MapInfo для DOS в файлы формата MIF, которые можно импортировать в MapInfo для Windows.
Преобразование файлов MapInfo из DOS в Windows состоит из двух этапов:
∙преобразование файлов типа Mapfile программой MAP2MIF;
∙преобразование файлов типа Boundary программой BDY2MIF.
Обе эти вспомогательные программы переводят файлы в формат обмена данных MapInfo (MIF).
Хотя цвета преобразуются корректно, бывают случаи, когда в другой системе лучше использовать другие цвета. Например, стандартный фон в MapInfo для DOS – черный, а в MapInfo для Windows – белый.
MAP2MIF
MAP2MIF преобразует файл карт (Mapfile) для DOS в формат MIF. Все сегменты в Mapfile преобразуются в объекты типа LINE в файле формата MIF.
Таблица в файле формата MIF содержит шесть полей: Street, FromLeft, FromRight, ToLeft, ToRight и Type (или Primary).
Street char(40) – название улицы. Тип и направление улицы берутся из MapInfo.
FromLeft smallint – первый адрес по левой стороне в начале сегмента.
FromRight smallint – первый адрес по правой стороне в начале сегмента.
ToLeft smallint – первый адрес по левой стороне в конце сегмента.
ToRight smallint – первый адрес по правой стороне в конце сегмента.
Type smallint – тип улицы, то есть код улицы из Mapfile.
Поле Street содержит уникальные значения и индексируется, чтобы по нему можно было вести сравнение адресов.
Стандартными являются следующие типы линий и цвета улиц, железных дорог, рек и границ:
∙Улицы (0): черный;
∙Железные дороги (1): красный пунктирный;
∙Реки (2): синий;
∙Границы (3): зеленый.
Чтобы задать другие значения, используйте режим /MD. Тип линий и цвета улиц с отрицательным типом преобразуются с помощью файла индивидуальных настроек (personality) и таблицы цветов.
Приложение C: Преобразование файлов MI DOS в MI для Windows
BDY2MIF
BDY2MIF преобразует файл границ (Boundary) MapInfo для DOS в формат MIF. Замкнутые границы переводятся в объекты типа REGION, незамкнутые – в один или несколько объектов PLINE, а границам, не имеющим ни одного сегмента, не сопоставляется никаких графических объектов. Для ускорения преобразования можно применить режим /NC, но только если Вы уверены, что все границы замкнуты.
Таблица в MIF-файле содержит два поля: Name char(?) и Id integer.
Name char – название границы. Стандартное название в этом поле – "Name". Чтобы задать свое имя, используйте режим /N. Например, если файл границ содержит зоны действия почтовых индексов, можно назвать границы "ZIP".
Длина этого поля – это максимальная длина названий границ в файле границ, округленная до ближайшего числа, кратного пяти. Чтобы задать другую длину поля, используйте режим /NW.
Id integer – код границы.
Поле названий индексируется. Тип границ и штриховок преобразуется с учетом файла индивидуальных настроек (personality) и таблицы цветов.
Как пользоваться MAP2MIF и BDY2MIF
Командные строки имеют следующий вид:
MAP2MIF mapfile [MIF/MID-file]
[/A:файл_сокращений]
[/M:множитель]
[/P:файл_инд_настроек]
[/MD:шоссе,железные_дороги,реки,границы]
[/RGB:таблица_цветов]
[/NBW]
BDY2MIF boundary-file [MIF/MID-file] [/M:множитель]
[/NC]
[/N:название] [/NW:длина_названия] [/P:файл_инд_настроек] [/RGB:таблица_цветов]
Приложение C: Преобразование файлов MI DOS в MI для Windows
[/NBW]
Режимы MAP2MIF и BDY2MIF
/M:множитель
Задает множитель, который надо применять к координатам из MapInfo для DOS. Стандартный множитель для всех данных MapInfo – 1000000. Указывая другой множитель в этом режиме, Вы можете создавать данные иного вида.
/P:файл_инд_настроек
Задает файл индивидуальных настроек, который будет использоваться для преобразования кодов цветов, линий и штриховок. Стандартный файл индивидуальных настроек – MAPINFO.PER.
Если в MapInfo для DOS использовался другой файл индивидуальных настроек, то его следует указать и в командной строке MAP2MIF и BDY2MIF.
/RGB:таблица_цветов
Задает таблицу цветов, которая будет использоваться для перевода кодов цветов в файле индивидуальных настроек в комбинации оттенков красного/зеленого/синего в формате MIF. Формат таблицы цветов одинаков для MAP2MIF и BDY2MIF. Стандартная таблица цветов (для MIF) – 2MIF.RGB – отличается от стандартной таблицы цветов для MapInfo для DOS COLORS.RGB. Отношение красного/зеленого/синего, используемое в MapInfo для DOS, не дает точно таких же цветов в графических системах.
Если в MapInfo для DOS Вы использовали другую таблицу цветов, то может понадобиться создание измененной версии для корректного преобразования цветов.
/NBW
Сообщает MAP2MIF и BDY2MIF, что не надо переключаться с черного цвета на белый. Этот режим следует применять, если Вы использовали нестандартный файл индивидуальных настроек, в котором установили белый цвет фона.
Вот аргументы программы MAP2MIF:
/A:файл_сокращений
Задает файл сокращений, в котором вводятся сокращенные названия типов и направления улиц. Используется, если Вы работали с нестандартным файлом сокращений в MapInfo для DOS.
/MD:
Задает индивидуальные коды для улиц, железных дорог, рек и границ соответственно (Номера строк в файле индивидуальных настроек, то есть коды улиц 0-3). Между
Приложение C: Преобразование файлов MI DOS в MI для Windows
четырьмя кодами не допускается наличие пробелов, они разделяются запятыми. Например:
/MD:5,37,13,3
Это значит, что MAP2MIF должна использовать код 5 для улиц, 37 – для железных дорог, 13 – для рек и 3 – для границ.
Далее приводятся аргументы программы BDY2MIF:
/NC
Указывает BDY2MIF, что не надо проверять замкнутость границ. Хотя это ускоряет работу BDY2MIF, имеется риск автоматического замыкания незамкнутых границ неопределенным образом при использовании данного режима.
/N:название
задает название для поля границ (например, ZIP или City).
/NW:длина_названия
задает длину поля названия. Стандартная длина поля определяется BDY2MIF как самое длинное название в файле границ, округленное до ближайшего числа, кратного пяти.
Приложение D: Создание выражений
Процесс составления выражений MapInfo похож на то, как мы пишем предложения на родном языке. В нашем распоряжении есть набор слов, которые можно использовать, и синтаксические правила для соединения этих слов. Синтаксис выражений MapInfo гораздо проще синтаксиса русского языка. Правила русского языка кажутся нам простыми только потому, что мы пользуемся им постоянно, а правила составления выражений могут только на первых порах показаться сложными.
Впрочем, как и предложения русского языка, выражения в MapInfo можно сделать весьма сложными. Если Вы не освоились с созданием сложных выражений, все равно возможности, предоставляемые простыми выражениями, создаваемыми в диалогах команд MapInfo, позволяют управлять данными вполне профессионально.
Составление выражений
Простые выражения
Выражение составляются с использованием названий колонок (или полей) и констант (то есть постоянных значений), а также функций и операторов. Названия колонок и константы можно сравнить с существительными, а функции и операторы – с глаголами, предлогами и союзами. В любом выражении всегда должно присутствовать хотя бы одно название колонки или хотя бы одна константа. Количество функций и операторов зависит от Ваших нужд и фантазии.
Простейшие возможные выражения состоят из названий колонок, например
1.ÍÀÑ_1990
2.ОБЛАСТЬ
Такие выражения Вы можете использовать в команде ВЫДЕЛИТЬ УСЛОВНО, чтобы указать, какие данные должны быть отображены на карте. В команде ОБНОВИТЬ КОЛОНКУ подобное выражение задает данные, которые следует использовать при пересчете таблицы.
Чуть более сложными являются выражения:
3ÍÀÑ_1990 > 17893
4.ÍÀÑ_1990 <= ÍÀÑ_1980
5.ОБЛАСТЬ <> "Выхино"
6.ÍÀÑ_1980 * 1.2
7.НАС_1990 / ПЛОЩАДЬ
8.round(НАС_1990 / ПЛОЩАДЬ, .1)
Приложение D: Создание выражений
Первые три из них используют оператор сравнения. Первое выражение задает проверку: было ли в 1990 году население больше (>) заданной константы (17893). Второе проверяет, какие значения в колонке НАС_1990 меньше или равны (<=) значениям из другой колонки – НАС_1980. Третье проверяет, относится ли запись к области Выхино. Если название области не равно (<>) “Выхино”, то запись попадает в выборку. Такие выражения могут быть применены в команде ВЫБРАТЬ или в окошке Ñ
условием команды SQL-ЗАПРОС. Эти команды делают выборку записей из таблицы, удовлетворяющих заданному выражению.
Примеры 6 и 7 используют арифметические операторы. В примере 6 значения в колонке НАС_1980 умножаются (*) на константу (1.2), а в примере 7 значения из одной колонки (НАС_1990) делятся на значения из другой колонки (ПЛОЩАДЬ).
В примере 8 применена функция округления, округляющая значение выражения “НАС_1990 / ПЛОЩАДЬ” до ближайшей десятой доли (.1).
Выражения 6, 7 и 8 не содержат операторов сравнения и поэтому не могут быть использованы в команде ВЫБРАТЬ или в окошке С условием команды SQL-ЗАПРОС. Однако Вы можете применить их в командах ВЫДЕЛИТЬ УСЛОВНО, Обновить колонку или в окошке Выбрать колонки команды SQL-ЗАПРОС.
Сложные выражения
Теперь рассмотрим примеры 9 и 10, более сложнее, чем 1-8:
9.ÍÀÑ_1990 > ÍÀÑ_1980*1.2
10.round((НАС_1980*1.2) / ПЛОЩАДЬ, .1)
Мы создали выражение 9, взяв выражение 3 и заменив константу “17893” выражением 6. Аналогично, выражение 10 получено из выражения 8 заменой названия “НАС_1990” выражением 6.
Таким образом, сложные выражения получаются путем комбинации простых выражений. Возможно, лучшим способом изучения сложных выражений будет для Вас составление сложных выражений из примеров, которые приведены выше и будут еще рассмотрены в этом приложении. Сложные выражения создаются в основном двумя способами:
∙Заменой названия колонки или константы на простое выражение.
∙Соединением выражений с помощью логических операторов (and, not, or). Пример 9 показывает первый способ, а о логических выражениях речь пойдет ниже.
Задание постоянных значений (констант)
При употреблении в выражениях фиксированных значений – строк, числовых констант и дат – Вы должны следовать следующим соглашениям.
Строки символов
Если Вы употребляете в выражении строку символов, то эта строка должна быть заключена в двойные кавычки. Таким образом MapInfo отличает строки символов от
Приложение D: Создание выражений
названий колонок. Например, строки 11 и 12 из приведенных ниже являются строками-константами, а 13 и 14 – не являются.
11."Яблоко"
12."Новый Орлеан"
13.Яблоко
14.Новый Орлеан
Числа
При задании числовых констант не набирайте запятые или знак доллара. Допустимы только цифры, десятичная точка, используемая как разделитель целой и дробной части, и знак “минус” для отрицательных чисел.
Äàòû
Даты состоят из месяца, дня и, возможно, года. Год обозначается двумя или четырьмя цифрами. Вся дата заключается в двойные кавычки, причем месяцы, дни и годы отделяются друг от друга знаками тире или наклонной чертой (/). Вот примеры допустимых дат, обозначающих первое января:
15."1-20-94"
16."01/20/1994"
17."1/20"
Операторы
Математические операторы:
+ |
сложение |
A + B |
|
|
|
- |
вычитание |
A – B (вычитание) |
|
|
-A (отрицательное число) |
|
|
|
* |
умножение |
A * B |
|
|
|
/ |
деление |
A / B |
|
|
|
^ |
возведение в степень |
A ^ B |
|
|
|
Разрешаются также следующие виды вычислений:
∙Прибавление числа к дате с получением новой даты.
∙Вычитание числа из даты с получением новой даты.
∙Вычитание даты из даты с получением числа.
Приложение D: Создание выражений
При прибавлении чисел к датам или вычитании чисел из дат, MapInfo считает числа номером дня в месяце. Так, для вычитания или прибавления недели надо использовать число 7, а для вычитания или прибавления месяца – числа 30 или 31. При вычитании даты из даты результат содержит количество дней.
Строчный оператор:
+“склейка” — соединение строк или строковых выражений.
Строки должны быть заключены в двойные кавычки. Рассмотрим, например:
"Ms. " + Фамилия
При вычислении значения этого выражения MapInfo поставит “Ms. ” перед каждым значением фамилии. Строковая константа (“Ms. “) взята в двойные кавычки. Аналогично,
"Здравствуй, " + "мир"
дает “Здравствуй, мир”, а
”4”+”5”
дает строку “45.”
Операторы сравнения:
=“равно”
>“больше”
<“меньше”
>= |
“больше или равно” |
<= |
“меньше или равно” |
Сравнение чисел
Числовое сравнение основано на сравнении значений числовых выражений и числовых констант.
Русский: Все данные о домовладельцах, чей доход больше 65 000.
18.ДВ_ДОХОД>65000
Комментарий: Не используйте знак доллара или запятые! MapInfo не обрабатывает их и выдаст сообщение об ошибке.
Русский: Записи, где средний возраст равен 42.
19.СРЕД_ВОЗРАСТ=42
Комментарий: Это выражение задает выбор только тех записей, в которых средний возраст в точности равен 42 годам. Если же колонка данных о среднем возрасте