Формат обмена данными Mapinfo
В этом приложении описан формат обмена данными Mapinfo. В
частности, здесь описаны:
- Заголовок файла формата MIF.
- Секция данных в файлах формата MIF.
- Коды типов линий, штриховки, символов и шрифтов в файлах
формата MIF.
- Файл формата MID.
- Примеры файлов.
Этот универсальный формат позволяет сопоставлять различным
графическим элементам настраиваемые данные. MIF-файл является
текстовым (ASCII), поэтому файлы в таком формате можно
редактировать, достаточно легко генерировать, причем они будут
работать в любых системах, где работает Mapinfo. Возможно,
оптимальным способом изучения Mapinfo Interchange Format (MIF)
является просмотр примера, приведенного в конце этого приложения, по
ходу чтения описания формата. Вы можете также создать свои примеры,
экспортировав какие-нибудь файлы в формат MIF, а затем просматривать
их в текстовом редакторе.
Данные Mapinfo хранятся в двух файлах графическая информация
содержится в файлах с расширением .MIF, а текстовая в файлах с
расширением .MID. Каждая строка текстовых данных отделяется от
следующей строки либо символом возврата каретки (Carriage Return),
либо возврата каретки вместе с новой строкой (Line Feed), либо
только символом новой строки. MIF-файл состоит из двух частей:
заголовка и секции данных. Заголовок файла содержит информацию о
том, как создавать таблицы Mapinfo, а секция данных содержит
определения графических объектов.
Заголовок файла формата MIF
Заголовок файла формата MIF имеет следующий вид (в квадратные
скобки взята информация, которая может отсутствовать).
VERSION n
[ DELIMITER "<с>" ]
[ UNIQUE n,n.. ]
[ INDEX n, n.. ]
[ COORDSYS...]
[ TRANSFORM...]
COLUMNS n
<имя> <тип>
<имя> <тип>
.
.
.
Как было сказано выше, Вы должны указать, к какой версии MIF-
формата относится файл: VERSION 1 или VERSION 2. В версии Version 2
могут присутствовать предложения COORDSYS и TRANSFORM.
Delimiter (Разделитель)
Здесь в двойных кавычках указывается символ, использующийся в
качестве разделителя, например: DELIMITER ";". Стандартное значение
разделителя - символ табуляции; при использовании стандартного
разделителя строка DELIMITER может быть опущена.
Unique (Уникальная колонка)
Здесь задается число. Это число указывает на столбец в базе
данных: 3 указывает на третий столбец, 7 - на седьмой и так далее.
Что происходит со столбцами, перечисленными в списке UNIQUE?
Представим, например, что имеется база данных о шоссейных дорогах.
Каждому шоссе соответствует единственное название, но шоссе может
распадаться на несколько участков (которым сопоставлены отдельные
записи). Поместите столбец NAME в список UNIQUE, а столбец сегментов
не указывайте в этом списке. В результате будут созданы две
соединенные таблицы: таблица имен и таблица прочих атрибутов
объектов. Именно таким образом разрабатывались различные таблицы
улиц для Mapinfo (таблицы Streetinfo).
Index (Индекс)
Здесь задается число. Это число указывает на столбец в базе
данных: 3 указывает на третий столбец, 7 - на седьмой и так далее.
Для столбцов, перечисленных в списке INDEX, создаются индексы.
Предложение CoordSys (Координатная система)
Предложение COORDSYS задается для того, чтобы указать, что данные
хранятся HЕ в форме широты/долготы. Если предложение COORDSYS
отсутствует, то предполагается, что данные приведены в форме
широта/долгота.
Все координаты приводятся относительно северо-восточного
квадранта. Координаты объектов на территории США имеют отрицательную
координату X, а координаты объектов в России и Европе (к востоку от
Гринвича) имеют положительные координаты по оси X. Объектам в
северном полушарии соответствуют положительные координаты Y, а
объектам в южном полушарии - отрицательные координаты Y.
Предложение Transform (Преобразование)
Если в файле MIF записаны координаты относительно северо-
западного квадранта (квадрант 2), то Вы можете задать преобразование
этих координат к северо-восточному квадранту (квадрант 1) в
предложении Transform.
Квадрант 2: Квадрант 1:
Северо-западный квадрант Северо-восточный квадрант
Квадрант 3: Квадрант 4:
Юго-западный квадрант Юго-восточный квадрант
Данное предложение имеет следующую форму: TRANSFORM множительХ,
множительY, смещениеХ, смещениеY
Чтобы задать преобразование из данных по квадранту 2 в данные по
квадранту 1, задайте следующее предложение Transform:
TRANSFORM -1,0,0,0
Hули означают, что Mapinfo игнорирует данные параметры.
Если Вы работаете с программой, создающей файлы формата MIF с
координатами для квадранта 2, Вы можете:
- добавлять предложения TRANSFORM в файлы MIF;
- внести изменение в программу, чтобы она вырабатывала координаты
для квадранта 1;
- внести изменение в программу, чтобы она добавляла предложение
TRANSFORM в каждый MIF-файл.
Columns (Колонки)
Здесь задается число столбцов. Затем, для каждого столбца в
отдельной строке указывается название столбца, тип данных в нем, а
также размер поля (для столбцов, содержащих строки и десятичные
числа). Возможны следующие типы столбцов:
- char (длина поля)
- integer (4 байта)
- smallint (2 байта, так что допустимы числа в диапазоне от
-32767 до +32767)
- decimal (длина поля, число цифр после запятой)
- float
- data
- logical
Вот пример раздела столбцов в заголовке:
COLUMNS 3
STATE char (15)
POPULATION Integer
AREA decimal (8,4)
Файл MID должен содержать следующие три столбца данных, указанные
в заголовке:
столбец STATE: 15-символьное поле;
столбец POPULATION: поле целых чисел;
столбец AREA: поде десятичных чисел, состоящих из не более чем 8
цифр, в том числе из 4 цифр после запятой.
Секция данных в файлах формата MIF
Секция данных в файлах формата MIF следует после заголовка и
должна начинаться со слова DATA на отдельной строке:
DATA
Секция данных MIF-файла может содержать любое число графических
примитивов, по одному для каждого графического объекта. Mapinfo
сравнивает разделы файлов формата MIF и MID, сопоставляя первому
объекту в MIF-файле первую строку MID-файла, второму объекту MIF-
файла вторую строку MID-файла и так далее.
Если для строки MID-файла не найдено соответствующего
графического объекта, то создается "пустой" объект (NONE) в
соответствующей позиции MIF-файла.
NONE
Могут использоваться следующие графические объекты:
- точка
- линия
- ломаная
- область
- дуга
- текст
- прямоугольник
- скругленный прямоугольник
- эллипс
Объект типа точка имеет два параметра: координату Х и координату
Y. Может также быть указан вид символа, которым обозначается данная
точка. Для символа указывается номер. Если не задан символ, для
обозначения точки используется текущий символ.
POINT x у [ symbol (вид, цвет, размер)]
Объект типа линия должен иметь четыре обязательных параметра;
координаты Х и Y для двух концевых точек. Может также быть указан
тип линии. Если тип линии не задав, то используется текущий тип
линий.
LINE х1 у1 х2 у2 [ PEN (ширина, тип, цвет) ]
Для объекта типа ломаная должны быть заданы координаты Х и Y для
всех вершин ломаной. Число вершин (numpts) ломаной указывается после
ключевого слова PLINE. Может также быть указан тип линии и наличие
сглаживания. Если явно не указано, что ломаная сглажена (SMOOTH), то
предполагается, что она не сглажена.
PLINE numpts x1 y1 x2 y2
:
[ PEN (ширина, тип, цвет) ] [ SMOOTH ]
Объект типа область может состоять из одного или нескольких
многоугольников. Для каждого многоугольника должны быть указаны
координаты Х и Y всех вершин в таком виде:
nunpts список координат numpts2 список координат
Может также быть указан тип линий, штриховок и центроид области.
Указание центроида сокращает время импорта и экспорта.
REGION #pgons numpts1 x1 y1 x2 y2
numpts2 х1 у1 х2 y2
[ PEN (ширина, тип, цвет) ]
[ BRUSH (шаблон, основной_цвет, цвет_фона} ]
[ CENTER х у ]
Для объекта типа дуга должны быть указаны противоположные по
диагонали углы описанного прямоугольника, а также начальный (a) и
конечный (b) углы дуги в градусах, считая против хода часовой
стрелки (нуль в положении стрелки в 15.00). Может также быть указан
тип линии.
ARC x1 y1 х2 у2 а b [ PEN (ширина, тип, цвет) ]
Для текстового объекта должен быть указан собственно текст в
кавычках, а также противоположные углы описанного прямоугольника.
Может также быть задан шрифт.
text "<строка текста>" x1 у1 х2 у2
[ FONT...]
[ Spacing {1.011.512.0}]
[ Justify {Left | center | Right}]
[ Angle угол_поворота]
[ Label Line {simple | arrow} x у ]
Для прямоугольника задаются координаты его противоположных углов.
Может также
быть указан тип линий и штриховки.
RECT х1 у1 х2 у2
[ PEN (ширина, тип, цвет) ]
[ BRUSH (шабпон, основной_цвет, цвет_фона)]
Для скругленного прямоугольника задаются координаты его
противоположных углов, а также степень сглаживания (а). Может также
быть указан тип линий и штриховки.
Степень сглаживания выражается в координатных единицах.
ROUNDRECT X1 у1 х2 у2 а
[ PEN (ширина, тип, цвет) ]
[ BRUSH (шаблон, основной_цвет, цвет_фона} ]
Для эллипса задаются координаты противоположных углов описанного
прямоугольника.
Может также быть указан тип линий и штриховки.
ELLIPSE х1 у1 х2 у2
[ PEN (ширина, тип, цвет}]
[ BRUSH (.шаблон, основной_цвет, цвет_фона}]
Коды типов линий, штриховки, символов и шрифтов в файлах формата
MIF
Pen (Линия)
Pen задает ширину, тип и цвет линии в виде: PEN ( ширина, тип,
цвет)
Ширина задается числом от 0 до 7, тип - числом от 1 до 77. Hиже
приводится таблица, содержащая типы линий и их коды. Цвет задается в
виде 24-битового RGB значения.
Типы линий обозначаются кодами от 1 до 77. Эти типы приведены в
этой таблице:
> <<Таблица скип>>
Примечание: В таблице нет примера для типа с кодом 1. Тип номер
одни - это нулевая линия, отсутствие линии на рисунке.
Brush (Штриховка)
Brush задает шаблон, основной цвет и цвет фона: Brush (шаблон,
основной_цвет, цвет_фона)
Шаблон задается числом от 1 до 71. Hиже приводится таблица,
содержащая типы шаблонов и их коды. Цвет задается в виде 24-битового
RGB значения. В шаблоне с номером 1 оба цвета отсутствуют. В шаблоне
2 отсутствует цвет фона. В шаблонах 1 и 2 цвет фона считается
неопределенным.
> <<Таблица скип>>
Шаблоны с кодами 9-11 зарезервированы для внутренних целей.
Symbol (Символ)
Symbol задает вид, цвет и размер символа: SYMBOL (вид, цвет,
размер)
Вид символа задается в виде числа от 32 до 62. Цвет задается в
виде 24-битового RGB значения. Размер приводится в точках: от 1 до
48.
Формы символов и их коды приводятся в следующей таблице:
> <<Таблица скип>>
Font (Шрифт)
Font задает название шрифта, его стиль, размер, основной цвет и
цвет фона :
FONT ("название_шрифта", стиль, размер, основной_цвет [,цвет_фона])
Hазвание шрифта заключается в двойные кавычки. Стиль - это один
из атрибутов шрифта, приведенных в таблице ниже. Размер в файле MIF
должен быть равен 0. Основной цвет задается в виде 24-битового RGB
значения.
СТИЛЬ Bold Italic Underline
0
1 ВКЛ
2 ВКЛ
3 ВКЛ ВКЛ
4 ВКЛ
5 ВКЛ ВКЛ
6 ВКЛ ВКЛ
7 ВКЛ ВКЛ ВКЛ
Color (Цвет)
Color задает цвет объекта: Color: число
Цвета чаще всего задаются в долях красного, зеленого и синего
оттенков RGB. Каждому оттенку соответствуют номера от 0 до 255; RGB-
значение для цвета вычисляется по формуле:
(красный * 65536) + (зеленый * 256) + синий
Вот несколько наиболее часто используемых значений:
Красный: 16711680
Зеленый: 65280
Синий: 255
Голубой: 65535
Фиолетовый: 16711935
Желтый: 16776960
Черный: 0
Файл формата MID
Файл формата MID содержит записи, между которыми стоят
разделители, заданные в предложении Delimiter. Стандартный
разделитель - символ табуляции. Каждая строка в MID-файле
соответствует объекту в MIF-файле: первая строка соответствует
первому объекту, вторая строка второму объекту и так далее.
Если символ-разделитель является частью записи, заключите такую
запись в двойные кавычки.
Файл формата MID может отсутствовать. В этом случае создаются
пустые поля.
Примеры файлов
В приводимых файлах описаны объекты, показанные на рисунке ниже.
В этих файлах показаны различные возможные случаи описания объектов.
<<Рисунок скип>>
Hиже приводится текст MIF-файла для данной таблицы:
Version 2
Dellniter ","
CoordSys Earth Projection 1, 0
Columns 4
object_Name Char (15)
xcoord Decimal (10, 6)
YCOORD Decimal (10, 6)
AREA Decimal (10, 6)
Data
Rect -233.6424 22.648975 -171.655616 77.483407
Pen (1,2,0)
Brush (2,16777215,16777215)
Rect -123.973504 -34.569553 38.145664 22.648975
Pen (1,63,0)
Brush (2,16777215,16777215)
Rect -207.417216 44.105Э35 -207.417216 46.490063
Pen (1,2,0)
Brush (2,16777215,16777215)
Roundrect -140.662272 65.562895 -26.225152 129.933775 57.218544
Pen (1,2,0)
Brush (33,8421504,16777215)
Pline
15
-123.973504 139.470159
-216.953632 194.304591
-202.649024 137.086095
-271.788064 129.933775
-271.788064 60.794703
-324.238408 32.185423
-221.721856 -53.642385
-176.423872 -8.344369
-47.682176 -180.000001
-23.841024 -165.695361
2.384128 -184.768209
21.456896 -168.079473
66.754944 -191.920529
83.443712 -158.543041
33.377536 -89.403985
Pen (1,41,0)
Pline
14
52.450304 -84.635761
109.668864 -163.311265
123.973504 -113.245041
166.887424 -127.549665
154.966912 -84.635761
200.26496 -77.483441
176.423808 -44.105969
226.490112 -13.112593
185.96032 23.648975
269.403904 98.940367
245.56288 170.46356
181.193064 118.013199
319.47008 -17.880785
281.324544 -53.643385
Pen (1,75,12632356)
Line 54.834433 172.847631 54.834432 41.721807
Pen (1,2,0)
Line 73.907328 96.556239 73.907328 8.344335
Pen (1,2,0)
Line 92.980096 94.173175 93.980096 -29.801339
Pen (1,3,0)
Line 54.834432 41.721807 143.0464 41.721807
Pen (1,2,0)
Line 73.907328 8.344335 162.119168 8.344335
Pen (1,2,0)
Region 1
23
-300.397344 168.079439
-305.165568 82.251663
-348.079472 37.417331
-281.334512 -103.708625
-236.026496 -110.860913
-214.569536 -172.847681
-159.735104 -163.311265
-90.596033 -308.609373
164.503396 -313.377485
236.490113 -120.397345
307.549696 -110.860913
347.947008 -51.358289
178.807936 -156.158945
133.509888 -180.000001
109.668864 -163.311265
66.754944 -191.930529
-59.602624 -194.304633
-162.119232 -65.562929
-352.715232 -82.251665
-334.238408 32.185423
-281.324512 94.172175
-281.324512 191.920527
-300.397344 168.079439
Pen (1,2,0)
Brush (50,0,16777215)
Center -313.038531 -10.728479
Region 1
11
245.56288 170.463567
123.973504 132.317839
54.834432 172.847631
21.456896 144.238351
-38.145664 196.688719
26.225152 213.377423
97.748352 196.688719
123.973504 213.377423
166.687424 177.615887
231.25624 218.145679
245.5628B 170.463567
Pen (1,2,0)
Brush (48,0,12632256)
Center 103.708608 175.231759
Point -87.668352 -62.487047
Symbol (44,12632256,18)
Point -14.92224 -99.792743
Symbol (41,0,36)
Point 52.227968 -58.756487
Symbol (37,0,12)
Text "Образец"+chr$(10)+"нескольких"+chr$(10)+"строк текста"
-341.347152 -221.036271 -216.373056 -124.041447
Font ("Helve", 0,0,0)
Hиже приводится текст MID-файла для той же таблицы:
First Rectangle, -202.649000, 50.066191, 10415810.900000
Second Rect, -42.913920, -5.960289, 44044196.700000
,-307.417210, 45.297999, 0.000000
Rounded Rect,-83.443712,90.000000,0.000000
First Polyline,-112.053020,-90.000000,0.000000
Second Polyline,206.225216,4.768191,0.000000
1 line,54.834432,90.000000,0.000000
2 line, 73.907328,53.450287,0.000000
3 line,92.960096,32.185423,0.000000
4 line,98.940416,41.721807,0.000000
5 line,118.013248,8.344335,0.000000
First Polygon,-313.038530,-10.728479,46605467.800000
Second Polygon,103.708608,90.000000,0.000000
1 Symbol,-87.668352,-62.487047,0.000000
2 Symbol,-14.922240,-90.000000,0.000000
3 Symbol,52.227968,-58.756487,0.000000
First Text,-278.860100,-90.000000, 0.000000Описание формата MIF/MID
Сообщений 1 страница 10 из 10
Поделиться12007-12-18 14:58:58
Поделиться22007-12-26 16:56:20
MorAlex
А не подскажите..?
CoordSys Earth Projection 1, *,
1- type-положительное целое число, указывающее на координатную систему. А где можно посмотреть какая цифра какой координатной системе соответствует?
Заранее спасибо!
Поделиться32007-12-27 13:16:59
Cпециально для тебя
http://m0ralex.narod.ru/444.PDF
Поделиться42008-03-27 13:06:49
"Brush (Штриховка)
Brush задает шаблон, основной цвет и цвет фона: Brush (шаблон,
основной_цвет, цвет_фона)
Шаблон задается числом от 1 до 71. Hиже приводится таблица,
содержащая типы шаблонов и их коды."
Подскажите, пожалуйста, где можно увидеть эту таблицу.
Поделиться62008-03-28 12:54:39
Большое спасибо.
Поделиться72010-01-26 00:13:37
Здраствуйте.
1)Можно пожалуйста ссылки на документ с таблицами. ( Ссылки которые находяться выше приводят к пустой странице)
2)и еше вопрос:
MID файл:
1 строка
14954;61230000;линейный;"";"";1;"";"";"";"";"";"";1;5;"";"";"";"";"";"";"";
MIF файл:
1 объект
Pline 15
21.043236 50.000083
21.047859 49.996991
21.059078 49.994878
21.070450 49.993440
21.070489 49.992092
21.070621 49.987485
21.067511 49.974410
21.064186 49.968862
21.056078 49.966067
21.044445 49.952776
21.037173 49.945381
21.026084 49.943447
21.023473 49.943415
21.020691 49.943268
21.018780 49.943132
Pen (2,2,16776960)
я не вижу связи. В линии 15 точек, а в МИД фалйе для этого объекта на много больше полей.
3)Если не сложно, можно ссылку на документ с класификацие объектов, ( цифры коорые в МИД фале )
Поделиться82010-01-26 17:15:33
у MID фалйа заголовка нету.
Поделиться92012-12-06 16:52:58
Народ, подскажите, кто знает.
В Mapinfo есть возможность изменения системы координат. Например, сохранить копию и указать проекцию. Проекция выбирается из выпадающего списка, параметры этих проекций хранятся в файле mapinfo.prо
Теперь сам вопрос. Точней сначала суть. Хочу перейти от СК 42 к местной проекции Новосибирской области. Ключи перехода имеются. Один из параметров угол поворота осей. Куда его прописать? А еще лучше подскажите где посмотреть или расскажите структуру этого файла. Что за что отвечает
Пример
"GK зона 13 (Пулково 1942)\p28413", 8, 1001, 7, 75, 0, 1, 13500000, 0
"ххх"-название, как будет отображаться
8-тип проекции (поперечная Меркатора(Гаусса-Крюгера))
1001-система координат (Пулково 1942)
и тд..
как должна выглядеть строка для МСК 54 если имеется ширина координатной зона 3 градуса, х=а, у=б, уголповорота осей=с
Поделиться102012-12-10 04:09:46
сам в местных не работаю, советую посмотреть сайт.
http://www.mapbasic.ru/msk54