mapInfo文件格式详解汇编.docx

上传人:b****8 文档编号:30392432 上传时间:2023-08-14 格式:DOCX 页数:26 大小:30.81KB
下载 相关 举报
mapInfo文件格式详解汇编.docx_第1页
第1页 / 共26页
mapInfo文件格式详解汇编.docx_第2页
第2页 / 共26页
mapInfo文件格式详解汇编.docx_第3页
第3页 / 共26页
mapInfo文件格式详解汇编.docx_第4页
第4页 / 共26页
mapInfo文件格式详解汇编.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

mapInfo文件格式详解汇编.docx

《mapInfo文件格式详解汇编.docx》由会员分享,可在线阅读,更多相关《mapInfo文件格式详解汇编.docx(26页珍藏版)》请在冰豆网上搜索。

mapInfo文件格式详解汇编.docx

mapInfo文件格式详解汇编

mapInfo文件格式详解

2007-07-2009:

30

在Mapinfo中每张地图被称为一个图层(或被称为表)。

每个Mapinfo表由两部分最重要的内容构成:

图形(称为空间对象)和数据(称为属性)。

Mapinfo实现了"图形对象"及"属性数据"一对一联系,从而能够完成图形数据和属性数据的双向查询。

为了实现基于属性信息的快速查询,Mapinfo支持针对属性字段建立索引。

Mapinfo以文件的方式,将上述的不同信息存放到不同的文件中以共同组成一个完整的图层。

其中

*.tab         定义了表的结构,用于保存表字段名称及字段类型;

*.map       用来存放图形数据;

*.dat         用来存放地图对象的属性信息;

*.id           用于保存地图对象与属性记录之间的一一对应关系;

