坑爹呀,在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(日)。

就寫這麼多吧,太坑爹了。累!

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