前言

呵呵,看到数据文件里面有.dbf的竟然不认识,丢人喽丢人喽,补补,摘自:http://zh.wikipedia.org/wiki/Shapefile

内容

Shapefile属于一种矢量图形格式,它能够保存几何图形的位置及相关属性。但这种格式没法存储地理数据的拓扑信息。Shapefile在九十年代初的ArcView GIS的第二个版本被首次应用。目前,许多自由的程序或商业的程序都可以读取Shapefile。

Shapefile是一种比较原始的矢量数据存储方式,它仅仅能够存储几何体的位置数据,而无法在一个文件之中同时存储这些几何体的属性数据。因 此,Shapefile还必须附带一个二维表用于存储Shapefile中每个几何体的属性信息。Shapefile中许多几何体能够代表复杂的地理事 物,并为他们提供强大而精确的计算能力。

Shapefile文件指的是一种文件存储的方法,实际上该种文件格式是由多个文件组成的。其中,要组成一个Shapefile,有三个文件是必不可少的,它们分别是".shp", ".shx"与 ".dbf" 文件。表示同一数据的一组文件其文件名前缀应该相同。例如,存储一个关于湖的几何与属性数据,就必须有lake.shp,lake.shx与 lake.dbf三个文件。而其中“真正”的Shapefile的后缀为shp,然而仅有这个文件数据是不完整的,必须要把其他两个附带上才能构成一组完 整的地理数据。除了这三个必须的文件以外,还有八个可选的文件,使用它们可以增强空间数据的表达能力。所有的文件名都必须遵循MS DOS的8.3文件名标准(文件前缀名8个字符,后缀名3个字符,如shapefil.shp),以方便与一些老的应用程序保持兼容性,尽管现在许多新的程序都能够支持长文件名。此外,所有的文件都必须位于同一个目录之中。

必须的文件:

.shp — 图形格式,用于保存元素的几何实体。

.shx — 图形索引格式。几何体位置索引,记录每一个几何体在shp文件之中的位置,能够加快向前或向后搜索一个几何体的效率。

.dbf — 属性数据格式,以dBase IV的数据表格式存储每个几何形状的属性数据。

其他可选的文件:

.prj — 投影格式,用于保存地理坐标系统与投影信息,是一个存储well-known text投影描述符的文本文件。

.sbn and .sbx — 几何体的空间索引

.fbn and .fbx — 只读的Shapefiles的几何体的空间索引

.ain and .aih — 列表中活动字段的属性索引。

.ixs — 可读写Shapefile文件的地理编码索引

.mxs — 可读写Shapefile文件的地理编码索引(ODB格式)

.atx — .dbf文件的属性索引,其文件名格式为shapefile.columnname.atx (ArcGIS 8及之后的版本)

.shp.xml — 以XML格式保存元数据。

.cpg — 用于描述.dbf文件的代码页,指明其使用的字符编码。

在每个.shp, .shx与.dbf文件之中,图形在每个文件的排序是一致的。也就是说,.shp的第一条记录与.shx及.dbf之中的第一条记录相对应,如此类推。此外,在.shp与.shx之中,有许多字段的字节序是不一样的。因此用户在编写读取这些文件格式的程序时,必须十分小心地处理不同文件的不同字节序。

Shapefile通常以X与Y的方式来处理地理坐标,一般X对应经度,Y对应纬度,用户必须注意X,Y的顺序。

Shapefile图形格式 (.shp)

Shapefile格式的主文件包含了地理参照数据。该文件由一个定长的文件头和一个或若干个变长的记录数据组成。每一条变长数据记录包含一个记录头和一些记录内容。详细的数据存储格式由Esri Shapefile技术描述.AutoCAD的图形字体源格式它们的文件后缀名相同的,都是.shp ,请不要把它们混淆。

主文件头包含17个字段,共100个字节,其中包含九个4字节(32位有符号整数,int32)整数字段,紧接着是八个8字节(双精度浮点数)有符号浮点数字段。

字节类型用途

0–3

int32

大端序

文件编号 (永远是十六进制数0x0000270a)

4–23

int32

大端序

五个没有被使用的32位整数

24–27

int32

大端序

文件长度,包括文件头。(用16位整数表示)

28–31

int32

小端序

版本

32–35

int32

小端序

