Опис обмінного формату mapinfo mif (mapinfo interchange format) - glab - 2018
Навряд чи це робиться зі злого наміру. Ранні версії документації були оформлені (з об'єктивних причин) вкрай ненаглядно і мало кому вдавалося дочитати до «Програми J» на 500-якійсь сторінці. Не кажучи вже про те, щоб візуально запам'ятати цей текст. А, починаючи з версії 8.0 цього розділу взагалі зник з «Керівництва» і повернувся тільки в версії 12.0, правда, істотно перероблений і не настільки наочний.
Спробуємо виправити становище, скомпілювавши потрібні глави «Керівництва Користувача» від різних версій.
У цій статті описаний формат обміну даними MapInfo MID / MIF.
Дані MapInfo зберігаються в двох файлах: графічна інформація міститься в файлах з розширенням MIF, а текстова - в файлах з розширенням MID. Кожен рядок текстових даних відділяється від наступного рядка або символом повернення каретки (Carriage Return), або символом повернення каретки разом з новим рядком (Line Feed), або тільки символом нового рядка. MIF-файл складається з двох частин: заголовка і секції даних. Тема файлу містить інформацію про те, як створювати таблиці MapInfo, а секція даних містить визначення графічних об'єктів.
Тема файлу формату MIF
Тема файлу формату MIF має такий вигляд (у квадратних дужках взята інформація, яка може бути відсутнім).
VERSION n
CharSet "char_set"
[DELIMITER "<с>"]
[UNIQUE n, n. ]
[INDEX n, n. ]
[COORDSYS. ]
[TRANSFORM. ]
COLUMNS n
<имя> <тип>
<имя> <тип>
Пропозиція Version (Версія)
Для правильної обробки MIF-файлу MapInfo необхідно знати, в якій версії програми він був створений. Номер версії задається пропозицією VERSION:
VERSION 1 або VERSION 2 або VERSION 300 або VERSION 450 і так далі.
- MIF-файл завжди зберігається з номером версії 300, якщо інше не задано у вихідній таблиці.
- Після того, як таблиця одного разу була оновлена на новішу версію, MapInfo Professional ніколи не знижує номер її версії на менше значення, навіть коли характеристика, яка викликала оновлення, видалена.
- Параметри Pen (0,0,0) і Brush (0,0,0), які можна було використовувати в таблицях MapInfo Professional 4.1, заборонені в MapInfo Professional 4.5 і пізніших версіях.
- Товщина лінії, задана пропозицією Pen, відповідає зазначеному значенню, помноженому на 10, плюс 10 (.2 → 12, 1.0 → 20, і т. П.). При цьому в заголовку MIF-файлу номер версії змінюється на 450.
Всі зміни (та їх наслідки) в TAB- і MIF-файлах, робочих наборах та інших службових файлах MapInfo Professional перераховані у відповідній таблиці Додатка D «Керівництва Користувача» MapInfo версії 12.5.
Пропозиція CharSet (Набір символів)
У реченні CharSet вказується, набір символів який кодової сторінки використовується в таблиці. Наприклад, «WindowsLatin1» означає, що використовується стандартна для США і Західної Європи кодова сторінка Windows (так звана «ANSI кодування» або «кодова сторінка тисячі двісті п'ятьдесят-одна»); «WindowsCyrillic» позначає стандартний дляУкаіни набір символів Windows (кодова сторінка 1252); «MacRoman» позначає стандартний набір символів Macintosh US Western Europe. Якщо вказати слово «Neutral», то MapInfo не виконуватиме перетворення символів в поточну кодову сторінку Windows.
Пропозиція Delimiter (Роздільник)
Тут в подвійних лапках вказується символ, що використовується як роздільник, наприклад:
Стандартне значення роздільник - символ табуляції; при використанні стандартного роздільник рядок DELIMITER може бути опущена.
Пропозиція Unique (Унікальна колонка)
Тут задається число. Це число вказує на стовпець в базі даних: 3 вказує на третій стовпець, 7 - на сьомий і так далі. Що відбувається за допомогою стовпців, перерахованими в списку UNIQUE? Уявімо, наприклад, що є база даних про шосейних дорогах. Кожному шосе відповідає єдине назва, але шосе може розпадатися на декілька ділянок (яким зіставлені окремі записи). Помістіть стовпець NAME в список UNIQUE, а стовпець сегментів не вказуйте в цьому списку. В результаті будуть створені дві з'єднані таблиці: таблиця імен та таблиця інших атрибутів об'єктів. Саме таким чином розроблялися різні таблиці вулиць для Pitney Bowes Software Inc. (Таблиці StreetPro).
Пропозиція Index (Індекс)
Числа, зазначені в цій пропозиції, являють собою номера тих колонок таблиці, для яких визначені індекси. При цьому колонки нумеруються, починаючи з одиниці так, що число 3 означає, що індекс визначений для третьої колонки, число 7 - для сьомий і т.д. Колонки в списку INDEX будуть пронумеровані відповідно до цими числами.
Пропозиція CoordSys (Координатна система)
Пропозиція COORDSYS задається для того, щоб вказати, що дані зберігаються НЕ в проекції широти / Довготи. Якщо пропозиція COORDSYS відсутня, то передбачається, що дані наведені в проекції Широта / Довгота.
Всі координати наводяться щодо північно-східного квадранта. Координати об'єктів на території США мають негативну координату X, а координати об'єктів вУкаіни і Європі (на схід від Грінвіча) мають позитивні координати по осі X. Об'єктам в північній півкулі відповідають позитивні координати Y, а об'єктам в південній півкулі - негативні координати Y.
Синтаксис запису пропозиції CoordSys:
CoordSys Earth
[Projection type, datum, unitname
[. origin_longitude]
[. origin_latitude]
[. standard_parallel_1 [. standard_parallel_2]]
[. azimuth]
[. scale_factor]
[. false_easting]
[. false_northing]
[. range]]
[Affine Units unitname, A, B C, D, E, F]
[Bounds (minx, miny) (maxx, maxy)]
CoordSys Nonearth
[Affine Units unitname, A, B C, D, E, F]
Units unitname
Bounds (minx, miny) (maxx, maxy)
CoordSys Layout Units paperunitname
CoordSys Table tablename
CoordSys Window window_id
- type - позитивне ціле число. що показує, яка координатна система використовується;
- datum - позитивне ціле число. вказує який регіон використовується;
- unitname - строкова величина, що показує, які одиниці вимірювання використовуються (наприклад, "m" для метрів);
- origin_longitude - дійсне число, в градусах, що показує довготу;
- origin_latitude - дійсне число, в градусах, що показує широту;
- standard_parallel_1 і standard_parallel_2 - речові значення широти, в градусах;
- azimuth - речова величина, кут вимірювання в градусах;
- scale_factor - речова величина, масштабний множник;
- range - речова величина, від 1 до 180, відповідно до якої, яка частина земної поверхні буде показана;
- minx - речова величина, яка визначає мінімальне значення x;
- miny - речова величина, яка визначає мінімальне значення y;
- maxx - речова величина, яка визначає максимальне значення x;
- maxy - речова величина, яка визначає максимальне значення y;
- paperunitname - строкова величина, що представляє "паперові" одиниці виміру (наприклад. "in" для дюймів);
- tablename - ім'я відкритої таблиці;
- window_id - ціла величина, ідентифікатор вікна, соотнесенного з вікном Карти або Звіту;
- A представляє масштабування або розтягнення уздовж осі X.
- B являє поворот або відхилення уздовж осі X.
- C являє зрушення уздовж осі X.
- D являє масштабування або розтягнення уздовж осі Y.
- E являє поворот або відхилення уздовж осі Y.
- F являє зрушення уздовж осі Y.
Пропозиція Transform (Перетворення)
Якщо у файлі MIF записані координати щодо північно-західного квадранта (квадрант 2), то Ви можете задати перетворення цих координат до північно-східного квадранту (квадрант 1) в реченні Transform.
Квадрант 2:
Північно-західний квадрант
Квадрант 1:
Північно-східний квадрант
Щоб скомбінувати два і більше ефекту, числа потрібно скласти. Щоб, наприклад, поставити жирний шрифт з тінню, слід задати число 33.
Аргумент rotation - це число з плаваючою точкою, кут повороту в градусах.
Пропозиція Symbol. Синтаксис для растрових символів
Для того, щоб оформити растрові символи, слід використовувати наступну форму пропозиції Symbol:
SYMBOL (filename, color, size, customstyle)
Аргумент filename визначає назву реєстрового файлу (наприклад, «Arrow.BMP») в каталозі CUSTSYMB.
Аргумент customstyle - це ціле число, що управляє кольором символу і його фону:
Прапорці «Фон» і «Пофарбувати одним кольором» не встановлені. Символ показується стандартно. Всі білі точки зображення стають прозорими і під ними видно об'єкти Карти.
Встановлено прапорець «Фон». Всі білі точки зображення стають непрозорими.
Встановлено прапорець «Пофарбувати одним кольором». Все не білі точки зображення фарбуються в колір символу.
Встановлено прапорці «Фон» і «Пофарбувати одним кольором».
Пропозиція Font (шрифт)
Пропозиція Font визначає режими подання текстових об'єктів (шрифт, колір і т.д.). синтаксис:
FONT (fontname, style, size. Forecolor [. Backcolor])
- fontname - ім'я шрифту, строкова величина (наприклад. "Arial");
- style - чисельне вираження, в результаті якого виходить позитивне ціле число;
- size - розмір шрифту, ціле число;
- forecolor - колір символів шрифту в системі RGB;
- backcolor - колір фону або облямівки в системі RGB.
Назва шрифту полягає в подвійні лапки. Великі та малі літери для цього параметра розрізняються. Стиль - це один з атрибутів шрифту, наведених у таблиці нижче. Розмір в файлі MIF має дорівнювати 0 для підписів у вікні Карти, так як вони є атрибутами Карти і їх розмір визначається динамічно. Основний колір задається 24- бітових RGB-значенням. Колір фону задавати необов'язково. Щоб зробити фон прозорим, задайте значення, рівне -1.
Пропозиція Color (колір)
Color задає колір об'єкта:
Кольори найчастіше задаються в частках червоного, зеленого і синього кольорів RGB. Кожному відтінку відповідають номери від 0 до 255; RGB-значення для кольору обчислюється за формулою:
(Червоний * 65536) + (Зелений * 256) + синій
Ось кілька найбільш часто використовуваних значень:
- Червоний: 16711680
- Зелений: 65280
- Синій: 255
- Блакитний: 65535
- Фіолетовий: 16711935
- Жовтий: 16776960
- Чорний: 0
Файл формату MID
Файл формату MID містить записи, між якими стоять роздільники, задані в реченні Delimiter. Стандартний роздільник - символ табуляції. Кожен рядок в MID-файлі відповідає об'єкту в MIF-файл: перший рядок відповідає першому об'єкту, другий рядок - другому об'єкту і так далі.
Якщо символ-роздільник є частиною запису, укладіть такий запис в подвійні лапки.
Файл формату MID може бути відсутнім. У цьому випадку створюються порожні поля.