shape数据介绍(GIS)

一、简介

ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所公司(ESRI)开发的空间数据开放格式。目前,该文件格式已经成为了地理信息软件界的开放标准,这表明ESRI公司在全球的地理信息系统市场的重要性。Shapefile也是重要的交换格式,能够在ESRI与其他公司的产品之间进行数据互操作。

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

二、概览

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

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

Shapefile文件指的是一种文件存储的方法,实际上该种文件格式是由多个文件组成的。

ESRI 的 shape 文件由一个主文件(.shp)、一个索引文件(.shx)和一个 dBASE 表(.dbf)构成。主文件(.shp)是一个可变记录长度的随机文件,文件中的每个记录描述一个包含多个顶点的 shape。在索引文件(.shx)中,每个记录内容包含着与主文件中记录相对应的从主文件开始处的偏移量。dBASE 表(.dbf)中包含着与每个要素相对应的一条要素属性记录。几何数据与属性的一一对应关系是基于记录号来对应的。dBASE 文件中属性记录的顺序必须与主文件中的记录顺序相同。

其中,要组成一个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 III+ 的数据表格式存储每个几何形状的属性数据。

其他可选的文件:

.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)

主文件(.shp)用于记录空间坐标信息,包含一个固定长度的文件头,在文件头的后面存储着可变长度的记录。每个可变长度记录由一个固定长度的记录头和跟随其后的可变长度记录内容组成。

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

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

在这里插入图片描述
然后这个文件包含不定数目的变长数据记录,每个数据记录以一个8字节记录头开始:

在这里插入图片描述

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

在这里插入图片描述
变长记录的内容由图形的类型决定。Shapefile支持以下的图形类型:

在这里插入图片描述
在普通的使用中,Shapefile通常包含点、折线与多边形。带有Z坐标的形状是三维的。带有M坐标的形状是包含一个用户指定的测量值,该测量值定义在每一个点坐标之上。三维的Shapefile十分罕见。此外,实际应用中通常,Shapefile的M测量值这个功能已经被其他功能更加强大和稳健的数据库取代,Shapefile一般只负责几何数据。

四、Shapefile图形索引格式(.shx)

Shapefile的文件索引包含与.shp文件相同的100个字节的文件头,然后跟随着不定数目的8字节定长记录,每个记录都有两个字段。
在这里插入图片描述

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

五、Shapefile属性格式(.dbf)

dBASE 文件(.dbf)中包含任何需要的要素属性或可供其它表连接的属性关键字。它是标准的 DBF 格式文件,广泛应用于诸多的 Windows 和 DOS 平台上基于表格的应用程序。各类字段都可被引入到表中。

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

六、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文件之中已经包含了所有的解析空间数据所需的信息。

八、限制

1.Shapefile与拓扑

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

2.空间表达

在shapefile文件之中,所有的折线与多边形都是用点来定义,点与点之间采用线性插值,也就是说点与点之间都是用线段相连。在数据采集时,点与点之间的距离决定了该文件所使用的比例。当图形放大超过一定比例的时候,图形就会呈现出锯齿。要使图形看上去更加平滑,那么就必须使用更多的点,这样就会消耗更大的存储空间。在这种情况下,样条函数可以很精确地表达不同形状的曲线而且占据相对更少的空间,但是目前shapefile并不支持样条曲线。

3.数据存储量

.shp文件或.dbf文件最大的体积不能够超过2 GB(或231位)。也就是说,一个shapefile最多只能够存储七千万个点坐标。文件所能够存储的几何体的数目取决于单个要素所使用的顶点的数目。

属性数据库格式所使用的.dbf文件基于一个比较古老的dBase标准。这种数据库格式天生有许多限制,例如:
无法存储空值。这对于数量数据来说是一个严重的问题,因为空值通常都用0来代替,这样会歪曲很多统计表达的结果。

对字段名或存储值中的Unicode支持不理想。
字段名最多只能够有10个字符。
最多只能够有255个字段。

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

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

4、混合几何类型

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

九、总结

重点记住shp、shx、dbf、prj都存储的是什么,其他的不常用。

shpfile的索引编码不是固定的,既每次在软件中打开的时候,FID都是变化的,举例来说,假设我有一个省边界文件province.shp,第一次在QGIS中打开,辽宁省的FID是1,再重新打开一下,辽宁省的FID可能就是2了,文件的FID,既feature id是不固定的,所以,要做数据标识,得拿其他字段来做,或者干脆新建一个字段id做索引。

Shpfile应该是最常用的地理信息数据格式文件,了解它的格式说明还是很有必要的。