*.ind         保存了基于属性字段建立起来的索引关系(如果用户取消了对任何字段的索引,则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文件则按记录顺序保存了每个空间对象的所有属性信息。

这两个文件都为文本性质的文件,用户可以通过相应的文件读写方法实现对文件内容的读写。

开源GIS地理信息系统现状

2007-07-1211:

28

转自:

开源中国社区论坛

地理信息系统(GeographicInformationSystems,GIS)软件依赖于覆盖整个地球的数据集。

为处理大量的GIS数据及其格式,编程人员创建了若干开源库和GIS套件。

本文简要介绍可用于UNIX®和Linux®的GIS工具和库的范围和深度。

GIS软件以前仅限于地理学者和地质工作者使用,自从网上提供全球地图服务和移动电话公司开始提供全球定位系统(GlobalPositioningSystem,GPS)服务以来,GIS软件已变得非常普及了。

GIS系统可获得并处理描述地球表面的空间数据。

一般情况下,在空间处理软件对地理数据进行格式化、处理和显示后,这些数据就转换为地理信息。

声纳、雷达、照相机和其他观测平台便可以获得这些数据。

GIS软件将这些数据存储在三维数据库中,并将其格式化,然后传输它们。

有时甚至可以通过所谓的四维(三维+时间)转换来显示数据随时间的发展情况。

当然,我们能够对所有GIS数据进行编辑,而且必须经常编辑这些数据,训练有素的GIS专家可以处理接收到的大多数数据集格式。

许多(若非全部)数据格式都遵守开放标准,GIS空间中的所有操作都可以使用运行于Linux、主要的BerkeleySoftwareDesign(BSD)和一些UNIX变体上的开源应用程序来执行。

最重要的是,GIS软件套件还可以在MacOSX上运行。

QuantumGIS:

开源GIS数据查看器

近年来,Linux上运行的GIS应用程序迅速增加。

20世纪80年代,编程人员开发了地理资源分析支持系统(GeographicResourcesAnalysisSupportSystem,GRASS)。

在20世纪90年代后期经过修改后,任何具有GIS知识和一些Linux专业知识的人员都可以利用GRASS从Linux命令行或图形用户界面(GUI)运行完整的GIS系统。

遗憾的是,GRASS极其复杂,为在Linux上运行GIS的初学者造成了一些不便。

GUI显示大量的功能和命令行标识,其目标用户是GIS专家,而非尝试创建网络地图的新手。

2002年5月,开发人员开发了GPLedQuantumGIS(QGIS),该项目面向需要访问、显示和可能编辑GIS数据集的初学者和中间用户。

GIS用户可以将QGIS部署为单独的GIS数据查看器和编辑器,或者部署为GIS工具链的一部分。

GIS工具链可包括QGIS、GRASS软件套件、一个三维PostGIS数据库和一个向通过Internet访问地图网站的用户提供数据集和地图的地图服务器。

QGIS开发人员决定使用基于C++的Qt工具包来构建QGIS界面,这是不同于以前实践的主要方案(编程人员主要使用Tcl/Tk创建了GRASS,Tcl/Tk建立于20世纪80年代后期)。

尽管QGIS是在GPLedQt工具包的基础上开发的,但它可以在多数Linux和UNIX变体、Microsoft®Windows®和MacOSX上运行。

栅格数据

应用程序使用两种不同的数据结构存储GIS数据:

栅格数据和矢量数据。

您可以添加三维数据格式的数据库存储,该格式针对PostgreSQL处理而优化——即PostGIS数据格式。

我们将PostGIS数据归类为矢量数据,其原因将在下文介绍。

QGIS处理所有三种数据——栅格数据、矢量数据和数据库,这也是编写GIS数据编程库的程序员的重要努力方向。

通过想像正方形网格或六边形单元,可以方便地可视化数据结构(实践中,应用程序在多数情况下采用正方形网格)。

这些网格覆盖一个像矩阵一样的地理区域,并在一个名为mapalgebra的字段中使用数学表示形式。

GIS专家可以向每个网格中添加数据,如降水量值或经济数据,但描述复杂的不规则地理形状较为困难。

该软件通常必须依赖于相似性和网格中值的位置来对特征分类(如街道或海岸),而非基于封装在元数据中的特征描述。

另一种可能的解释依赖于使用与个别网格相关联的颜色值将栅格网格组归类为某些特征。

网格按行或按列排列,它反映硬盘存储数据的方式。

许多基于栅格的格式都有基本的图像格式:

常见的基于栅格的图像格式是位图(.bmp)。

带标记的图像文件格式(.tiff)是另一种常用的基于栅格的图像格式,GIS专家为适应地理学者的需要将其重命名为GeoTIFF。

基于栅格的数据格式更类似于图像。

其准确性依赖于描述尽可能少的特征的网格数量。

在栅格数据模型中,地图的准确性还依赖于地图的比例。

因此,地图的分辨率和准确性依赖于每个网格代表的实际区域。

该数据模型可比较的简单性有助于对GPS设备和卫星成像捕获的数据进行建模。

有些数据格式可以很好地适用于栅格模型。

例如,数字高程模型(DigitalElevationModel,DEM)数据点在网格图形中均匀排列。

DEM格式编码高程数据来创建高清晰地形。

前几年,美国地质调查局(USGS)向公共领域发布了一个非常受欢迎的全球DEM数据集。

矢量数据

基于矢量的数据格式的出现改变了GIS专家的生活。

新数据查看器和编辑器,如Thuban和QGIS不必再费力地表示复杂的基于矢量的格式,因为它一开始就内置了编辑和添加基于矢量的数据层的能力。

GRASS已有20多年的历史,但最近才获得此能力。

简言之,矢量数据利用最简单的拓扑实体—点、线和多边形,并在二维笛卡尔坐标系统中固定它们来描述地理特征。

连接线称为弧,笛卡尔坐标系统中的点称为节点。

数据结构与图形关联,并以图形理论做为其数学基础。

所谓的弧节点列表包含弧和节点。

列表定义多边形,并可以相互层叠,来表示方向完全相反但描述相同地理区域的数据集,从而形成数据详细的地图。

QGIS和其他较为简单的数据查看器用于探测各种数据格式和覆盖此行星系统的所有数据集。

与某些商业产品、甚至GRASS不同,您可以容易地安装这些查看器,并且几乎可以在所有主要操作系统上使用。

里程可能稍有偏差,但几乎可以始终保证成功。

数据格式

QGIS支持许多矢量数据格式,如Shapefile、MapInfo图层和ArcInfocoverage。

矢量数据要求的存储要比栅格数据少得多,因为弧节点列表简化并减少了表示地图中包含的特征所需的数据。

这些数据还非常便于搜索地图或用矢量表示的各种图层。

在20世纪90年代初,商业软件套件ArcInfoGIS进入市场以后,促进了对Shapefile的使用。

后来出现了其他文件和数据格式,但是,没有免费的开源编程社区,这些成果仍局限于地理学者的理论研究和军事规划。

GRASS

最近推出了GRASS6.01版,该版本支持大约40种数据格式。

它突破了二维栅格格式,可包括体元(voxel)或三维栅格格式。

大量的成像和成图模块大大方便了GIS专家以新的方法分析数据。

这使得长期模拟和完善的地图制作成为可能。

不过,用户仍需要解决的问题是,由于该版本针对的是UNIX和Linux专家,其界面相当杂乱而且安装过程也比较复杂。

进一步说,导致这一复杂性的原因是随GRASS提供了大量的库和工具。

所幸的是,各个GIS技术级别的学生编写了许多有关GRASS的文档,因此使Linux和UNIX新手能够对付GRASS安装时的复杂要求。

GDAL和OGR

在谈到GIS数据格式时,必然会考虑到要支持的大量格式,以使每个数据查看器和GIS应用程序可以广泛适用。

开源GIS应用程序必须包括从ArcInfo到X窗口系统的大多数开放数据格式标准。

诸如GeoTIFF的格式是通常由多数应用程序支持的开放标准的常见示例。

在开源范围中,GRASS、QGIS、Thuban和许多其他GIS应用程序使用基本库,即GeospatialDataAbstractionLibrary(GDAL)。

GDAL用C和C++编写,只能包括一种栅格格式。

另一个库叫做OGRSimpleFeaturesLibrary(以前称为OpenGISSimpleFeaturesReferenceImplementation),尽管是为了适应GDAL源树中存在的矢量格式而构建的,但OGR依赖于GDAL。

事实上,如果没有开源许可的GDAL,多数现代地理空间数据查看器将是不可思议的。

该库为编程人员提供了通用的数据模型,包括所有栅格数据格式和矢量数据格式(通过OGR)。

GDAL还可让编程人员在世界地理坐标(即地理参考坐标)上设计栅格数据。

PostGIS和OpenGIS

在没有相当完善的数据存储机制的情况下,公共领域GIS数据不可能存在。

然而,存储可能不像栅格数据那样重要,其空间构成可能包含相当简单的数字数据。

编程人员只须知道一些较高级别的结构,但是多数编程人员认为栅格数据较为复杂并且占用大量的存储。

OpenGIS标准通过生成矢量数据解决了这些问题,矢量数据也指几何对象,如点、线、多边形及其组合,可以在启用三维数据库的PostgreSQL中存取(PostgreSQL的OpenGIS实现标准称为PostGIS)。

存储在PostgreSQL数据库中的GIS数据完全可以使用SQL-92搜索。

目前,编程人员能够访问整个开源GIS应用程序在很大程度上依赖于UNIX和Linux系统。

这些成果得益于通常的开放标准,而且多数Internet地图制作领域正在趋向于依赖这些标准。

以任何形式处理地理数据的所有编程人员都会遇到与Linux系统编程人员在glibc上遇到的相同的基础库问题。

GIS编程人员即使只是想利用键盘编写数据过滤器的脚本或删改工具链,也无法判断要使用哪些数据格式和基础库。

结束语

在谈到有关开源和全球环境现象时,很难让人联想到地理数据集和GIS应用程序领域。

但是,开源应用程序,如GRASS和QGIS在尝试使公共领域GIS数据集可用于编程人员和技术用户,以便他们不必使用商业产品。

GDAL和OGR之类的库可以将GIS数据放在通用开源基础上处理,而不会影响开放GIS数据标准的完整性

MapInfoMIF/MID文件格式描述

MapInfoMIF/MID文件格式描述

(fromAppendixAofMapInfoReference)

(摘自MapInfo参考资料的附录a)

ThisappendixdescribesthedatainterchangeformatforMapInfo.Inthis

appendix,youwillfindinformationon:

这个附录描述了MapInfo的数据交换格式。

在这个附录中,你会发现如下信息:

MIFFileheader

MIFDataSection

Pen,Brush,Symbol,andFontCodesinMIF

MIDFile

Thisversatileformatallowsgenericdatatobeattachedtoavarietyof

graphicalitems.It'sASCII,soitiseditable,relativelyeasytogenerate,

andworksonallplatformssupportedbyMapInfo.Perhapsthebestwayto

understandtheMapInfoInterchangeFormat(MIF)istostudythesamplefile

attheendofthisappendixinconjunctionwiththeexplanationofthefile

format.YoucanalsocreatesamplesofyourownbyexportingfilestoMIFand

thenexaminingthosefilesinatexteditor.

这种通用的格式允许把普通的数据添加到多种的图像元素中。

MIF/MID文件采用ASCII编码,因此它是可编辑的、相对比较容易生成、并且可以工作在MapInfo支持的所有平台上。

也许理解MIF格式的最好的方法是在读完这篇文章后,拿着MIF格式说明,研究一个MIF文件。

你也可以通过“exportingfilestoMIF”创建你自己的MIF文件,然后在文本编辑器中好好的研究它。

Mapinfodataisintwofile--thegraphicsresideina.MIFfileandtextual

dataiscontainedina.MIDfile.Thetextualdataisdelimiteddata,with

onerowperrecordandeitherCarriageReturn,CarriageReturnplusLineFeed,

orLineFeedbetweenlines.TheMIFfilehastwoareas--thefileheaderand

thedatasection.InformationonhowtocreateMapInfotablesisinthe

header;thegraphicalobjectdefinitionsareinthedatasection.

MapInfo数据存在于两种文件中--图形数据存储在.MIF文件、文本数据存储在.MID文件。

文本数据包括每一项记录的一行和回车,回车加换行,行之间的换行。

MIF文件的数据包括两部分--文件头和数据区。

文件头存放着如何创建MapInfo表格的信息;数据区存放着图形对象的解释。

=================MIFFILEHEADER===============

ThisisadescriptionofMIFfileheaderwithoptionalinformationinsquare

brackets.

下面是MIF文件头的描述(包括可选项,下表中由“[]”括起来的部分就是可选项)。

Versionn

Charset"characterSetName"

[DELIMITER""]

[UNIQUEn,n..]

[INDEXn,n..]

[COORDSYS...]

[TRANSFORM...]

COLUMNSn

DATA

1.Version版本号

TheVersionclausestateswhetheryouareusingVERSION1,VERSION2,or

VERSION300oftheformat.Version300,introducedwithMapinfo3.0,allows

multiple-sectionpolylineobjects.

“Version”说明你使用的MIF格式的版本(VERSION1,VERSION2,VERSION300中的一种)。

Version300,引自Mapinfo3.0,允许形容由多段组成的折线对象。

2.Charset字符集

TheCharsetclausespecifieswhichcharactersetwasusedtocreatetextin

thetable.Forexample:

Specify"WindowsLatin1"toindicatethatthefilewas

createdusingtheWindowsUS&WesternEuropecharacterset;specify

"MacRoman"tospecifytheMacintoshUS&WesternEuropecharacterset;or

specify"Neutral"toavoidconvertingthetextintoanothercharacterset.

Ifyouarenotusingoneofthesecharactersets,youcandeterminethe

correctsyntaxforyourcharactersetbyexportingatableandexaminingthe

.MIFfileinatexteditor.

“Charset”指定表(此处还不知道是哪一个表)中创建文本所使用的字符集。

比如说:

"WindowsLatin1"说明文件使用的是theWindowsUS&WesternEurope字符集;"MacRoman"说明文件使用的是theMacintoshUS&WesternEurope字符集;或者,注明"Neutral"是为了防止将文本转成了另外的字符集。

如果你没有使用其中任何一个字符集,你可以通过exportingatable和examiningthe.MIFfileinatexteditor为你的字符集指定正确的语法。

3.Delimiter分隔符

Specifythedelimitingcharacterinquotationmarks,forexample:

指定引号(即""或者'')之间的分隔符,比如说:

DELIMITER";"

ThedefaultdelimiterisTab;ifyouareusingthedefault,youdonotneed

theDELIMITERline.

默认的分隔符是Tab;如果你使用的是默认分隔符,你不需要“DELIMITER”这一行。

4.Unique

Specifyanumber.Thisnumberreferstoadatabasecolumn;3isthethird

column,7istheseventhcolumn,andsoforth.Whathappenstocolumninthe

UNIQUElistissubtle.Forexample,imaginethatyouhaveadatabasewith

highwaysinit.Eachhighwayhasonlyonename,butitmightberepresented

byseveralsegments.YouwouldputtheNAMEcolumnintheUNIQUElist,while

thecolumncontainingdatafortheindividualsegmentswouldnotbeinthat

list.Thishastheeffectofcreatingtworelatedtables;onewithnames,

andonewiththeotherattributesoftheobjects.ThisishowMapInfo's

variousstreetmaps(StreetInfo)areprepared.

指定一个数字。

这个数字指定一个数据库的列;3是第三列,7是第七列,以此类推。

发生在UNIQUE指定的列上的事情是微妙的。

比如说,想象

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1