Java读取mapinfo格式_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 数字
Java读取mapinfo格式_mapInfo文件格式详解相关推荐
- Java读取mapinfo格式_求助:如何把mapinfo格式的地图数据放到网页中显示
声明,我可不是做广告哦 mapXtreme Java,是目前用于Internet或企业Intranet唯一的100%纯Java地图服务器.mapInfo mapXtreme Java与J2EE兼容,为 ...
- Java读取mapinfo格式_超齐全的MapInfo数据格式详细介绍
1. 概述 MapInfo采用双数据库存储模式,即其空间数据与属性数据是分开来存储的.属性数据存储在关系数据库的若干属性表中,而空间数据则以MapInfo的自定义格式保存于若干文件中,二者通过一定的索 ...
- 报文格式-PCAP文件格式详解
本章介绍一下网络通信数据包常用的文件存储格式.pcap文件,有助于理解实际的通信数据存储格式. 即使对于已经使用过wireshark这款软件的同学,很多人其实并不是特别清楚pcap报文格式以及wire ...
- mapinfo mif/mid文件格式详解
MapInfo MIF/MID file format description (from Appendix A of MapInfo Reference) This appendix describ ...
- Ffmpeg快速命令使用 Ffmpeg选项详解 Ffmepg格式详解 常见视频文件格式详解
http://www.ffmpeg.com.cn/index.php/%E9%A6%96%E9%A1%B5 Ffmpeg快速命令使用 From Ffmpeg工程组 Jump to: navigatio ...
- S19文件格式详解(总结)以及与hex文件的互转
S19文件格式详解 S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motoro ...
- 刻录启动镜像之一:镜像文件格式详解
刻录启动镜像之一:镜像文件格式详解 Disk Image CD/DVD Live CD .iso .bin / .raw / .img .cue .dmg .nrg Disk Image 磁盘映像是包 ...
- 【破解教程】PE文件格式详解(上)
PE文件格式详解(上) 摘要 Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式.PE文件格式的规范包含在了MSDN的CD中(Specs and Strategy, Specif ...
- json文件格式详解
json文件格式详解 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Prog ...
- 音视频入门-17-GIF文件格式详解
* 音视频入门文章目录 * GIF 文件格式解析 图像互换格式主要分为两个版本,即图像互换格式 87a 和图像互换格式 89a. 图像互换格式 87a:是在 1987 年制定的版本. 图像互换格式 8 ...
最新文章
- java Opencv 图片修复 Photo
- 参加第十六届智能车竞赛学生提出的问题-05-10
- Linux 搭建golang开发环境
- 深度学习概述:从感知机到深度网络
- Mysql数据库的简单备份与还原_史上最简单的MySQL数据备份与还原教程
- nginx 配置 http/2(h2) 和 http 在同一端口的问题
- java - 求素数
- java从包package中获取所有的Class
- python爬虫爬取一次数据多长时间_「Python爬虫系列讲解」1. 网络数据爬取概述
- kcp参数 android,Android上KCP协议的使用
- 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论
- java 一年有多少周_用java怎么计算当前年有多少周
- Oracle怎么清除视图数据,Oracle删除视图
- 实验:用科来软件进行抓包
- 常用的薪酬管理系统有哪些,薪酬管理需要具备哪些功能?
- 部署在服务器上的行驶证识别api接口
- html中设置首字母大写,css如何设置英文首字母大写
- 降维分析:人类发展指数法(IFI法)
- Unity3D场景制作基本操作
- Ipad开发课程系列目录--很好的教程,推荐给大家
热门文章
- 利用openmp实现矩阵相乘_矩阵快速幂
- spark 动态预加载数据_Spark+TDengine 在中国电信电力测功系统监控平台上的应用实践...
- php 怎么判断月份最后一天_PHP基础案例三:判断学生星座
- 微光app电脑版_有哪些适合学生使用的 App?②
- gorm软删除_删除 |《GORM 中文文档 v1》| Go 技术论坛
- 文件上传后input怎么回显_tftp上传文件报错,tftp上传文件报错怎么办
- 一台空调的容量是多少_大型中央空调工程节能改造方案如何选择
- 矩阵中求最大二维矩阵
- Nginx初学者指南
- Cloudflare的介绍可以防DDOS 能防多少G呢?