相關信息
簡介
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
分析
Version 子句說明您所使用的是VERSION 1、VERSION 2、VERSION 300還是VERSION 450 格式。
Charset 子句指定在表中創建文本時使用的字元集。
Delimiter 在引號中指定分隔設定,預設情況下,分隔設定是TAB鍵;如果使用預設值,則無需DELIMITER行。
Unique(唯一) 指定一個號碼。這個號碼指示資料庫的一列;
Index(索引) 要指出表中的列有索引,可以在Index子句中引入一個號碼(或一系列用逗號分隔的號碼)。每個號碼代表資料庫的一列;INDEX 列表中的列將有附錄為它們製作的索引。
CoordSys(坐標系統)子句 指定COORDSYS子句以註明數據不是以經度/緯度形式保存的。未指定COORDSYS子句時,假定數據是以經度/緯度形式保存的。所有坐標都是以相對於東北象限的值保存的。(
其中一些參數設定比較複雜)
Columns(列) 指定列數。然後為每列創建一行,它包含列名、列類型,對於字元列和小數列,還包含一個指示欄位寬度的數。
MIF檔案的數據節在檔案頭之後,且必須由DATA 以單獨的一行引入:
DATA
MIF檔案的數據節可以有任意多個圖形初值,每個初值代表一個圖形對象。MapInfo使MIF和MID 檔案中的條目相互匹配, MIF檔案中的第一個對象與MID檔案中的第一行關聯, MIF檔案中的第二個對象與MID 檔案中的第二行關聯,依此類推。如果MID 檔案中特定的一行沒有對應的圖形對象,那么必須在MIF 檔案中的相應位置上寫一個“空白”對象(NONE)以保留該位置:
NONE
列類型
有效的列類型是
l char(寬度)
l integer(4 個位元組)
l smallint(2 個位元組,因此只能存儲從-32767 到+32767 的數)
l decimal(寬度,小數位數)
l float
l date
l logical
圖形對象類型
可以指定的圖形對象為
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 關鍵字,則折線被平滑。
PLINE 〔 MULTIPLE numsections 〕
numpts1
x1 y1
x2 y2
:
〔 numpts2
x1 y1
x2 y2 〕
:
〔 PEN (width, pattern, color)〕
〔 SMOOTH 〕
區域
一個區域(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 〕
圓弧
一個圓弧(arc)需要其外接矩形的對角位置以及該圓弧的起點(a)和終點(b)的角度,其中角度以度的形式表示,以時鐘上三點鐘處為零點反時針移動。作為一個選項,可以指定pen類型。(一段圓弧指定了一個橢圓的一段,圓弧的兩角由外接矩形確定。)
ARC x1 y1 x2 y2
a b
〔 PEN (width, pattern, color)〕
文本
一個文本(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 〕
矩形
一個矩形(rectangle)需要一對對角的坐標。作為選項,可以指定pen和brush類型。
RECT x1 y1 x2 y2
〔 PEN (width, pattern, color)〕
〔 BRUSH (pattern, forecolor, backcolor)〕
圓角矩形
一個圓角矩形(rounded rectangle)需要一對對角的坐標和圓的角度(a)。作為選項,可以指定pen 和brush
類型。圓角的角度用坐標單位表示。
ROUNDRECT x1 y1 x2 y2
a
〔 PEN (width, pattern, color)〕
〔 BRUSH (pattern, forecolor, backcolor)〕
橢圓
一個橢圓(ellipse)對象需要其外接矩形的一對對角的坐標。作為選項,可以指定pen 和brush類型。
ELLIPSE x1 y1 x2 y2
〔 PEN (width, pattern, color)〕
〔 BRUSH (pattern, forecolor, backcolor)〕
相關樣式
Pen樣式
Pen 子句設定諸如直線、折線或圓弧此類的線性對象的寬度、圖案和顏色。
Pen 子句有如下語法:
PEN (width, pattern, color)
Width 是從1 到7 的一個數。1-7 是螢幕象素的寬度。11-2047是要轉換為點的數值:
penwidth = (點數 * 10) + 100 只有在針對不可見的線,筆模式為1時才有效。
color 是一個整數,表示一個24 位的RGB顏色值。
Pattern 是一個從1到118的整數,模式號為1時可見。模式號和畫筆檔案中畫筆號相對應。可以用畫筆編輯器來編輯畫筆檔案。 有效的畫筆號是從1 到畫筆檔案中最大的畫筆號,應該不超過127。如果一個畫筆樣式是交疊的,就增加128 作為其畫筆號。交疊樣式在129-255範圍之內。由於畫筆檔案可以修改,而且交疊也可以指定,所以畫筆模式可以是1-255之間的數。
Brush 樣式
Brush 設定諸如圓或區域這樣的填充對象的圖案、前景顏色和背景顏色。Brush 子句有如下語法:
Brush (pattern, forecolor 〔, backcolor 〕)
forecolor(前景顏色)和 backcolor(背景顏色)參數都是整數,代表24 位RGB 顏色值。
pattern(圖案)是一個1 到71 之間的數。注意:1 號圖案是“不填充”而2號圖案是純色填充。
Symbol 樣式
Symbol 子句設定點對象的外觀。Symbol 子句有三種格式,如下所述。
MapInfo 3.0語法
Symbol 子句設定一個點對象的外觀。Symbol 子句有三種格式。
要設定一種使用“Old MapInfo Symbols”(MapInfo早期版本使用的符號)的Symbol 樣式,使用如下語法:
SYMBOL (shape, color, size)
shape(形狀)參數是一個整數值、31 或更大;31代表空白symbol(即該對象是不可見的)。標準symbol 集合包括32到67號symbol,但用戶可以用Symbol 應用程式來自定義symbol集合。
color(顏色)參數是一個整數,代表一個24 位RGB顏色值
size(大小)參數是一個1 到48 之間的整數,代表點的尺寸。
TrueType字型語法
要設定一個基於TrueType 字型的字元的Symbol 樣式,使用如下語法:
SYMBOL (shape, color, size, fontname, fontstyle, rotation)
fontname(字型名稱)參數是一個文本字元串,指明一個字型的名稱(例如“Wingdings”)。
fontstyle(字型樣式)參數是一個控制樣式設定(例如粗體)的整數。
自定義點陣圖檔案語法
要設定一個基於自定義點陣圖檔案的symbol 樣式,使用如下語法:
SYMBOL (filename, color, size, customstyle)
filename(檔案名稱)參數是一個文本字元串,它標明了CustSymb 目錄中的一個點陣圖檔案(例如“Arrow.BMP”)。
customstyle(自定義樣式)參數是一個整數,控制是否使用顏色和背景屬性。
Font樣式
Font 子句設定文本對象的外觀(字型、顏色等)。Font 子句有如下語法:
FONT ("fontname", style, size, forecolor 〔, backcolor〕 )
雙引號內的 fontname(字型名稱)是被顯示的字型。
style(樣式)是字型的文本屬性。 MIF檔案中的size(大小)必須是0,因為一幅地圖上的文本對象是附加到該地圖上的(這樣在放大或縮小時文本尺寸改變)。
forecolor(前景顏色)是一個整數,代表一種24位RGB 顏色。
backcolor(背景顏色)是可選的;如果包含了它,則MapInfo在文本背後的區域中填充指定的顏色。
顏色
顏色通常是以紅、綠和藍色的相對濃度來定義的。其中每種顏色是一個0到255包括0和255之間的數;各種顏色的RGB 值由以下公式計算:
(紅色 * 65536)+(綠色 * 256)+藍色
這裡是一些常用顏色及其數值:
紅色:16711680
綠色:65280
藍色:255
青色:65535
紫紅:16711935
黃色:16776960
黑色:0