MIF文件的源代码

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

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

代码
Version n  
Charset "characterSetName"  
[ DELIMITER "
<c>" ]  
[ UNIQUE n,n.. ]  
[ INDEX n,n.. ]  
[ COORDSYS... ]  
[ TRANSFORM... ]  
COLUMNS n  
<name> <type>  
<name> <type>  
…  
…  
DATA  

 

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

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

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

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

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

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

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

  POINT x y
  [SYMBOL (shape, color, size)]

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

  LINE x1 y1 x2 y2
  [PEN (width, pattern, color)]

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

posted on 2010-07-11 10:32  Xuemin_Zhang  阅读(752)  评论(0编辑  收藏  举报