一、SHP文件Shapefile文件(簡稱SHP)作為ESRI一種經(jīng)典的數(shù)據(jù)格式,被很多其他軟件所支持,如CAD、MapGIS等,雖然也有一些限制(如無法進行拓撲分析、字段長度為10個字符等),但其仍然是廣泛使用的空間數(shù)據(jù)格式。 用得多了,有時也會遇到出錯的時候。 Error: Number of shapes does not match number of table records。 形狀數(shù)與表記錄數(shù)不一致。 二、損壞原因如ESRI幫助文檔上說常見損壞原因,并提出了解決方案: (1)保存編輯內(nèi)容時計算機崩潰 這是最常見的現(xiàn)象。由于軟件版本不穩(wěn)定或數(shù)據(jù)量大或突然斷點很可能造成編輯shp文件形成損壞。 (2)添加非法幾何 任何數(shù)據(jù)庫都可以對其數(shù)據(jù)進行結(jié)構(gòu)定義。如果有非法的幾何 將導(dǎo)致shp文件損壞。例如,蝴蝶結(jié)。 (3)使用其他軟件修改屬性表 SHP文件是由多個文件組成,其中記錄屬性的dbf文件是不可缺少的,但如果用其他軟件編輯過(例如,Microsoft Excel)也會造成文件損壞。 三、修復(fù)方法下面是官網(wǎng)給出的修復(fù)方法,非常全面: (1) 使用ArcToolBox > Data Management Tools > Features中的Check Geometry工具。此工具執(zhí)行時數(shù)據(jù)的問題會被報告,或存在于輸出表中。在執(zhí)行后查看輸出表。如果表是空的,證明沒有找到壞的幾何關(guān)系。如果報告有壞的幾何關(guān)系,使用下面的Repair Geometry工具。 (2) 運行ArcToolBox > Data Management Tools > Features中的Repair Geometry工具。在運行后,返回再次運行Check Geometry工具以確定所有的損壞要素都被移除。依據(jù)需要往復(fù)運行Check Geometry/Repair Geometry。 (3) 導(dǎo)出數(shù)據(jù)島geodatabase中,然后把他們復(fù)制到新shapefile中。 (4) 如果數(shù)據(jù)在網(wǎng)絡(luò)驅(qū)動器上,把它復(fù)制到本地磁盤上。如果數(shù)據(jù)在本地驅(qū)動器上,把它復(fù)制到主驅(qū)動器的根目錄下:例如,C:\ (5) 檢查屬性表中的非法字段名。字段名最多只能有10個字符,且以字母開頭,不能包含空格或特殊字符,除了下劃線以外。 (6) 除了下劃線以外,文件名不能包含空格或特殊字符。一般來說,包含有空格的shapefile文件名可以在ArcGIS 9.x中起作用,然而為了測試請重命名shapefile是指不含空格。 (7) 在Windows資源管理器中刪除所有索引(空間、屬性和地理編碼),投影和元數(shù)據(jù)文件。也就是刪除所有的文件僅保留.shp,.dbf,.shx文件。注意在改動文件前做好備份。 (8) 嘗試在其他電腦上操作這些shapefile (9) 在其他軟件中打開shapefile,最好是ArcView 3.x。如果能在ArcView 3.x中打開,嘗試保存至新的shapefile,Theme > Convert To Shapefile。 (10)或者使用simple data loader或者將數(shù)據(jù)復(fù)制到ArcMap編輯進程中,將數(shù)據(jù)復(fù)制到新的要素類中。如果你的shapefile不包含很多的要素,可以一次拷貝,否則分組拷貝可能損壞的數(shù)據(jù)。當拷貝過程結(jié)束后,保存編輯,查看問題是否以去除。 (11)如果數(shù)據(jù)仍未被修復(fù),并且Check Geometry/Repair Geometry工具報告了要素ID和損壞記錄,請手動清除這些損壞的數(shù)據(jù)。 (12)在ArcGIS和ArcView 3.x中使用字段計算器計算計算字段值。計算可能停在損壞的記錄上。檢查損壞損壞的shapefile的屬性表并確認。例如,你的shapefile有1000條記錄,如果字段計算器在第750條停下來,哪門第750條或751條可能就是損壞的。要刪除損壞的條目,打開ArcMap編輯,拷貝除了壞條目以外的所有行至新的shapefile中,或者嘗試手動刪除損壞條目。 (13)刪除除FID,Shape外的所有字段,并保留一個屬性字段(shapefile必須要有一個屬性字段)。如果問題依然存在,添加一個新字符串字段,并刪除保留的屬性字段。如果問題消失,這意味著是那個字段的問題。后面你就知道該怎么做了。 (14)使用Shapefile Repaier Utility (15)使用Shapefile Repair Utility(不要與Shapefile Repaier Utility弄混) (16)使用FunkFinder (17)下載并運行CleanShapefile utility(只針對ArcGIS 8.3) 四、實例先嘗試使用"檢查幾何",無效,因為根本就打不開,所以沒法檢查。 再嘗試復(fù)制一下數(shù)據(jù): 問題出來了,形狀數(shù)與表記錄數(shù)不一致?。ㄗ⒁馀c多部件是有區(qū)別的)??梢栽斐傻脑蚴蔷庉嫯惓;蛲ㄟ^其他方式修改過dbf文件。 最后shapech工具修復(fù)了SHP文件。 操作方法:先備份數(shù)據(jù),然后加載Shapefile數(shù)據(jù),讀取數(shù)據(jù)信息,修復(fù)shx,再修復(fù)dbf。 |
|