坑爹呀,在ArcGis10.2的shapeFile属性表竟然这样存储数据!

在ArcGis 10.2 要素的属性表(dbf)主要有六种数据类型:短整型、长整型、浮点型、双精度、文本、日期。

在用c#开发读取dbf数据时短整型、长整型、浮点型、双精度类型总是出错。

研究发现,这四种数据类型字段的所谓精度就是存储值的十进制字符数。

测试:添加字段short3

经测试只能保存十进制数: -99~999。

在编辑的状态下可以输入-123,

保存编辑内容后却变成了-12。

将dbf读入C# 程序中,short3 转换为bytes 断点,发现bytes[0] = 45 '-', bytes[1] = 49 '1' bytes[2] = '2'.

坑爹的!数值不是按二进制来表示,而是按字符来存储!

经多次添加字段,类型规律如下:

类型(类型符)

短整型(N):精度可设置为 [0-4],当为0时,自动转为4;当[5-9],自动转为长整型;当[10-18]为双精度,超过18,自动更改为18.占字节数=精度。

长整型(N):精度可设置为[5-9],当为0时,自动转为9;当[1-4],自动转为短整型;当[10-18]为双精度,超过18,自动更改为18.占字节数=精度。

浮点型(N):精度可设置为[2-7],当(精度,小数位数)为默认的(0,0)时,断点发现为(12,11)此时为类型符为(F)小数位数必须是[1-精度),如小数位数为0等同于短长整型的设置;当[8-18],转为双精度

双精度(N):精度可设置为[8-18],当(精度,小数位数)为默认的(0,0)时,断点发现为(18,11)此时为类型符为(F)小数位数必须是[1-精度),如小数位数为0等同于短长整型的设置

日期(D):占用八个字节 1-4字节=2020(年),5-6 = 04(月),7-8 = 23(日)。

就写这么多吧,太坑爹了。累!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章