shape文件由ESRI开发,一个ESRI(Environmental Systems Research Institute)的shape文件包括一个主文件,一个索引文件,和一个dBASE表。其中主文件的后缀就是.shp.

ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所公司(ESRI)开发的一种空间数据开放格式。

Shapefile文件用于描述几何体对象:点,折线与多边形。例如,Shapefile文件可以存储井、河流、湖泊等空间对象的几何位置。除了几何位置,shp文件也可以存储这些空间对象的属性,例如一条河流的名字,一个城市的温度等等。

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投影描述符的文本文件。

  • .sbnand.sbx— 几何体的空间索引

  • .fbnand.fbx— 只读的Shapefiles的几何体的空间索引

  • .ainand.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技术描述.提供。注意,虽然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(或2位)。也就是说,一个shapefile最多只能够存储七千万个点坐标。文件所能够存储的几何体的数目取决于单个要素所使用的顶点的数目。

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

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

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

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

  • 最多只能够有255个字段。

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

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

混合几何类型

由于在每一条几何记录中都有该记录的几何类型,所以理论上一个shapefile是可以存储混合的几何类型。但实际上规范中指出在同一shapefile之中所有非空的几何体都必须是同一类型 [1]  。因此shapefile被限制为仅仅可以混合存储空几何体和另一单一几何体,该几何体的类型必须与文件头中定义的类型一致。例如,一个shapefile文件不可能同时包含折线与多边形数据,所以,在实际的地理事物描述中,井(点类型)、河(折线类型)与湖(多边形类型)必须分开存储在三个不同的文件之中。

SHP(shapefile)文件相关推荐

  1. SHP(shapefile)文件详细格式介绍

    shape文件由ESRI开发,一个ESRI(Environmental Systems Research Institute)的shape文件包括一个主文件,一个索引文件,和一个dBASE表.其中主文 ...

  2. ncl 添加点shp文件_一:python读取shapefile文件

    使用geopandas读取shapefile格式的矢量文件 包括shapefile文件的读取.修改.保存 import geopandas as gpd # 导入包 segpath = r" ...

  3. .shp文件的存储结构是怎样的?底层读取shapefile文件

    .shp文件的存储结构是怎样的?底层读取shapefile文件 基础知识 shp的存储结构 python 字节流读取Shp文件 基础知识 大家都比较熟悉shp文件,它是GIS软件可以读取的矢量文件.但 ...

  4. shapefile文件(shp)读取

    shapefile是GIS中一种数据类型,在ArcGIS中被称为要素类(Feature Classes),主要包括点(point).线(polyline)和多边形(polygon). 解析geopan ...

  5. 基于pythonarcpy的批量CAD/dwg文件转shp/shapefile

    前言 在将多个CAD图纸合并到一张图上,或者实现图形的数据库管理时,往往会面临数据坐标转换和格式转换的问题,当前主流是统一用shapefile或者gdb地理数据库等方式进行管理. CAD转shapef ...

  6. 如何将Shapefile(Shp)文件转换为AutoCAD(Dwg、Dxf)文件?

    ESRI Shapefile(shp),或简称shapefile,是一种空间数据开放格式.目前,该文件格式已经成为了地理信息软件界的一个开放标准.Shapefile也是一种重要的交换格式,它能够在ES ...

  7. java实现shapefile文件的解析

    必须的文件: .shp- 图形格式,用于保存元素的几何实体. .shx- 图形索引格式.几何体位置索引,记录每一个几何体在shp文件之中的位置,能够加快向前或向后搜索一个几何体的效率. .dbf- 属 ...

  8. GeoServer学习笔记-2、基本使用(发布shapefile文件)

    一.shapefile文件 ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所公司(ESRI)开发的一种空间数据开放格式,用于描述几何体对象:点,折线与多边形,仅仅 ...

  9. 使用gdal的ogr创建shapefile文件(c++)

    1.ogr 使用ogr库创建点状要素的shapefile文件以及将经纬度坐标转为投影坐标.实例如下: #include "ogrsf_frmts.h" #include " ...

  10. 打开Shapefile文件的正确方式

    打开Shapefile文件的正确方式 作者:阿振 邮箱:tanzhenyugis@163.com 博客:https://blog.csdn.net/theonegis/article/details/ ...

最新文章

  1. JTable动态显示隐藏列
  2. Kubernetes(五) - Service
  3. jQuery EasyUI API 中文文档 - 数字框(NumberBox)
  4. JNI错误记录--JNI程序调用本地库时JVM崩溃
  5. 报名倒计时 | 挣脱流量束缚,社交电商的未来在哪里?
  6. gridview中的nbsp;问题解决方法
  7. mysql 从库_mysql数据库主从配置
  8. C++(STL):29 ---关联式容器map 迭代器
  9. 诚邀参加微软.NET俱乐部10月24日Windows 7社区发布会
  10. 虚拟机下安装ubuntu后root密码设置
  11. linux mysql 5.7.10_CentOS7 安装 MySQL 5.7.10
  12. 在linux添加驱动程序,linux下静态/动态加载驱动的两种方式
  13. ecshop dwt替换为html,修改ecshop模板中lbi和dwt文件需知
  14. cad 打开硬件加速卡_谁说没有核显就不能开启硬件加速?手把手教你开启加速
  15. 视觉中国财报背后的版权门余波
  16. Wikipedia iOS客户端源码
  17. 傻博士----物理层
  18. maven 指令之package 和install的区别
  19. Flash ActionScript3 殿堂之路 第一章:ActionScript3语言介绍与开发环境
  20. Mediapipe人脸关键点检测

热门文章

  1. (JS)蔚蓝网上书店(课本案例)
  2. java7安装教程_JAVA JDK7安装和配置 JAVA JDK7安装配置教程
  3. opendss视频教程
  4. 有关 delphi7读取 excel 报错EoleException with message '未找到提供程序,该程序可能未能正确安装' 解决方式
  5. unity VideoPlayer播放完成事件
  6. vc6.0到vc 2008(vc 9.0)的变化
  7. 手动升级麦咖啡(McAfee)病毒库的步骤
  8. 华三服务器bios中查看硬盘,H3C服务器升级BIOS
  9. linux和cisco有关系吗,如何在Linux环境下安装Cisco RTMT
  10. “Error launching Console Application PDFLaTeX ... “的解决方法