MapInfo中MIF文件和MID文件的格式

本文详细介绍了MapInfo中的MIF和MID文件格式。MIF文件用于存储地图对象的空间信息,如点、线、区域的位置和样式;MID文件则存储与之对应的属性信息。文章通过实例讲解了这两种文件的结构与内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MapInfo中MIF文件和MID文件的格式  




MIF是Mapinfo用来向外交换数据的一种中间交换文件。当用户在Mapinfo中将一张Mapinfo地图表以MIF格式转出来MIF文件中后,Mapinfo会同时在用户指定的保存目录下生成两个文件(*.mif,*.mid)。其中*.mif文件保存了该Mapinfo表的表结构及表中所有空间对象的空间信息(如:每个点对象的符号样式、点位坐标;每个线对象的线样式、节点数据、节点坐标;区域对象的填充模式、每个区域包含的子区域个数及每个区域的节点数、节点数等)。而*.mid文件则按记录顺序保存了每个空间对象的所有属性信息。这两个文件都为文本性质的文件,用户可以通过相应的文件读写方法实现对文件内容的读写。


MapInfo数据在两个文件中——图形保存在.MIF文件中而文本数据包含在.MID文件中。文本数据是分界数据,每行一个记录以及行间的回车,或者回车加换行,或者换行。MIF文件有两个区域—文件头区域和数据节。有关如何创建MapInfo表的信息保存在文件头中;图形对象定义保存在数据节中。


这是一个MIF文件头的说明,方括号内是可选信息。(MIF File header格式)


Version n


Charset"characterSetName"


[DELIMITER"<c>"]


[UNIQUE n,n..]


[INDEX n,n..]


[COORDSYS...]


[TRANSFORM...]


COLUMNS n


<name><type>


<name><type>








DATA


v Version子句说明您所使用的是VERSION 1、VERSION 2、VERSION 300还是VERSION 450格式。


v Charset子句指定在表中创建文本时使用的字符集。


v Delimiter在引号中指定分隔符,缺省情况下,分隔符是TAB键;如果使用缺省值,则无需DELIMITER行。


v Unique(唯一)指定一个号码。这个号码指示数据库的一列;


v Index(索引)要指出表中的列有索引,可以在Index子句中引入一个号码(或一系列用逗号分隔的号码)。每个号码代表数据库的一列;INDEX列表中的列将有附录为它们制作的索引。


v CoordSys(坐标系统)子句指定COORDSYS子句以注明数据不是以经度/纬度形式保存的。未指定COORDSYS子句时,假定数据是以经度/纬度形式保存的。所有坐标都是以相对于东北象限的值保存的。(其中一些参数设置比较复杂)


v Columns(列)指定列数。然后为每列创建一行,它包含列名、列类型,对于字符列和小数列,还包含一个指示字段宽度的数。


有效的列类型是:


l char(宽度)


l integer(4个字节)


l smallint(2个字节,因此只能存储从-32767到+32767的数)


l decimal(宽度,小数位数)


l float


l date


l logical


MIF文件的数据节在文件头之后,且必须由DATA以单独的一行引入:


DATA


MIF文件的数据节可以有任意多个图形初值,每个初值代表一个图形对象。MapInfo使MIF和MID文件中的条目相互匹配,MIF文件中的第一个对象与MID文件中的第一行关联,MIF文件中的第二个对象与MID文件中的第二行关联,依此类推。如果MID文件中特定的一行没有对应的图形对象,那么必须在MIF文件中的相应位置上写一个“空白”对象(NONE)以保留该位置。


NONE


可以指定的图形对象为:


l点(point)


l直线(line)


l折线(polyline)


l区域(region)


l圆弧(arc)


l文本(text)


l矩形(rectangle)


l圆角矩形(rounded rectangle)


l椭圆(ellipse)


u 一个点(point)对象需要两个参数:一个X坐标和一个Y坐标。作为一个选项,可以设定代表该点的symbol(符号)。symbol是用数字标明的。如果忽略了SYMBOL子句,则使用当前symbol。


? POINT x y


〔SYMBOL(shape,color,size)〕


u 一个直线(line)对象需要四个参数;每个端点各一个X坐标和一个Y坐标。作为一个选项,可以指定pen类型。如果没有指定pen类型,则使用当前pen类型。


? LINE x1 y1 x2 y2


〔PEN(width,pattern,color)〕


u 一个折线(polyline)对象由一节或多节构成。如果该折线不止一节,则应包含MULTIPLE关键字,并在其后写明节数。为每节设定一个numpts参数(该参数指出该节中节点的数量),其后为每个节点的x/y坐标对。用可选的PEN子句(本附录稍后说明)来指定线样式。如果包含了可选的SMOOTH关键字,则折线被平滑。


? PLINE〔MULTIPLE numsections〕


numpts1


x1 y1


x2 y2


:


〔numpts2


x1 y1


x2 y2〕


:


〔PEN(width,pattern,color)〕


〔SMOOTH〕


