Файл формата MIF представляет собой текстовый файл, в котором содержатся графические данные (объекты), а также может содержаться описание таблицы данных, содержащей атрибутивную информацию, связанную с объектами.
Имеется ряд существенных отличий в структурах данных MapInfo и ObjectLand, и эти отличия должны учитываться при импорте.
В MapInfo отсутствует понятие типа объектов, поэтому с точки зрения ObjectLand все объекты из одного MIF-файла могут различаться лишь своим геометрическим типом.
Каждый площадной объект MapInfo относится к одной из стандартных форм, таких как полигон, эллипс (и как частный случай – окружность), прямоугольник и прямоугольник со скругленными углами. При импорте все эти формы преобразуются в полигоны, причем дуги окружностей и эллипсов аппроксимируются полилиниями. Аналогичным образом, такие имеющиеся в MapInfo формы линейных объектов, как линия (представляющая собой одиночный отрезок прямой), полилиния и дуга, при импорте становятся полилиниями.
Линейный объект MapInfo может состоять из нескольких секций-полилиний, а площадной объект – из нескольких секций-полигонов. При импорте каждая секция преобразуется в отдельный объект. Если для сложного объекта MapInfo имелась связанная с ним запись таблицы, то эта связь будет установлена для каждого из объектов-частей.
С площадным объектом – полигоном MapInfo может быть связана точка, именуемая центроидом и представляющая собой рассчитанный автоматически или заданный в явном виде центр данного полигона. В ObjectLand нет понятия центроида, однако при импорте предоставляется возможность импортировать центроиды как отдельный точечный тип объектов.
Описание объекта в MIF-файле может включать указание стиля отображения этого объекта, задаваемое в виде номера стандартной заливки, линии, символа MapInfo, а также цвета фона и цвета переднего плана. При импорте в ObjectLand информация о стилях игнорируется.
Описание структуры связанной таблицы атрибутивных данных, содержащееся в MIF-файле, включает имена полей данных, их типы и размеры. Для полей могут быть также указаны атрибут «Уникальное» и атрибут «Индексированное» (аналогичный атрибуту «Ключевое» в ObjectLand).
Сами табличные данные содержатся в необязательном файле с расширением MID. Имя MID-файла должно совпадать с именем соответствующего MIF-файла. Поля записей отделяются друг от друга с помощью символа-разделителя, заданного в MIF-файле. Соответствие между объектами, описанными в MIF-файле, и записями MID-файла устанавливается по порядку следования в файлах. Таким образом, каждому объекту обязательно ставится в соответствие одна строка MID-файла, содержащая запись об этом объекте. Допускаются пустые строки MID-файла, означающие отсутствие табличной информации о соответствующем объекте. Если некоторые записи таблицы не связаны ни с каким объектом, то в MIF-файле используется специальный фиктивный объект «None».
В табл. 64-1 приведен список типов полей, использующихся в файлах формата MID, и соответствующие им при импорте типы полей таблиц ObjectLand.
Тип поля MID-файла | Тип поля таблицы ObjectLand |
Целое (Integer) | Целое |
Короткое целое (Smallint) | Целое |
Десятичное без дробной части (Decimal) | Целое |
Десятичное с дробной частью (Decimal) | Вещественное |
Вещественное (Float) | Вещественное |
Дата (Date) | Дата |
Строка (Char) | Строка |
Логическое (Logical) | Логическое |
Табл. 64-1. Соответствие типов полей при импорте из MID-файлов
Как видно из таблицы, в основном имеется естественное соответствие между типами полей MID и ObjectLand. Наиболее заметное различие связано с обработкой полей типа «decimal», которые могут представлять как целые, так и вещественные числа, в зависимости от числа цифр «после запятой», заданного в описании поля. Кроме того, для строковых полей ObjectLand не ограничивается ширина поля, т.е. максимально допустимая длина строки. В связи с этим игнорируется указание ширины строковых полей MID-файла.
Подробное описание формата MIF- и MID-файлов приводится в руководствах по системе MapInfo.