图形类型(参见下面)

36–67

double

小端序

最小外接矩形 (MBR),也就是一个包含shapefile之中所有图形的矩形。以四个浮点数表示,分别是X坐标最小值,Y坐标最小值,X坐标最大值,Y坐标最大值。

68–83

double

小端序

Z坐标值的范围。以两个浮点数表示,分别是Z坐标的最小值与Z坐标的最大值。

84–99

double

小端序

M坐标值的范围。以两个浮点数表示,分别是M坐标的最小值与M坐标的最大值。

然后这个文件包含不定数目的变长数据记录,每个数据记录以一个8字节记录头开始:

字节类型用途

0–3

int32

大端序

记录编号 (从1开始)

4–7

int32

大端序

记录长度(以16位整数表示)

在记录头的后面就是实际的记录:

字节类型用途

0–3

int32

小端序

图形类型(参见下面)

4–

-

-

图形内容

变长记录的内容由图形的类型决定。Shapefile支持以下的图形类型:

值图形类型字段

0

空图形

1

Point(点)

X, Y

3

Polyline(折线)

(最小包围矩形)MBR,组成部分数目,点的数目,所有组成部分,所有点

5

Polygon(多边形)

(最小包围矩形)MBR,组成部分数目,点的数目,所有组成部分,所有点

8

MultiPoint(多点)

(最小包围矩形)MBR,点的数目,所有点

11

PointZ(带Z与M坐标的点)

X, Y, Z, M

13

PolylineZ(带Z或M坐标的折线)

必须的: (最小包围矩形)MBR,组成部分数目,点的数目,所有组成部分,所有点,Z坐标范围, Z坐标数组

可选的: M坐标范围, M坐标数组

15

PolygonZ(带Z或M坐标的多边形)

必须的: (最小包围矩形)MBR,组成部分数目,点的数目,所有组成部分,所有点,Z坐标范围, Z坐标数组

可选的: M坐标范围, M坐标数组

18

MultiPointZ(带Z或M坐标的多点)

必须的: (最小包围矩形)MBR,点的数目,所有点, Z坐标范围, Z坐标数组

可选的: M坐标范围, M坐标数组

21

PointM(带M坐标的点)

X, Y, M

23

PolylineM(带M坐标的折线)

必须的: (最小包围矩形)MBR,组成部分数目,点的数目,所有组成部分,所有点

可选的: M坐标范围, M坐标数组

25

PolygonM(带M坐标的多边形)

必须的: (最小包围矩形)MBR,组成部分数目,点的数目,所有组成部分,所有点

可选的: M坐标范围, M坐标数组

28

MultiPointM(带M坐标的多点)

必须的: (最小包围矩形)MBR,点的数目,所有点

可选的: M坐标范围, M坐标数组

31

MultiPatch

必须的: (最小包围矩形)MBR,组成部分数目,点的数目,所有组成部分,所有点,Z坐标范围, Z坐标数组

可选的: M坐标范围, M坐标数组

在普通的使用中,Shapefile通常包含点、折线与多边形。带有Z坐标的形状是三维的。带有M坐标的形状是包含一个用户指定的测量值,该测量值

定义在每一个点坐标之上。三维的Shapefile十分罕见。此外,实际应用中通常,Shapefile的M测量值这个功能已经被其他功能更加强大和稳健

的数据库取代,Shapefile一般只负责几何数据。

Shapefile图形索引格式(.shx)

Shapefile的文件索引包含与.shp文件相同的100个字节的文件头,然后跟随着不定数目的8字节定长记录,每个记录都有两个字段:

字节类型用途

0–3

int32

大端序

记录位移(用16位整数表示)

4–7

int32

大端序

记录长度(用16位整数表示)

因为这个图形索引每个数据项都是定长的,因此程序只要在这个图形索引中向前或向后遍历,读取索引中所记录的记录位移与记录长度,程序就可以很快地向前或向后遍历整个Shapefile,在.shp文件中找到任意一个几何体的正确位置。

Shapefile属性格式(.dbf)

每个图形的属性数据存储在dBase格式的数据表之中。属性数据也可以存储在另一种开放的数据表格式xBase格式之中。在开源Shapefile函式库Shapefile C library

Shapefile投影格式(.prj)