u 一个区域(region)对象由一个或多个多边形构成。用numpolygons参数设定多边形数量(紧跟在REGION关键字后面)。为每个多边形设定一个numpts参数(该参数指出该多边形中节点的数量),其后为每个节点的x/y坐标对。用可选的PEN和BRUSH子句(本附录稍后说明)指定该对象的样式。用可选的CENTER子句来精确定义该对象的中心位置。中心必须位于对象内。


? REGION numpolygons


numpts1


x1 y1


x2 y2


:


〔numpts2


x1 y1


x2 y2〕


:


〔PEN(width,pattern,color)〕


〔BRUSH(pattern,forecolor,backcolor)〕


〔CENTER x y〕


u 一个圆弧(arc)需要其外接矩形的对角位置以及该圆弧的起点(a)和终点(b)的角度,其中角度以度的形式表示,以时钟上三点钟处为零点反时针移动。作为一个选项,可以指定pen类型。(一段圆弧指定了一个椭圆的一段,圆弧的两角由外接矩形确定。)


? ARC x1 y1 x2 y2


a b


〔PEN(width,pattern,color)〕


u 一个文本(text)对象由一个文本字符串构成,不超过255个字符。要使文本字符串换行成多行,可在textstring参数内插入字符\n(例如“第一行\n第二行\n第三行”)。x1、y1、x2和y2指定了文本在地图上的位置。间隔可以是1.0(单间距)、1.5或2.0(双间距)。用Font子句来控制字体等等。


? TEXT"textstring"


x1 y1 x2 y2


〔FONT...〕


〔Spacing{1.0|1.5|2.0}〕


〔Justify{Left|Center|Right}〕


〔Angle text_angle〕


〔Label Line{simple|arrow}x y〕


u 一个矩形(rectangle)需要一对对角的坐标。作为选项,可以指定pen和brush类型。


? RECT x1 y1 x2 y2


〔PEN(width,pattern,color)〕


〔BRUSH(pattern,forecolor,backcolor)〕


u 一个圆角矩形(rounded rectangle)需要一对对角的坐标和圆的角度(a)。作为选项,可以指定pen和brush类型。圆角的角度用坐标单位表示。


? ROUNDRECT x1 y1 x2 y2


a


〔PEN(width,pattern,color)〕


〔BRUSH(pattern,forecolor,backcolor)〕


u 一个椭圆(ellipse)对象需要其外接矩形的一对对角的坐标。作为选项,可以指定pen和brush类型。


? ELLIPSE x1 y1 x2 y2


〔PEN(width,pattern,color)〕


〔BRUSH(pattern,forecolor,backcolor)〕


? Pen样式


Pen子句设定诸如直线、折线或圆弧此类的线性对象的宽度、图案和颜色。Pen子句有如下语法:PEN(width,pattern,color)


v Width是从1到7的一个数。1-7是屏幕象素的宽度。11-2047是要转换为点的数值:penwidth=(点数*10)+100只有在针对不可见的线,笔模式为1时才有效。


v color是一个整数,表示一个24位的RGB颜色值。


v Pattern是一个从1到118的整数,模式号为1时可见。模式号和画笔文件中画笔号相对应。可以用画笔编辑器来编辑画笔文件。


有效的画笔号是从1到画笔文件中最大的画笔号,应该不超过127。如果一个画笔样式是交叠的,就增加128作为其画笔号。交叠样式在129-255范围之内。由于画笔文件可以修改,而且交叠也可以指定,所以画笔模式可以是1-255之间的数。


? Brush样式


Brush设定诸如圆或区域这样的填充对象的图案、前景颜色和背景颜色。Brush子句语法:Brush(pattern,forecolor〔,backcolor〕)


v forecolor(前景颜色)和backcolor(背景颜色)参数都是整数,代表24位RGB颜色值。


v pattern(图案)是一个1到71之间的数。注意:1号图案是“不填充”而2号图案是纯色填充。


? Symbol样式


Symbol子句设定一个点对象的外观。Symbol子句有三种格式。要设定一种使用“Old MapInfoSymbols”(MapInfo早期版本使用的符号)的Symbol样式,使用如下语法:SYMBOL(shape,color,size)


v shape(形状)参数是一个整数值、31或更大;31代表空白symbol(即该对象是不可见的)。标准symbol集合包括32到67号symbol,但用户可以用Symbol应用程序来自定义symbol集合。


v color(颜色)参数是一个整数,代表一个24位RGB颜色值。


v size(大小)参数是一个1到48之间的整数,代表点的尺寸。


Symbol子句——TrueType字体语法


要设定一个基于TrueType字体的字符的Symbol样式,使用如下语法:SYMBOL(shape,color,size,fontname,fontstyle,rotation)


v fontname(字体名称)参数是一个文本字符串,指明一个字体的名称(例如“Wingdings”)。


v fontstyle(字体样式)参数是一个控制样式设置(例如粗体)的整数。


Symbol子句——自定义位图文件语法


要设定基于自定义位图文件的symbol样式,使用语法:SYMBOL(filename,color,size,customstyle)


