(毕业论文)基于Shape电子地图显示系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XXXX大学毕业论文
二○○八年六月
基于 Shape 的电子地图显示系统
专业班级:
姓名:
指导教师:
信息科学技术学院
内容摘要
地理信息系统,即GIS( Geographic Information System )是在计算机软件和硬件的支持下,管理和综合分析具有地理空间内涵的各类资料,以提供对规范化、管理、研究、预测和
决策所需信息的技术系统。
它是表达、模拟具有地理空间内涵的现实系统和进行数据通信处
理、分析的有力工具。
Shape 文件是一种基于文件方式存储GIS数据的文件格式。
至少由.shp,.dbf,.shx 三个文件组成,分别存储空间信息、属性信息和前两者的关系。
是GIS中比较通用的一种数据格式。
电子地图是可任意放大缩小的矢量地图,它是通过GIS 和数字制图技术来实现的,依
托于互联网等数字媒介的地图。
本课题以 GIS 理论为基础,用Visual C++6.0 作为开发工具,通过分析shape 文件格式,完成对 shape 文件数据读取,将地图显示出来并实现放大、缩小、漫游功能。
关键词:地理信息系统,电子地图,Shape
ABSTRACT
Geographic Information System is the technology system, which is used to manage and analyze geography information to provide the available information under the support of the computer software and hardware. And it is a realistic system which can imitative the
geography space and a powerful tool which can process and analyze data.
Shape file is the file format based on GIS data stored as files. It consists of three parts at least: .shp, .dbf, .shx, which are used to store space information, attribute information, and relationship respectively.
The electronic map is free to zoom in and out of the vector map, which is achieved by geographical information system (GIS) and digital mapping technology, relying on the
Internet and other digital media map.
This paper is based on GIS by using Visual C++6.0. According to analyzing the shape file format, the map is displayed; the function is achieved such as roaming and zooming in and out.
Key words : Geographic information system, Electronic map,Shape
目录
第一章绪论............................................................. (1)
1.1电子地图概述 (1)
1.1.1电子地图的定义 (1)
1.1.2电子地图的特点 (2)
1.1.3电子地图的分类 (4)
1.1.4电子地图系统 (5)
1.2本文主要工作 (6)
第二章基于Shape的电子地图显示系统概要设计 (7)
2.1系统总体设计 (7)
2.1.1系统需求 (7)
2.1.2系统功能分析 (7)
2.2系统设计与实现 (8)
2.2.1系统模块划分 (8)
2.2.2文件读取模块及类实现 (8)
(1)文件读取模块流程图设
计 (8)
(2)类及主要函数说
明 (9)
2.2.3数据显示模块及类实现 (10)
2.2.4鼠标事件模块及类实现 (12)
第三章Shapefile数据结构解析 (14)
3.1主文件(*.SHP)数据结构解析 (14)
3.1.1主文件的组
织 (14)
3.1.2主文件头 (15)
3.1.3主文件记录头 (16)
3.1.4主文件记录内容 (16)
3.2索引文件(*.SHX)数据结构解析 (19)
3.3属性文件(*.DBF)数据结构解析 (19)
3.3.1属性文件的组织 (19)
3.3.2dBASE文件结构 (20)
3.4Shapefile样例 (21)
第四章电子地图显示系统实现 (25)
第五章总结与展望 (2)
9
致
谢 (30)
参考文献 (31)
附
录 (32)
第一章绪论
1.1 电子地图概述
1.1.1 电子地图的定义
关于电子地图的名称,曾经有不同的提法,如“电脑地图”、“联机地图” 、“屏幕地图”和“瞬时地图” 等,有时又把电子地图和数字地图等同起来,或者认为电子地图是数字地图
和视盘地图的集合等。
但是在人们的生活中,电子地图的概念更通俗易懂,因而被大众所接受。
Taylor ( 1991)将电子地图定义为“在电子介质上使用的地图”;郭仁忠(1995)认为投影技术和设备的发展使显示电子地图的介质并不一定是电子介质,运用计算机主机和光学
投影仪同样可以在屏幕(白纸、幕布甚至墙壁)上显示地图,故可以认为“电子地图是屏幕
上显示的地图的总称” 。
但为了排除单纯投影与幻灯生成的屏幕地图,因此建议将电子地图
定义为“是基于电子技术的屏幕地图”,并进一步强调了计算机在电子地图中的作用。
祝国
瑞(2004 )从数字地图的可视化作用出发,提出“电子地图是数字地图经可视化处理在屏幕
上显示出来的地图”。
吴忠性( 1993)、张文诗( 1994)等从地图数据来源和地图传输的不同
角度也给出了电子地图的定义。
造成电子地图概念多样化现象的原因在很大程度上是因为发
展中的电子地图与现代技术迅速结合,不断推出新的应用形式,从而在短时间内难以给出一
个简洁、科学和明确的定义。
要弄清楚电子地图的概念,就需要从目前多种多样的电子地图产品中分析其内在的特
性,同时还要保证这个概念的包容性和可成长性。
归纳起来,电子地图具有以下基本性质:
3( 1)电子地图首先是一种模拟地图产品。
它反映了地理信息,同时具有地图的
个基本特征,即数学法则、制图综合和特定的符号系统,这使得电子地图有别于遥感影像或
建筑设计图。
( 2)电子地图的数据来源是数字地图。
数字地图是地图的数字形式,一般存储在
计算机磁带、硬盘、CD — ROM 等介质上。
数字地图既可以是矢量地图数据,也可是栅格地
图数据。
( 3)电子地图的采集、设计等都是在计算机平台环境下实施的。
计算机系统为电
子地图提供强大的软硬件支持。
同时,电子地图的屏幕显示也依赖于某个特定地图软件的表
达功能。
正因为如此,梁启章采用“电脑地图”而不是“电子地图”这一术语是有一定道理
的。
( 4)电子地图的表达载体是屏幕。
屏幕既可以是电子介质,如计算机显示屏、电
视机屏幕等,也可以是投影屏幕等其他形式。
电子地图的显示不是静止的和固化的,而应是实时和可变化的,这使得电子地图和传统纸质地图相比在应用上具有更大的灵活性。
综上所述,我们可以这样理解电子地图的概念:从狭义上讲,电子地图是一种以数据
地图为数据基础、以计算机系统为处理平台、在屏幕上实时显示的地图形式。
而从广义上讲,电子地图应该是屏幕地图与支持其显示的地图软件的总称。
前者强调了电子地图的地图特
性,后者则反映了电子地图的综合特性。
当然,电子地图的形式、范畴都可能随着技术、方法的发展而延伸,但是必须满足电子
地图的基本定义。
例如,网络地图虽然是通过计算机网络实现地图数据的传输,但是它同时符合上述的 4 个基本特征,所以网络地图又称为网络电子地图;而直接采用数码摄像(摄影)设备拍摄的地图,尽管可以通过VCD 、DVD 影碟机等在电视机上播放、浏览,但是缺少数
字地图的数据管理和计算机平台的支持,就不能够称为通常意义上的电子地图。
1.1.2 电子地图的特点
电子地图将传统的地图与当代技术方法结合起来,产生了新的地图产品品种,表现在制图
工艺流程、表现形式、地图介质、应用方法等诸多方面。
因此,电子地图不是将地图内容
简单地搬上屏幕,而是在地图设计、应用上的一个重大变革,在一定程度上改变了地图的传统
信息、传输方法与应用模式,赋予了地图新的生命力和科学价值。
和传统纸质地图相比,电子地图拥有的优势和特点可以归纳为以下几个方面。
1.数据与软件的集成性
在产品形式上,纸质地图表现为单一的地图数据输出,而电子地图是地图数据与软件系
统的集成,缺一不可。
电子地图的应用软件又可称为电子地图浏览或者阅读系统,它是地图由数据形式到模拟表达形式的翻译器和转换器,负责将地图数据库中的内容显示在屏幕上,
并具有一系列对地图浏览的操作功能。
2.过程的交互性
纸质地图一旦印刷完成就成为定型产品,幅面、内容、形式都不会再发生改变。
而电子
地图保存在计算机的存储设备中,电子地图系统的浏览软件允许用户对表达的地图内容进行
选择,并通过缩放、漫游对地图表达区域进行调整,从而经过用户的交互操作在屏幕上形成
一张新的地图。
3.信息表达的多样性
由于受到比例尺、幅面和媒介的制约,纸质地图能反映的信息量有限,只能通过地图符号
的结构、色彩、大小来反映地理对象的信息。
而电子地图的交互功能,如放大,漫游功能
以及地图数据库的支持使得地图的载负量可以得到极大的扩展,同时计算机系统的多窗口和多线
程技术可以运用于视频、声音、图像、文字、动画等多媒体信息的表达,丰富了电子地图的内容,
最大限度地发挥电子地图的阅读功效。
4.无级缩放与多尺度数据
每一幅纸质地图都具有一个固定的比例尺,但在电子地图中由于屏幕显示的灵活性,可
以在一定限度范围内通过开窗、剪裁和无级缩放,实现对电子地图内容的任意局部或全局显
示。
针对缩放过程中用户对细节信息的要求不同,电子地图还可以同时载负多个比例尺地图
数据,并通过设定的显示条件动态地调整地图表达的内容,如随着地图的逐步放大,更大比例尺的地图细节被显示出来。
5.快速、高效的信息检索与地图分析
在纸质地图上搜索地图目标需要用户人工独立完成,并且只能进行一些比较简单的量算和分析,不仅费时,而且精度也不容易得到保证。
电子地图利用地图数据库的查询、检索功能和GIS 的空间分析功能很容易实现用户对地图目标的快速查询(包括空间与属性之间的
双向查询)和高精度量算、分析的需要。
6.多维与动态可视化
在纸质地图中制图人员通常将地理对象的空间分布形态通过制图综合转换为二维平面
形式表现出来,即使三维、连续分布的地理信息,也间接地转化为等值线形式来表达;纸质地图
表达的地图目标都是静态的、不变化的,要在图上反映动态变化的地图现象,往往通过几个时间段的静态地图组合来实现。
在电子地图上,不仅可以进行了地图的三维显示、空中飞行、虚拟环境漫游等,而且还可以直接描述地理现象的动态变化过程。
7.共享性
与纸质地图相比,电子地图依托于计算机技术、网络通信技术和容量大、便于携带的存
储设备,如光盘等,更容易实现地图的复制、传播和共享。
目前在Internet 上已建立了众多
的电子地图网站,可以很方便地从地图上查询城市交通、地名、旅游景点、商业服务业信息等,
极大地提高了电子地图的利用率。
8.低成本性
电子地图的内容以数据的形式保存在地图数据库中,可以方便地进行无损失复制和数据的编辑、修改,从而很容易更新再版,做到周期短、成本低。
1.1.3 电子地图的分类
电子地图的类型十分丰富,在传统地图的基础上有了较大的发展,因此,电子地图的类
型划分可以基于基本分类和扩展分类两种方式。
基本分类是指和传统地图分类相对应的划分方法,主要根据地图的内容、性质(比例尺、区域范围)与用途来进行划分;扩展分类是电
子地图特有的划分方法,划分依据有电子地图的数据结构、功能特点、输出与使用方式以及技术特色等。
电子地图的总体分类情况见表 1.1。
表 1.1 电子地图分类表
基本分类扩展分类
划分方式按内容划分按比例尺划分
类型
普通电子地图
专题电子地图
大比例尺电子地图
中比例尺电子地图
小比例尺电子地图
自然区域
划分方式
按数据结构划分
按功能特点划分
类型
矢量电子地图
栅格电子地图
矢栅混合电子地图
浏览型电子地图
查询型电子地图
分析型电子地图
按区域范围划分
行政区域单机电子地图
电子陆图光盘电子地图军用
电子海图按输出和使用方式划分触摸屏电子地图电子
电子航空图PDA电子地图地图
按用途划分
民用
电子宇航图等
农业用电子地图
地质用电子地图
网络电子地图
多媒体电子地图
三维动态电子地图
电子按技术特色划分
石油用电子地图
地图移动导航电子地图民航用电子地图等
1.1.4 电子地图系统
电子地图系统是指在计算机软硬件的支持下 ,以地图数据库为基础 ,能够进行空间信息的采集、存储、管理、分析和显示的计算机系统。
电子地图系统由硬件、软件、数据和人员等部分组成。
这里着重介绍电子地图的软件组
成与主要功能。
软件系统包括操作系统、地图数据库管理软件、专业软件以及其他应用软件。
其中,地图数据库管理软件是核心软件,其主要功能如图图 1.1 所示。
电子地图生成模块管理模块分析模块显示模块
电子地图数据库
图 1.1 地图数据库管理软件的功能
地图构建功能。
允许用户根据设计方案选择内容、比例尺、地图投影、地图符号、颜色
等,生产预想的地图,以满足需要。
从发展的角度来看,电子地图将成为新的地图制图平台,“地图制图平民化”趋势也将越来越明显。
地图管理功能。
除包含空间数据、属性数据和时间数据外,电子地图还包含多种数据源的数据,因此需要使用地图数据库管理这些复杂、大量的数据。
检索查询功能。
可以根据用户需求来检索信息,并以多媒体的形式显示查询结果,包括图形到属性的查询,属性到图形的查询,图形、属性综合查询以及拓扑查询。
分析功能。
进行简单的空间分析和统计分析。
数据更新功能。
能提供强有力的数据输入、编辑能力,以确保及时更新数据,保证电子
地图的现势性,并为再版地图创造优越的制图环境。
地图概括功能。
在电子地图中,地图概括是按照视觉限度的原理实现的,它是一个逆向过程。
当数据库中存储了十分详细的制图数据时,正常位置的屏幕上不可能显示全部图形细节,即显示的比例尺缩小时,很多的细节被忽略了。
只有窗口放大时,才能逐步显示全部细
节,依次放大可获得多种比例尺的效果。
输出功能。
空间查询、空间分析、地图制图的结果,可通过一定的方式提供给用户。
1.2 本文主要工作
以上是电子地图的概况,对基于Shape的电子地图显示系统的设计主要做了以下两方面的工作:
(1)对 Shapefile 数据存储格式进行分析,对地图源数据进行读取和存储。
(2)读入地图数据,完成地图显示,实现放大、缩小、漫游、图层叠加功能。
第二章基于Shape的电子地图显示系统概要设计
2.1 系统总体设计
2.1.1 系统需求
基于 shape的电子地图显示系统主要具有以下功能:
● 电子地图的显示
● 电子地图的漫游功能
● 无级缩放功能
● 图层叠加显示功能
2.1.2 系统功能分析
图 2.1 表示了基于 Shape 的电子地图显示系统功能划分。
电
子地图显示系统
地无地图
地无地图
图级级图层层
显缩漫叠
显缩漫叠
示放游加
示放游加
图 2.1 基于 Shape 的电子地图显示系统功能划分1.地图显示
根据用户需要装载Shapefile 电子地图,读取数据并将地图显示出来。
2.无级缩放
对显示的地图进行任何部位的无级放大和缩小,地图细节部分将被显示出来,利于对地
图进行细致观察、研究。
3.地图漫游
对显示的地图,可以拖动,移动到任何位置,与缩放功能配合更有利于观察细节部
分。
4.图层叠加
实现对多幅地图在同一屏幕下,同一个最大边界框的管理显示,方便对多地图数据
进行对比观察研究。
2.2 系统设计与实现
2.2.1 系统模块划分
对系统功能进行分析,其模块划分如图 2.2 所示:
系统软件实现
文件读取模块数据显示模块鼠标事件模块
图 2.2 系统模块划分
2.2.2 文件读取模块及类实现
(1)文件读取模块流程图设计
文件读取模块流程如图 2.3 所示:
选择要读取的.SHP 文件
读取 .SHP 文件头
并根据 Shape类型创建相应的图层
读取 .DBF 文件头
并加载各记录项的描述信息
.SHP 文件是
读取结束
否
读取空间几何数据读取属性数据
读取点读取线读取面
一一对应
.SHP 、 .DBF
一一对应文件读取结束一一对应
点线面
图 2.3文件读取模块流程图
(2)类及主要函数说明
Geometry (基类)
GeoPoint(点类)
Shape 类型类:GeoPoints(点集类)
GeoPolygon (多边形类)
GeoPolyLine (折线类)
Geometry 是点类、多边形类、折线类的基类,点类主要是对点坐标的存取。
点集类是
对多点的管理,实现对各点的存取。
多边形类、折线类是点集的集合,实现对各部分点的存取。
FieldValue(记录项值类)
记录项类:Field(记录项类)
Fields(记录项集类)
FieldValue实现对各记录项值的存取。
Field实现对记录项的管理,包括存取记录项的字段名称、字段类型、字段长度及读取记录项值等功能。
Fields 用STL <vector>、 <map>实现对一行记录项的管理,包括添加记录项Field、通过索引或者字段名取得记录项、通过字段
名取索引值、记录项个数等功能。
行类:Feature(行类)继承Row
Row实现对一项属性记录的构造管理,Feature 公有继承Row ,实现对一项属性记录与
相对应的几何数据相联系,并对该记录边界实现存取。
DataSource(图层数据集管理类 )
DataSet(基类)
图层数据类:
Table(图层数据各行管理类)
FeatureClass(图层数据类)
FeatureClass 继承Table 继承 DataSet, FeatureClass 实现对整个图层数据边界框
的计算及存储整个图层数据,Table 实现对上面 Row 的管理,包括添加行数据、取得各行等
功能。
DataSource 实现实现对各图层数据管理,取得任意图层数据。
类主要函数及功能说明见表 2.1:
表 2.1 类主要函数及功能说明
类主要函数功能说明GeoPoint GeoPoint (double X, double Y)以 X、Y 坐标构造点
GetPoint通过索引返回相应点
GeoPoints
GetPtCount返回点集合中点的总数SetPointCount设置点集合中点的个数SetPoint通过索引设置点集中某点的值
GeoPolyline SetPointsCount设置点集合的个数GetPointsCount返回点集合的总数
GeoPolygon
GetPoints通过索引返回相应的点集
SetInt设置记录项的整数值FieldValue SetDouble设置记录项的浮点值
SetString设置记录项的字符值
GetFieldName返回记录项字段名Field GetFieldType返回记录项字段类型
GetFieldLength返回记录项字段长度
AddField向记录项集合尾添加一个记录项
Fields GetField通过索引或者字段名返回相应记录项GetIndex通过记录项字段名返回其索引Size返回记录项总数
Row GetFieldValue返回每个记录项的值GetFields返回一条记录所对应的记录项集合SetBound设置一条记录的几何边界
Feature
GetBound返回一条记录的几何边界SetGeometry设置与记录相应的几何形状GetGeometry返回与记录相应的几何形状
DataSource GetUniqueID返回即将创建图层的编号CreateDataSet创建一个图层数据类
DataSet GetType返回图层数据的几何类型
Table AddRow在图层数据类中记录尾添加一条记录
CalculateBound计算地图的最小边界框
GetBound返回地图的边界框FeatureClass GetFirstFeature返回地图数据的第一条记录
GetNextFeature返回地图数据的下一条记录
GetName返回图层数据类的名称
2.2.3 数据显示模块及类实现
LayerProperty (图层数据连接类)
ILayer(基类)
图层类:
ILayers(图层集合类)
MapLayer(图层类)
LayerProperty 将文件读取模块中获得的图层数据联系起来,为绘图显示作好数据准备。
MapLayer继承ILayer ,由LayerProperty初始化MapLayer ,类中封装了绘图类(ShpRender), ILayers 实现对各图层的管理,图层叠加显示。
IRender(基类)
显示类:ShpRender(绘图类)
MapControl(坐标及显示控制类)
MapControl是显示模块中最重要的类,实现地图坐标与屏幕坐标相互变换,显示,放
大、缩小、漫游、重置等功能。
在该类中采用了双缓冲技术来提高绘图速度,极大的改善了
绘图效果,原因是通常情况下都是直接在屏幕上绘图的,而使用内存设备上下文则可以在系
统内存中绘制图形。
内存设备上下文是一种特殊的设备上下文,它将系统内存用作显示表面。
程序可以使用内存设备上下文预先在系统内存中绘制复杂图形,然后再快速地将其复制到实际的设备上下文的显示表面上,而绘制图形的结果仍保存在内存设备上下文的
DDB(Device-dependent bitmap ) 中。
ShpRender 继承IRender 依据几何数据,完成对几何形状的绘制。
从光学的角度看,对物体的放大成像是通过把较小的真实物体显示成尺寸较大的虚像来
实现。
因此我们也可以用类似的原理,把图像中待放大的区域从较小的显示范围拉伸到一个
比较大的显示范围即可达到图像放大的效果。
两个区域的比值也就是图像的放大倍率。
可以通过缩小源区域的范围来实现放大倍率的调整。
缩小则是通过扩大源地图层边界框,使地图在实际地图边界框内占相对小的比例范围来达到缩小的目的。
漫游则是通过用鼠标拖动的距
离 dx、 dy 的正负来判断漫游方向,然后将m_pMapBuffer位图按漫游距离后进行复制到
m_pPaintBuffer 位图上,再将m_pPaintBuffer 位图复制到m_pMapBuffer位图上,再将视图中漫游移动后的两块区域在m_pMapBuffer 位图上进行重画,使这两块区域成为空白。
将最
后得到的m_pMapBuffer 位图再复制给m_pPaintBuffer 位图,由其直接复制给实际的设备显
示表面。
重置则是让地图根据当前视图窗口进行最佳显示,能让地图在操作后快速回到正常
状态。
类主要函数及功能说明见表 2.2:
表 2.2 类主要函数及功能说明
类主要函数功能说明
LayerProperty SetRelateDataSet设置与当前绘图相关的图层数据对象GetRelateDataSet返回与当前绘图相关的图层数据对象SetRender设置绘图对象
MapLayer
GetRender返回绘图对象GetProperty返回当前绘图的 LayerProperty 对象GetBound返回图层边界框
layers
Add向图层集尾添加一个图层GetLayer根据索引返回相应的图层对象
ShpRender Render绘制地图
GetLayers返回当前处理的图层集
ClientToWorld屏幕坐标到地理坐标的转换
WorldToClient地理坐标到屏幕坐标的转换
Reset根据当前屏幕尺寸设置地图边界框
ReDraw在内存中绘图
DrawMap显示地图
MapControl Refresh刷新重新显示地图
ZoomIn放大
ZoomOut缩小
Scroll漫游
ClearBuffer将指定设备上下文中指定区域刷成白色
SetViewBound根随屏幕尺寸的变化设置地图边界框
GetMouseListeners返回鼠标事件动作集合对象
2.2.4 鼠标事件模块及类实现
IMouseListener(基类 )
鼠标类:
CViewCtrlMouseListener(鼠标事件监听接口类)
CMouseListeners(鼠标事件动作集合类)
CMouseEvent(鼠标事件类 )以放大为例:当我们点下菜单栏上的放大图标时,给 CMouseListeners 对象传入两参数设置交互工具类型,通过m_nCurrentSubMouseListenerKey的值我们能知道当前对地图实施了
什么样的操作→放大控制,即地图在下一状态时会在相应位置放大。
void CGISMapView::OnZoomin()
{
// TODO: Add your command handler code here
CMouseListeners& mouselisteners = this->m_pMapControl->GetMouseListeners();
mouselisteners.SetCurrentMouseListenerKey(EMAP_TOOL_MAPVIEW_CONTROLLER,
EMAP_TOOL_ZOOMIN);
}
当我们在地图某位置点下鼠标左键时,此时产生一个WM_LBUTTONDOWN消息,同时创建 CMouseEvent 事件,存储控制源,当前点,鼠标状态及当前交互工具的子工具类型。
用其作为形参传入调用CViewCtrlMouseListener中的OnLButtonDown函数。
接着是WM_MOUSEONOVE和WM_LMOUSEUP消息。
按此同样的方式,最终都是调用CViewCtrlMouseListener中相应的函数来处理,完成地图放大、缩小等功能。
类主要函数及功能说明见表 2.3:
表 2.3 类主要函数及功能说明
类主要函数功能说明
GetPoint返回当前鼠标点值
CMouseEvent GetTool 返回当前交互工具的子工具
类型
GetSource返回操作控制源
OnLButtonDown鼠标左键点下控制CViewCtrlMouseListener OnLButtonUp鼠标右键点下控制
OnMouseDrag鼠标拖动控制
SetCurrentMouseListenerKey设置交互工具类型
CMouseListeners
GetCurrentMouseListener返回当前鼠标事件监听对象
返回当前交互工具的子工具GetCurrentSubMouseListenerKey
类型
第三章Shapefile 数据结构解析
Shape 文件是美国环境系统研究所(ESRI)所研制的G IS 文件系统格式文件,是工业标准的矢量数据文件。
Shape 文件将空间特征表中的非拓扑几何对象和属性信息存储在数据
集中,特征表中的几何对象存为以坐标点集表示的图形文件—SHP文件, Shape 文件并不含拓扑( Topological )数据结构。
一个Shape 文件至少包括三个文件:一个主文件(*.SHP) ,一个索引文件 (*.SHX) ,和一个 dBASE(*.DBF) 表。
主文件是一个直接存取,变长度记录的文
件,其中每个记录存储描述构成一个地理特征( Feature)的所有顶点坐标值。
在索引文件中,每条记录包含对应主文件记录距离主文件头开始的偏移量,dBASE表包含 SHP文件中每一个Feature 的特征属性,表中几何记录和属性数据之间的一一对应关系是基于记录数目的ID 。
在 dBASE文件中的属性记录必须和主文件中的记录顺序是相同的。
图形数据和属性数据通过
索引号建立一一对应的关系。
3.1 主文件(*.SHP)数据结构解析
3.1.1 主文件的组织
主文件( *.SHP )由固定长度的文件头和其后的变长度记录组成。
其中变长度记录是由
固定长度的记录头和变长度记录内容组成。
图 3.1 图解了主文件的结构。
文件头
记录头记录头记录头。
记录头
记录内容
记录内容
记录内容。
记录内容图 3.1主文件的结构
Shapefile 中所有的内容可以被分为二类:
与数据相关:
主文件记录内容
主文件头的数据描述域(Shape 类型,边界框等)与文件管理相关:
文件和记录长度
记录偏移等。