这种通用的格式允许把普通的数据添加到多种的图像元素中。MIF/MID文件采用ASCII编码,因此它是可编辑的、相对比较容易生成、并且可以工作在MapInfo支持的所有平台上。也许理解MIF格式的最好的方法是在读完这篇文章后,拿着MIF格式说明,研究一个MIF文件。你也可以通过“exporting files to MIF”创建你自己的MIF文件,然后在文本编辑器中好好的研究它。
MapInfo数据存在于两种文件中--图形数据存储在.MIF文件、文本数据存储在.MID文件。文本数据包括每一项记录的一行和回车,回车加换行,行之间的换行。MIF文件的数据包括两部分--文件头和数据区。文件头存放着如何创建MapInfo表格的信息;数据区存放着图形对象的解释。
下面是MIF文件头的描述(包括可选项,下表中由“[ ]”括起来的部分就是可选项)。
Version n
Charset “characterSetName”
[ DELIMITER “” ]
[ UNIQUE n,n… ]
[ INDEX n,n… ]
[ COORDSYS… ]
[ TRANSFORM… ]
COLUMNS n
…
…
DATA
1.Version 版本号
“Version”说明你使用的MIF格式的版本(VERSION 1, VERSION 2, VERSION 300中的一种)。Version 300,引自Mapinfo 3.0,允许形容由多段组成的折线对象。
2.Charset 字符集
“Charset”指定表中创建文本所使用的字符集。比如说:"WindowsLatin1"说明文件使用的是the Windows US & Western Europe字符集;"MacRoman"说明文件使用的是the Macintosh US & Western Europe字符集;或者,注明"Neutral"是为了防止将文本转成了另外的字符集。如果你没有使用其中任何一个字符集,你可以通过exporting a table和examining the .MIF file in a text editor为你的字符集指定正确的语法。
3.Delimiter 分隔符
指定引号(即""或者’')之间的分隔符,比如说:
DELIMITER “;”
默认的分隔符是Tab;如果你使用的是默认分隔符,你不需要“DELIMITER”这一行。
4.Unique
指定一个数字。这个数字指定一个数据库的列;3是第三列,7是第七列,以此类推。发生在UNIQUE指定的列上的事情是微妙的。比如说,想象一下你建立一个高速公路的数据库。每一条路都只有一个名字,但是在每一路段中都会把名字重写一遍。这时你会把NAME这一列放在一个单独的表中,而包含每个路段的信息的其他列不会放在那个表中。这样就可以创建两个相关的表格:一个NAME表,一个包含其他信息。This is how MapInfo’s various street maps(StreetInfo) are prepared.
5.Index 索引
“Index”指明表中已经建立索引的列,“INDEX”项包括一个数字(或者一系列数字)。每一个数字指定一个数据库的列;3是第三列,7是第七列,以此类推。在“INDEX”表中指定的列会建立索引。
6.CoordSys
指定“COORDSYS”项表示数据不是以经纬度的形式存储的。当没有指定“COORDSYS”这一项时,数据被认为是以经纬度的方式存储。All coordinates are stored with respectto the northeast quadrant.。 在美国的点的x坐标为负而在欧洲的点(Greenwich以东)的坐标为正。在北半球的点的y坐标为正而在南半球的点的坐标为负。
7.Transform 转换
你可以通过“Transform”实现地理元素的坐标转换。
| Quadrant 2: | Quadrant 1: |
| Nortwest Quadrant | Norteast Quadrant |
| Quadrant 3: | Quadrant 4: |
| Southwest Quadrant | Southeast Quadrant |
8.Columns 列
指定列数。然后,为每一列,建立一行(包括the column name、the column type、一个用来指定域长度的数字–仅为character和decimal类型的列建立)用来说明其格式。有效的列类型包括:
char(width)
integer [说明:which is 4 bytes, from -2^31 to 2^31-1]
smallint [说明:which is 2 bytes, so it can only store numbers between -32767 and +32767)]
decimal (width, decimals)
float
date
logical
下面是mif文件头的COLUMNS部分的一个例子:
STATE char (15)
POPULATION integer
AREA decimal (8,4)
通过上面指定的数据库,我们知道对应的MID文件有三列:
列名 列类型
STATE char(15) 15位长的字符串
POPULATION INTGER 整型
AREA decimal(8,4) 一个最长8位、小数点后有4位的小数
MIF文件的“data”部分紧跟着文件头并且必须由一个单行“DATA”引出:
DATA
MIF文件的数据部分可以包括任意长度的图形变量,其中每一项对映着一个图形对象。MapInfo自动使MIF和MID文件里面的每一条相一致,比如说:MIF文件的第一个object对应着MID文件的第一行,MIF文件的第二个object对应着MID文件的第二行。
当MIF文件中没有图形对象与MID文件的行对应时,一个“blank”对象必须写在MIF文件中相应的位置。
NONE
图形对象可以被指定为如下几种类型:
point //点
line //线
polyline //折线
region //区域
arc //弧
text //文本
rectangle //矩形
rounded rectangle //圆矩(即4个角做“钝化”处理的矩形)
ellipse //椭圆