.prj文件中的信息包含了.shp文件中几何数据所使用的经纬度坐标系统。尽管这个文件不是必须的,一般使用都会提供它,这样用户就无需猜测所给的坐标的经纬度系统。ArcGIS Desktop 9及以后的版本使用well-known text格式来生成坐标系统描述信息。以前的ArcGIS版本和某些第三方软件通常生成如下的这种格式:

老的投影文件格式样例:

Projection UTM

Zunits NO

Units METERS

Spheroid CLARKE1866

Xshift 0.0000000000

Yshift -4000000.0000000000

Parameters

-108 0 0.000 /* longitude

36 0 0.000 /* latitude

新的WKT格式样例:

GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0],UNIT"Degree",0.0174532925199433

.prj文件中包含以下信息:

经纬度坐标系统或地图投影的名称

所使用的单位

用于定义地图投影的参数,例如:

纬度原点

缩放比例

中央经线

北伪偏移

东伪偏移

标准纬线

Shapefile空间索引格式(.sbn)

这是一个二进制的空间索引文件,仅仅可以应用在ESRI的软件之中。其文件格式没有公开的文档,其他厂商也没有实现这个文件。.sbn并不是必须的,因为.shp文件之中已经包含了所有的解析空间数据所需的信息。

限制

Shapefile与拓扑

Shapefile无法存储拓扑信息。在ESRI的文件格式中,ArcInfo 的Coverage、以及Personal/File/Enterprise地理数据库,能够保存地理要素的拓扑信息。

空间表达

在shapefile文件之中,所有的折线与多边形都

是用点来定义,点与点之间采用线性插值,也就是说点与点之间都是用线段相连。在数据采集时,点与点之间的距离决定了该文件所使用的比例。当图形放大超过一

定比例的时候,图形就会呈现出锯齿。要使图形看上去更加平滑,那么就必须使用更多的点,这样就会消耗更大的存储空间。在这种情况下,样条函数可以很精确地表达不同形状的曲线而且占据相对更少的空间,但是目前shapefile并不支持样条曲线。

数据存储量

.shp文件或.dbf文件最大的体积不能够超过2 GB(或231位)。也就是说,一个shapefile最多只能够存储七千万个点坐标。

属性数据库格式所使用的.dbf文件基于一个比较古老的dBase标准。这种数据库格式天生有许多限制,例如:

无法存储空值。这对于数量数据来说是一个严重的问题,因为空值通常都用0来代替,这样会歪曲很多统计表达的结果。

对字段名或存储值中的Unicode支持不理想。

字段名最多只能够有10个字符。

最多只能够有255个字段。

只支持以下的数据类型:浮点类型(13字节存储空间),整数(4或9字节存储空间),日期(不能够存储时间,8字节存储空间)和文本(最大254字节存储空间)

浮点数有可能包含舍入错误,因为它们以文本的形式保存。

混合几何类型

由于在每一条几何记录中都有该记录的几何类型,所以理论上一个shapefile是可以存储混合的几何类型。但实际上规范中指出在同一

shapefile之中所有非空的几何体都必须是同一类型。因此shapefile被限制为仅仅可以混合存储空几何体和另一单一几何体,该几何体的类型必

须与文件头中定义的类型一致。例如,一个shapefile文件不可能同时包含折线与多边形数据,所以,在实际的地理事物描述中,井(点类型)、河(折线

类型)与湖(多边形类型)必须分开存储在三个不同的文件之中。

创建shap文件的属性字段类型区别_shapefile数据文件组成相关推荐

  1. 创建shap文件的属性字段类型区别_在ArcGIS中为Shapefile属性表增加字段

    摘要: 属性描述了要素的相关特性,并存储于表中.在创建新的属性表或是向已有的属性表中增加字段的时候,必须指明数据类型和字段属性,比如精度(Precision)或长度(Length).数据类型的选择和相 ...

  2. Django创建数据库(Django数据库字段类型)

    创建默认数据库 项目中数据库的配置在 你的项目/settings.py 中 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3 ...

  3. Django创建应用,app注册,Filed字段类型解析,魔术方法str使用。

    这篇博客根据上文Django创建第一个项目- ,从而在项目中跟进创建一个应用,以及app的注册, 模型models中的filed字段类型解析, 魔术方法 str 的使用. 工具: pycharm202 ...

  4. 文件的属性 计算机知识,计算机基础知识文件的属性(二)

    计算机基础知识文件的属性(二) 我们就继续往下讲."名称"后面是"大小",表示文件的信息量,也就是说它在硬盘上占用的空间.还记得我们说过硬盘的和软盘的大小吗? ...

  5. JSON文件的应用——记录类型的用户数据存储

    章节索引 前提 从问题出发 JSON和XML 专精JSON JSON文件读与写 (1)读JSON文件 (2)正向映射 (3)反向映射 (4)写JSON文件 后记 前提 之前一直有个问题没有弄清楚,就是 ...

  6. 【已阅】文件权限属性八进制表示法,chmod(文件权限属性更改),chown,chgrp指令,默认/实际起始权限与umask权限掩码关系,文件删除与粘滞位问题等

    文件权限属性的八进制表示法 这个其实非常简单,因为文件权限属性也就三种,也就是可读,可写或者可执行. 然后对于这三种文件权限属性都是2元式的,要么行,要么不行,因此可以用0和1来表示,0表示没该权限, ...

  7. centos7创建asm磁盘_ASM环境下防止误将数据文件扩容到本地文件系统的方法

    前言 时常会接到客户或一线工程师反馈oracle数据库报"ora-01110"等错误,本人过往也处理过好几次类似的故障,发现基本上是由于开发人员或初级维护人员在执行数据库表空间扩容 ...

  8. 用python读取dat文件,wifi数据采集工具csi tool数据文件(.dat文件)解析

    项目地址: https://github.com/hongshixian/CSI_reader 前言 数据采集工具csi_tool采集数据并保存为后缀.dat的数据文件,在csi_tool中提供一个c ...

  9. linux追加SQL结果到文件,RAC环境下误操作将数据文件添加到本地存储

    今天碰到个有意思的事情,有客户在Oracle RAC环境,误操作将新增的数据文件直接创建到了其中一个节点的本地存储上.发现网上去搜的话这种问题还真不少,对应解决方案也各式各样,客户问我选择哪种方案可行 ...

  10. mysql cluster 数据文件_mysql-【求救】关于MYSQL CLUSTER数据文件存放节点错误问题

    SQL节点,DATA节点均已配置正常,但是出现一个匪夷所思的问题. 在33节点执行了建库脚本及建表脚本,发现数据文件在33和34两个SQL节点存在,按理说数据文件应该数据节点上的DATADIR. Co ...

最新文章

  1. Ubuntu11.04更新源(转)
  2. Jerry开发的SAP note工具
  3. java实现红包要多少钱_Java实现抢红包算法,附完整代码(公平版和手速版)
  4. react hooks使用_何时使用React Suspense和React Hooks
  5. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_02-自定义查询页面-服务端-接口开发...
  6. Google+ about Gmail?
  7. C语言 计算个人所得税
  8. html短期总结(至表单)
  9. C++解决八皇后问题
  10. kindle paperwhite2 越狱备忘
  11. 【Mobile】CTA认证
  12. python中检测键盘(上下左右) 代码
  13. 汉诺塔问题(Towers of Hanoi)
  14. 简单的图书馆借/还系统——C++实现
  15. python使用XPATH爬取电影票房
  16. 回顾知识付费近几年的发展历程,浅谈知识付费项目的发展空间
  17. 笔记2——《黑客与画家》
  18. 架构那点事系列三 - 由EAI到ESB
  19. android 设备管理和凭证,设备管理下载-设备管理安卓版下载-Appfound
  20. python bing 风景图爬取

热门文章

  1. iOS开发之第三方支付-银联支付
  2. 机器人动力学-拉格朗日方程
  3. 神经网络学习小记录55——Keras搭建常见分类网络平台(VGG16、MobileNet、ResNet50)
  4. 微信Bscroll事件
  5. android中jni的调用过程,Android中JNI的调用生成头文件步骤
  6. DELMIA软件弧焊仿真:以零件面与面相交线为焊缝的机器人弧焊焊接
  7. 郝斌 mysql_郝斌 SqlServer2005 学习笔记
  8. 流媒体服务器分发RTSP视频流并发压力测试
  9. 计算机维护测试工作,(人才测评)桌面运维工程师的招聘入职测评方案
  10. 无监督学习之稀疏编码,自编码