mapInfo文件格式详解

简介:

MapInfo以表(Tab)的形式存储信息,每个表是由一组MapInfo文件组成,包括:
1、属性数据的表结构文件,后缀为.TAB。该文件定义了地图属性数据的表结构,包括字段数、字段名称、字段类型、字段宽度、索引字段及相应图层的一些关键空间信息描述。.TAB文件实际上是一个文本文件,可以在写字板中打开观察其内容。
2、属性数据文件,后缀为.DAT。该文件存放了地图的属性数据。.DAT文件是二进制文件,它的格式与dBase IV的文件格式一致。
3、空间数据文件,后缀为.MAP。该文件是二进制文件,存放了图形对象的数据,包括空间对象的几何类型、坐标信息和颜色信息等。
4、交叉索引文件,后缀为.ID。该文件是二进制文件,用于连接属性数据和图形数据,记录了地图中每一个空间对象在空间数据文件(.MAP)中的位置指 针。文件中每四个字节构成一个指针。指针排列的顺序与属性数据文件(.DAT)中属性数据记录存放的顺序一致。交叉索引文件实际上是一个空间对象的定位 表。
5、索引文件,后缀为.IND。MapInfo表中有时也包括该文件,用于对某些字段建立索引。
.TAB文件和.DAT文件是MapInfo表中必须的两个文件,一个MapInfo表至少应该包括一个.TAB文件和一个.DAT文件。.MAP和.ID文件不是必须有的,但是如果有了.MAP文件,那么.ID文件也必须存在。

在Mapinfo中每张地图被称为一个图层(或被称为表)。
每个Mapinfo表由两部分最重要的内容构成:图形(称为空间对象)和数据(称为属性)。
Mapinfo 实现了"图形对象"及"属性数据"一对一联系,从而能够完成图形数据和属性数据的双向查询。为了实现基于属性信息的快速查询,Mapinfo支持针对属性 字段建立索引。Mapinfo以文件的方式,将上述的不同信息存放到不同的文件中以共同组成一个完整的图层。

细说Mapinfo索引文件*.ind :
每个Mapinfo表是由几个文件组成的,不同的文件用来保存图层的不同信息。其中,*.ind 文件用来存放Mapinfo表的数据索引。是Mapinfo表的索引文件,它能提高Mapinfo数据检索的效率,同时它允许你使用“查找”命令查找地图 对象。若用查找命令定位一个地址(城市),在表中必须对这些城市建索引,这些索引就保存在*.ind文件中。
当你对一幅图层建立索引之后,Mapinfo 会自动生成一个索引文件*.ind。当你将一个图层的索引取消之后,Mapinfo 也会自动将索引文件*.ind删除。

MIF,MID格式

MapInfo虽然没有公开其内部的数据结构,但它给出了用于格式交换的数据结构,即MIF与MID,其中MIF文件保存图形数据,MID文件保存 属性数据。将其它形式的地图数据转成MIF与MID格式,然后利用MapInfo菜单中的Import命令就可以导入,从而完成转换。也可以在 mapInfo中把*.tab文件转换为*.mif,*.mid文件

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

MapInfo.dat格式说明

据说MapInfo是严格的DBaseIV格式:

01 000x03:总是这个值

01-03 最后更新日期,格式:年年月月日日

04-07 表中有多少条记录(32位,最大4294967295条记录)

08-09 header部分有多少字节(16位,最大65535字节),包括Header段的结束标记0XOD在内

10-11 每条record部分有多少字节(同上)

12-13 保留的,不用管(这后面都可不用管)

14 未完成事务标记。开始事务时其值被设置为0x01,事务完成或事务回滚时,重设位0x00。也可以不管它。

15 加密标记。加密后为0x01否则是0x01。单纯的修改该标记并不能对记录进行加密解密。

16-27 用于DBaseIV多用户环境。不用管。

28 是否存在产品索引,是则为0x01,否则0x00。也不用管。

29 DBaseIv语言驱动Id

