Shp文件格式之-dbf文件

DBF文件格式

1. GeoTools DBF文件头计算

DBF头文件分为两个部分。第1部分占10个字节,保存文件标识、时间、数据量和DBF文件头字节长度;第2部分为变长长度,描述了每行数据长度、字段名、字段类型、列号和其它。

第一部分:

Shp文件格式之-dbf文件

第一部分占用10个字节:

  • 0 字节为值为3,标识位,固定值
  • 1~3分别标识年月日

    • if y > 90 y = y+1990 else y = y+2000
    • M = M -1
    • d = d
  • 4~7 标识dbf文件存储了多少条数据, int recordCnt =[7][6][5][4]
  • 8~9 标识头长度 int headerLength =[8] & 255 | ([9] & 255) << 8
第二部分:

Shp文件格式之-dbf文件

第二部分的长度依据文件字段数,根据第一部分的内容可计算:

  • 数据长度(2B)int recordLength = [0] & 255 | ([1] & 255) << 8
  • 空位(20B),用0填充
  • 字段描述,每个(32B)*n

    • 字段名(11B)
    • 类型(1B)
    • 列号(1B),标识该字段在第几列
    • 长度(1B) , 此位转化为int,小于0则+256, 大于0不变
    • 精度(1B)
    • 空位(14B),用0填充
  • 尾部空位(1B),用0填充

2. dbf数据组成

Shp文件格式之-dbf文件

DBF文件中的数据组成比较简单,每一行数据由值为32的1个字节开始,后面数据依赖每列数据的类型决定。

类型标识
@ Timestamp.class
A B E G H I J K M String.class
C String.class
D Date.class
F Double.class
L Boolean.class
N 小数点后位数 != 0 Double.class
N 小数点后位数 == 0 && 长度 < 10 Integer.class
N 小数点后位数 == 0 && 长度 > 10 Long.class
上一篇:阿里云云合计划加速落地 联合思科、中标软件推商业软件免费试用计划


下一篇:阿里云成为CNCF金牌会员 提供云端Kubernetes解决方案