GIS shape文件之中国数据SHAPEFILE_OF_CHINA ..................\Lambert ..................\.......\chinamap.mxd ..................\.......\hillshade_10k ..................\.......\.............\dblbnd.adf ..................\.......\.............\hdr.adf ..................\.......\.............\metadata.xml ..................\.......\.............\prj.adf ..................\.......\.............\sta.adf ..................\.......\.............\vat.adf ..................\.......\.............\w001001.adf ..................\.......\.............\w001001x.adf ..................\.......\hillshade_10k.aux ..................\.......\hillshade_10k.rrd ..................\.......\info ..................\.......\....\arc.dir ..................\.......\....\arc0000.dat ..................\.......\....\arc0000.nit ..................\.......\....\arc0001.dat ..................\.......\....\arc0001.nit ..................\.......\....\arc0002.dat ..................\.......\....\arc0002.nit ..................\.......\....\arc0002r.001 ..................\.......\中国县界.dbf ..................\.......\中国县界.prj ..................\.......\中国县界.sbn ..................\.......\中国县界.sbx ..................\.......\中国县界.shp ..................\.......\中国县界.shx ..................\.......\中国地州界.dbf ..................\.......\中国地州界.prj ..................\.......\中国地州界.sbn ..................\.......\中国地州界.sbx ..................\.......\中国地州界.shp ..................\.......\中国地州界.shx ..................\.......\中国湖泊.dbf ..................\.......\中国湖泊.prj ..................\.......\中国湖泊.sbn ..................\.......\中国湖泊.sbx ..................\.......\中国湖泊.shp ..................\.......\中国湖泊.shp.xml ..................\.......\中国湖泊.shx ..................\.......\主要公路.dbf ..................\.......\主要公路.prj ..................\.......\主要公路.sbn ..................\.......\主要公路.sbx ..................\.......\主要公路.shp ..................\.......\主要公路.shx ..................\.......\主要河流.dbf ..................\.......\主要河流.prj ..................\.......\主要河流.sbn ..................\.......\主要河流.sbx ..................\.......\主要河流.shp ..................\.......\主要河流.shx ..................\.......\主要铁路.dbf ..................\.......\主要铁路.prj ..................\.......\主要铁路.sbn ..................\.......\主要铁路.sbx ..................\.......\主要铁路.shp ..................\.......\主要铁路.shx ..................\.......\全国县级统计数据.dbf ..................\.......\全国县级统计数据.prj ..................\.......\全国县级统计数据.sbn ..................\.......\全国县级统计数据.sbx ..................\.......\全国县级统计数据.shp ..................\.......\全国县级统计数据.shp.xml ..................\.......\全国县级统计数据.shx ..................\.......\县城驻地.dbf ..................\.......\县城驻地.prj ..................\.......\县城驻地.sbn ..................\.......\县城驻地.sbx ..................\.......\县城驻地.shp ..................\.......\县城驻地.shx ..................\.......\国界线.dbf ..................\.......\国界线.prj ..................\.......\国界线.sbn ..................\.......\国界线.sbx ..................\.......\国界线.shp ..................\.......\国界线.shp.xml ..................\.......\国界线.shx ..................\.......\地级城市驻地.dbf ..................\.......\地级城市驻地.prj ..................\.......\地级城市驻地.sbn ..................\.......\地级城市驻地.sbx ..................\.......\地级城市驻地.shp ..................\.......\地级城市驻地.shx ..................\.......\省会城市.dbf ..................\.......\省会城市.prj ..................\.......\省会城市.sbn ..................\.......\省会城市.sbx ..................\.......\省会城市.shp ..................\.......\省会城市.shx ..................\.......\省级行政区.dbf ..................\.......\省级行政区.prj ..................\.......\省级行政区.sbn ..................\.......\省级行政区.sbx ..................\.......\省级行政区.shp ..................\.......\省级行政区.shx ..................\.......\线状县界.dbf ..................\.......\线状县界.prj
全球行政区划shapefile数据,包含全球行政区划数据。NAME GMI_CNTRY REGION Afghanistan AFG Asia Albania ALB Europe Algeria DZA NorthAfrica Andorra AND Europe Angola AGO Sub Saharan Africa Antarctica ATA Antarctica Antigua and Barbuda ATG Caribbean Argentina ARG Latin America Armenia ARM Asia Australia AUS Australia Austria AUT Europe Azerbaijan AZE Asia Bahamas, The BHS Caribbean Bahrain BHR Asia Bangladesh BGD Asia Barbados BRB Caribbean Belgium BEL Europe Belize BLZ Latin America Benin BEN Sub Saharan Africa Bermuda BMU North America Bhutan BTN Asia Bolivia BOL Latin America Bosnia and Herzegovina BIH Europe Botswana BWA Sub Saharan Africa Brazil BRA Latin America Brunei BRN Asia Bulgaria BGR Europe Burkina Faso BFA Sub Saharan Africa Burundi BDI Sub Saharan Africa Byelarus BLR Europe Cambodia KHM Asia Cameroon CMR Sub Saharan Africa Canada CAN North America Cape Verde CPV Sub Saharan Africa Central African Republic CAF Sub Saharan Africa Chad TCD Sub Saharan Africa Chile CHL Latin America China CHN Asia Colombia COL Latin America Comoros COM Sub Saharan Africa Congo COG Sub Saharan Africa Costa Rica CRI Latin America Croatia HRV Europe Cuba CUB Caribbean Cyprus CYP Asia Czech Republic CZE Europe Denmark DNK Europe Djibouti DJI Sub Saharan Africa Dominica DMA Caribbean Dominican Republic DOM Caribbean Ecuador ECU Latin America Egypt EGY NorthAfrica El Salvador SLV Latin America Equatorial Guinea GNQ Sub Saharan Africa Eritrea ERI Sub Saharan Africa Estonia EST Europe Ethiopia ETH Sub Saharan Africa Falkland Islands (Islas Malvinas) FLK Latin America Faroe Islands FRO Europe Fiji FJI Asia Finland FIN Europe France FRA Europe French Guiana GUF Latin America French Polynesia PYF Pacific Gabon GAB Sub Saharan Africa Gambia, The GMB Sub Saharan Africa Gaza Strip ISR Asia Georgia GEO Asia Germany DEU Europe Ghana GHA Sub Saharan Africa Greece GRC Europe Greenland GRL North America Grenada GRD Caribbean Guadeloupe GLP Caribbean Guatemala GTM Latin America Guinea GIN Sub Saharan Africa Guinea-Bissau GNB Sub Saharan Africa Guyana GUY Latin America Haiti HTI Caribbean Honduras HND Latin America Hungary HUN Europe Iceland ISL Europe India IND Asia Indonesia IDN Asia Iran IRN Asia Iraq IRQ Asia Iraq-Saudi Arabia Neutral Zone Asia Ireland IRL Europe Isle of Man XIM Europe Israel ISR Asia Italy ITA Europe Ivory Coast CIV Sub Saharan Africa Jamaica JAM Caribbean Jan Mayen SJM Europe Japan JPN Asia Jordan JOR Asia Kazakhstan KAZ Asia Kenya KEN Sub Saharan Africa Kerguelen Antarctica Kiribati KIR Asia Korea, Peoples Republic of PRK Asia Korea, Republic of KOR Asia Kuwait KWT Asia Kyrgyzstan KGZ Asia Laos LAO Asia Latvia LVA Europe Lebanon LBN Asia Lesotho LSO Sub Saharan Africa Liberia LBR Sub Saharan Africa Libya LBY NorthAfrica Liechtenstein LIE Europe Lithuania LTU Europe Luxembourg LUX Europe Macedonia MKD Europe Madagascar MDG Sub Saharan Africa Malawi MWI Sub Saharan Africa Malaysia MYS Asia Maldives MDV Pacific Mali MLI Sub Saharan Africa Malta MLT Pacific Martinique MTQ Caribbean Mauritania MRT Sub Saharan Africa Mauritius MUS Sub Saharan Africa Mexico MEX Latin America Moldova MDA Europe Monaco MCO Europe Mongolia MNG Asia Morocco MAR NorthAfrica Mozambique MOZ Sub Saharan Africa Myanmar (Burma) MMR Asia Namibia NAM Sub Saharan Africa Nepal NPL Asia Netherlands NLD Europe New Caledonia NCL Asia New Zealand NZL Australia Nicaragua NIC Latin America Niger NER Sub Saharan Africa Nigeria NGA Sub Saharan Africa Northern Mariana Islands MNP Pacific Norway NOR Europe Oman OMN Asia Pakistan PAK Asia Panama PAN Latin America Papua New Guinea PNG Asia Paraguay PRY Latin America Peru PER Latin America Philippines PHL Asia Poland POL Europe Portugal PRT Europe Puerto Rico PRI Caribbean Qatar QAT Asia Reunion REU Sub Saharan Africa Romania ROM Europe Russia RUS Europe Rwanda RWA Sub Saharan Africa San Marino SMR Europe Sao Tome and Principe STP Sub Saharan Africa Saudi Arabia SAU Asia Senegal SEN Sub Saharan Africa Seychelles SYC Sub Saharan Africa Sierra Leone SLE Sub Saharan Africa Singapore SGP Pacific Slovakia SVK Europe Slovenia SVN Europe Solomon Islands SLB Asia Somalia SOM Sub Saharan Africa South Africa ZAF Sub Saharan Africa Spain ESP Europe Sri Lanka LKA Asia St. Christopher-Nevis Caribbean St. Lucia LCA Caribbean St. Vincent and the Grenadines VCT Caribbean Sudan SDN Sub Saharan Africa Suriname SUR Latin America Svalbard SJM Europe Swaziland SWZ Sub Saharan Africa Sweden SWE Europe Switzerland CHE Europe Syria SYR Asia Tajikistan TJK Asia Tanzania, United Republic of TZA Sub Saharan Africa Thailand THA Asia Togo TGO Sub Saharan Africa Tonga TON Pacific Trinidad and Tobago TTO Caribbean Tunisia TUN NorthAfrica Turkey TUR Asia Turkmenistan TKM Asia Turks and Caicos Islands TCA Caribbean Uganda UGA Sub Saharan Africa Ukraine UKR Europe United Arab Emirates ARE Asia United Kingdom GBR Europe United States USA North America Uruguay URY Latin America Uzbekistan UZB Asia Vanuatu VUT Asia Venezuela VEN Latin America Vietnam VNM Asia Western Sahara ESH NorthAfrica Western Samoa WSM Pacific Yemen YEM Asia Yugoslavia YUG Europe Zaire ZAR Sub Saharan Africa Zambia ZMB Sub Saharan Africa Zimbabwe ZWE Sub Saharan Africa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值