30-31 保留的,全是0x00,不用管。

接着每32位保存一个字段的信息

0-9 字段名的AscII码

100 x00

11 字段类型标识(如0x43代表charactor,相当于字母C.MapInfo只使用了C,L,N三种.要获得实际的字段类型和含义需要参照.tab文件)

12-15 displacementoffieldinrecord,可以不用管

16 字段长度

17 字段的小数个数

18-19 保留的,不用管

20 dbaseIvworkareaid不用管

21-30 保留的,不用管

31 该字段是否是产品索引的一部分,如果是则值为0x01,否则0x00

所有字段描述完了以后,是header的结束标记0x0D

接着是紧密排列的记录,都是Ascii的。其宽度跟字段的定义一致。

所有的记录都以一个删除标记开头,如果该记录删除,该处的值为0x2a(星号*)否则0x20(空格)

文件最后以一个0x1a标记结束

附:字段标识对照表

AscII码 描述

c 字符

d 日期,formatyyyymmdd

f 浮点

g general-foxproaddition

l 逻辑,t:t,f:f,y:y,n:n,?-未初始化

m memo(storedas10digitsrepresentingthedbtblocknumber)

n 数字




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/p/3296946.html,如需转载请自行联系原作者

相关文章
|
5月前
|
算法 Unix Linux
什么是sqfs文件格式?
sqfs,Squash file system,压缩文件系统,.sqfs表示压缩文件系统的文件类型,可引导文件或引用用于UNIX的可引导磁盘映像的文件。
143 5
mapshaper命令:geojson转shp中文乱码的解决方案
mapshaper命令:geojson转shp中文乱码的解决方案
323 0
ENVI_IDL:如何读取HDF4文件和HDF5文件的数据集和属性?
参考Documentation Center (l3harrisgeospatial.com) 由于时间和精力,这里并没有对其中的函数进行详细的说明,只是介绍了函数作用以及用法。
220 0
|
存储 Python
ArcPy将.hdf格式栅格数据转为.tif格式
本文介绍基于Python中ArcPy模块,实现大量HDF格式栅格图像文件批量转换为TIFF格式的方法~
379 1
ArcPy将.hdf格式栅格数据转为.tif格式
|
存储 定位技术 数据库
如何区分Shapefile,Coverage,Geodatabase
如何区分Shapefile,Coverage,Geodatabase(转载) 在过去20年中,矢量数据模型是GIS中变化最大的方面,例如,ESRI公司所开发每种新软件包都对应一种新的矢量数据模型,Arc/Info对应Coverage,ArcView对应Shapefile,ArcGIS对应Geodatabase。
1482 0
|
安全 C++
AutoCAD *.dxf文件解析,dxflib在VS2013的使用
AutoCAD *.dxf文件解析,dxflib在VS2013的使用
683 0
|
文件存储
Shp文件格式之-dbf文件
GeoTools中处理Dbf文件、Dbf头信息组成、Dbf数据组装形式
2014 0
|
XML C# 数据格式
C# Word转为多种格式文件(Word转XPS/SVG/EMF/EPUB/TIFF)
一款有着强大的文档转换功能的工具,无论何时何地都会是现代办公环境极为需要的。在本篇文章中,将继续介绍关于Word文档的转换功能(Word转XPS/SVG/EMF/EPUB/TIFF)希望方法中的代码能为各位开发者们提供一定的参考价值。
1817 0
文件格式的小说明
.com 和 .exe 和 .bat 这三种称为可执行文件。   也就是说:在一套软件里,只要执行以上扩展的文件(如鼠标双击此类型文件),软件就可以正常运行了。   编写一套软件,涉及内容很多。   如编写一套学校管理软件,需要学校的一些数据,那么我们可以把数据文件归类。
805 0
|
Web App开发 Linux
文件格式转换工具-Pandoc
Pandoc是由John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”。 Pandoc使用Haskell语言编写,以命令行形式实现与用户的交互,可支持多种操作系统。