可以做免费推广的网站吗网站开发项目经验总结教训
介绍
Shapefile文件格式是一种矢量图形格式,它能够保存几何图形的位置和相关属性,但是它没法存储地理数据的拓扑信息,所以shapefile文件经常是和其他文件一起使用,本文主要关注shapefile文件的结构组成,关于shapefile文件的详细描述可以参考百度百科中关于shapefile文件的描述。
文件结构
Shapefile文件由文件头和内容两个部分组成,其中文件头是由固定长度的数据组成,具体如下:
| Bytes | Field | Value | Type | Byte Order |
|---|---|---|---|---|
| 0-3 | File Code | 9994 | Integer | Big Endian |
| 4-23 | Unused | 0 | Integer | Big Endian |
| 24-27 | File Length | File Length | Integer | Big Endian |
| 28-31 | Version | 1000 | Integer | Little Endian |
| 32-35 | Shape Type | Shape Type | Integer | Little Endian |
| 36-67 | Minimum Bounding Rectangle | Xmin, Ymin, Xmax and Ymax | double | Little Endian |
| 68-83 | Bounding Box | Zmin, Zmax | double | Little Endian |
| 84-99 | Bounding Box | Mmin, Mmax | double | Little Endian |
需要注意的是文件中的的File Length是16位字表示的,所以使用时注意转换,在内容部分,我们也会看到相同的表示
在文件头中有个比较特殊的字段Shape Type, 它用来描述shapefile文件表示的几何图形类型,所有值对应的几何类型如下:
| Value | Shape Type |
|---|---|
| 0 | Null Shape |
| 1 | Point |
| 3 | Polyline |
| 5 | Polygon |
| 8 | MultiPoint |
| 11 | PointZ |
| 13 | PolyLineZ |
| 15 | PolygonZ |
| 18 | MultiPointZ |
| 21 | PointM |
| 23 | PolyLineM |
| 25 | PolygonM |
| 28 | MultiPointM |
| 31 | MultiPatch |
Shapefile文件头后跟着的就是不定长度的文件内容,Shapefile文件内容由许多record组成,每个record由固定长度的header和可变长度的content两个部分组成,header部分如下:
| Bytes | Field | Value | Byte Order |
|---|---|---|---|
| 0-3 | Record Number | Record Number | Big Endian |
| 4-7 | Record Length | Record Length | Big Endian |
content部分包含具体的描述几何结构的数据内容,如当前record表示点信息的时候,content的结构如下:
| Bytes | Shape Type | Value | Type | Number | Byte Order |
|---|---|---|---|---|---|
| 0-3 | Shape Type | 1 | Integer | 1 | Little Endian |
| 4-11 | X | X | Double | 1 | Little Endian |
| 12-19 | Y | Y | Double | 1 | Little Endian |
其他几何类型的数据结构可以参考ESRI Shapefile Technical Description,下面是ESRI中关于Polygon的结构描述:

