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