DBF文件格式
1. GeoTools DBF文件头计算
DBF头文件分为两个部分。第1部分占10个字节,保存文件标识、时间、数据量和DBF文件头字节长度;第2部分为变长长度,描述了每行数据长度、字段名、字段类型、列号和其它。
第一部分:
第一部分占用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
第二部分:
第二部分的长度依据文件字段数,根据第一部分的内容可计算:
数据长度(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数据组成
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