filename(文件名)参数是一个文本字符串,它标明了CustSymb目录中的一个位图文件(例如“Arrow.BMP”)。customstyle(自定义样式)参数是一个整数,控制是否使用颜色和背景属性。


? Font样式


Font子句设定文本对象的外观(字体、颜色等)。Font子句有如下语法:FONT("fontname",style,size,forecolor〔,backcolor〕)


v 双引号内的fontname(字体名称)是被显示的字体。


v style(样式)是字体的文本属性。


v MIF文件中的size(大小)必须是0,因为一幅地图上的文本对象是附加到该地图上的(这样在放大或缩小时文本尺寸改变)。


v forecolor(前景颜色)是一个整数,代表一种24位RGB颜色。


v backcolor(背景颜色)是可选的;如果包含了它,则MapInfo在文本背后的区域中填充指定的颜色。


? 颜色


颜色通常是以红、绿和蓝色的相对浓度来定义的。其中每种颜色是一个0到255包括0和255之间的数;各种颜色的RGB值由以下公式计算:(红色*65536)+(绿色*256)+蓝色


这里是一些常用颜色及其数值:


红色:16711680


绿色:65280


蓝色:255


青色:65535


紫红:16711935


黄色:16776960


黑色:0


例:点数据:


对于每个点数据,有2行,第1行以Point开始,后为一对坐标数据,随后一行以Symbol开始,后为符号的颜色。


Version 300


Charset "WindowsSimpChinese"


Delimiter ","


CoordSys Earth Projection 9, 104, "m", 110, 25, 15, 40, 3800000, 2500000 Bounds (-16525939.2309, -5282952.71727) (24125939.2309, 35368925.7445)


Columns 2


  B Char(14)


  Airport Char(50)


Data


Point 3799847.11 4256235.84


    Symbol (52,255,9) 


Point 4361454.72 4215838.54


    Symbol (52,255,9) 


Point 1930374.19 4795129.64


Symbol (52,255,9) 


线数据:


数据体中包括两种类型的线,一种为无分叉的折线,PLINE后为该线的点数,随后是每个点的坐标(每个点1行);另一种为有分叉的折线,如有支流的河流,这些支流可组合在一起作为一个线对象。后一类型以PLINE MULTIPLE为标志,后跟折线数,如PLINE MULTIPLE 5表示该线对象有5条折线组成,随后为每条折线的点数和点坐标。


VERSION 300


DELIMITER ","


 CoordSys Earth Projection 1, 0                                                                                                                                                                         


COLUMNS 2


    NAME char(40)


    SYSTEM char(40)


DATA


PLINE 6


124.006782531738 56.4725761413574


123.259559631348 56.6561851501465


123.846519470215 57.5234107971191


123.695121765137 57.6445198059082


124.068733215332 57.799243927002


123.951789855957 58.1575736999512


PLINE MULTIPLE 5


5


-61.2772979736328 -3.60705971717834


-60.6846580505371 -3.53694128990173


-60.4775352478027 -3.28227639198303


-59.9512214660645 -3.26529860496521


-59.6999473571777 -3.08533358573914


3


-58.5025100708008 -3.27193522453308


-59.4667854309082 -3.006098985672


-59.6999473571777 -3.08533358573914


4


-67.7270431518555 -3.05758810043335


-67.7542037963867 -3.28567099571228


-69.1090316772461 -3.43507599830627


-69.295783996582 -4.03608798980713


6


-64.5731887817383 -3.14008784294128


-63.9511756896973 -3.63880848884583


-62.8917655944824 -4.00213241577148


-62.1821022033691 -3.621830701828


-61.6456031799316 -3.88328766822815


-61.2772979736328 -3.60705971717834


7


-67.7270431518555 -3.05758810043335


-67.1396102905273 -2.50809073448181


-66.487663269043 -2.64391398429871


-66.3450546264648 -2.35189652442932


-66.1277389526367 -2.50809073448181


-65.9477767944336 -2.3485004901886


-65.2475891113281 -2.59628462791443


多边形数据:


多边形数据体以Region开头,后跟该多边形对象的多边形个数,然后是每个多边形的点数和各点的坐标。每个多边形对象后,可以有Pen、Brush和Center等数据,也可以没有。


Version 300


Charset "WindowsSimpChinese"


Delimiter ","


CoordSys Earth Projection 12, 62, "m", 0 Bounds (0,0) (500,500)


Columns 2


  Polygon Char(10)


  High Decimal(5, 0)


Data


Region  1


5


250   64


360  125


250  233


162  125


250   64


    Pen (1,2,0) 


    Brush (16,65280,16777215)


    Center 250  130


Region  2


5


250 99


297 125


250 172


213 125


250 99


5


250 117 


265 125


250 140


238 125


250 117


    Pen (1,2,0) 


    Brush (16,65280,16777215)


    Center 250  130


MID文件


MID文件存放表格数据,项目数与类型要与MIF文件中的定义对应。如上例,在MIF文件中有:


Columns 2


  Polygon Char(10)


  High Decimal(5, 0)


则MID文件内容可为:


" 多边形1", 450


"多边形2",350


"多边形34",250

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值