一、SHP文件

Shapefile文件(简称SHP)作为ESRI一种经典的数据格式,被很多其他软件所支持,如CAD、MapGIS等,虽然也有一些限制(如无法进行拓扑分析、字段长度为10个字符等),但其仍然是广泛使用的空间数据格式。

用得多了,有时也会遇到出错的时候。

Error: Number of shapes does not match number of table records。

形状数与表记录数不一致。

二、损坏原因

ESRI帮助文档上说常见损坏原因,并提出了解决方案:

(1)保存编辑内容时计算机崩溃

这是最常见的现象。由于软件版本不稳定或数据量大或突然断点很可能造成编辑shp文件形成损坏。

(2)添加非法几何

任何数据库都可以对其数据进行结构定义。如果有非法的几何 将导致shp文件损坏。例如,蝴蝶结。

(3)使用其他软件修改属性表

SHP文件是由多个文件组成,其中记录属性的dbf文件是不可缺少的,但如果用其他软件编辑过(例如,Microsoft Excel)也会造成文件损坏。

三、修复方法

下面是官网给出的修复方法,非常全面:

(1)    使用ArcToolBox > Data Management Tools > Features中的Check Geometry工具。此工具执行时数据的问题会被报告,或存在于输出表中。在执行后查看输出表。如果表是空的,证明没有找到坏的几何关系。如果报告有坏的几何关系,使用下面的Repair Geometry工具。

(2)    运行ArcToolBox > Data Management Tools > Features中的Repair Geometry工具。在运行后,返回再次运行Check Geometry工具以确定所有的损坏要素都被移除。依据需要往复运行Check Geometry/Repair Geometry。

(3)    导出数据岛geodatabase中,然后把他们复制到新shapefile中。

(4)    如果数据在网络驱动器上,把它复制到本地磁盘上。如果数据在本地驱动器上,把它复制到主驱动器的根目录下:例如,C:\

(5)    检查属性表中的非法字段名。字段名最多只能有10个字符,且以字母开头,不能包含空格或特殊字符,除了下划线以外。

(6)    除了下划线以外,文件名不能包含空格或特殊字符。一般来说,包含有空格的shapefile文件名可以在ArcGIS 9.x中起作用,然而为了测试请重命名shapefile是指不含空格。

(7)    在Windows资源管理器中删除所有索引(空间、属性和地理编码),投影和元数据文件。也就是删除所有的文件仅保留.shp,.dbf,.shx文件。注意在改动文件前做好备份。

(8)    尝试在其他电脑上操作这些shapefile

(9)    在其他软件中打开shapefile,最好是ArcView 3.x。如果能在ArcView 3.x中打开,尝试保存至新的shapefile,Theme > Convert To Shapefile。

(10)或者使用simple data loader或者将数据复制到ArcMap编辑进程中,将数据复制到新的要素类中。如果你的shapefile不包含很多的要素,可以一次拷贝,否则分组拷贝可能损坏的数据。当拷贝过程结束后,保存编辑,查看问题是否以去除。

(11)如果数据仍未被修复,并且Check Geometry/Repair Geometry工具报告了要素ID和损坏记录,请手动清除这些损坏的数据。

(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)

四、实例

先尝试使用"检查几何",无效,因为根本就打不开,所以没法检查。

再尝试复制一下数据:

问题出来了,形状数与表记录数不一致!(注意与多部件是有区别的)。可以造成的原因是编辑异常或通过其他方式修改过dbf文件。

最后shapech工具修复了SHP文件。

操作方法:先备份数据,然后加载Shapefile数据,读取数据信息,修复shx,再修复dbf。

修复损坏的 shapefile的更多相关文章

  1. ArcGIS自定义工具箱-修复损坏的工作空间

    ArcGIS自定义工具箱-修复损坏的工作空间 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:替换数据源的工作空间 用途:针对损坏的数据源,批量进行修复 案例数 ...

  2. Word恢复文本转换器-修复损坏的WORD文件

    第一步:找任意一个未损坏的文件打开word,新建的或者是已有的好的word文档,在文档的工具-选项-常规中,选中“打开时确认转换”复选框,并按确定. 第二步:点击word软件左上角的 文件-打开,找到 ...

  3. CentOS重装grub修复损坏的系统

    grub损坏一般有两种情况:第一.安装双系统时,后安装的系统把先安装的系统的MBR删除了.第二.误操作将grub文件删除了. 不管怎样都需要进入到救援模式,详细请看CentOS通过光盘启动救援数据 ( ...

  4. 如何修复损坏的MySQL数据表

    id=164 由于断电或非正常关机而导致MySQL数据库出现错误是非常常见的问题.有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用M ...

  5. oracle11g ASM(修复损坏的磁盘组头asm修复2)

    --编KFED [oracle@rac2 lib]$cd $ORACLE_HOME/rdbms/lib [oracle@rac2 lib]$ pwd /u01/app/oracle/product/1 ...

  6. MySQL之——崩溃-修复损坏的innodb:innodb_force_recovery

    转: https://blog.csdn.net/l1028386804/article/details/77199194 一.问题描述 今天在线运行的一个mysql崩溃了. 查看错误日志,如下: - ...

  7. [转]MySQL之——崩溃-修复损坏的innodb:innodb_force_recovery

    原文 https://blog.csdn.net/l1028386804/article/details/77199194 1. mysql崩溃 --------------------------- ...

  8. 【教程】教你解决“Windows 资源保护找到了损坏文件但无法修复其中某些文件”的问题【转载】

    转载:http://www.cystc.org/?p=2827 很多人都会用sfc /scannow来解决系统文件损坏的问题,但有时也会遇到连sfc都无法修复的情况,最常见的就是出现“Windows ...

  9. Windows自动联网修复系统损坏文件

    sfc修复: Win+X---命令提示符(管理员)---sfc /scannow---Enter可以查看是否存在系统文件损坏等问题 以管理员权限运行命令提示符,执行“dism /online /cle ...

随机推荐

  1. eclipse转idea, 快捷键设置

    设置快捷键的途径: 打开idea的配置,找到Keymap,设置为eclipse 另外还要手动设置某些快捷键 上下移动 点击类打开 代码提示 查询 重命名 快速实现接口 回到上一次光标处

  2. nodejs环境使用jshint

    一.概述jshint是检测JavaScript语法问题的工具,可以根据自己的需要配置检测规则. 二.安装npm install jshint -g一般全局安装就可以了,可以在任何目录下使用jshint ...

  3. rac 10g 10.2.0.1升级到10.2.0.5具体解释

        RAC 10.2.0.1 升级到 10.2.0.5 一. 准备: Patch 包:p8202632_10205_LINUX.zip   节点数:3个节点       RAC1    RAC2  ...

  4. ExtJS创建选项卡

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. pytest文档28-重复执行用例(pytest-repeat)

    前言 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来. 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例, ...

  6. python笔记25-mock-server之moco

    前言 mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口 此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自 ...

  7. eclipse3.4配置的tomcat server如何部署以前的web项目?

    1. 打开.project文件,在<natures>元素中加入 <nature>org.eclipse.wst.common.project.facet.core.nature ...

  8. 手机网站和PC网站兼容的响应式网页设计

    今天跟大家介绍的这个网站叫 媒体查询  官网域名:http://mediaqueri.es/ 该酷站收集了很多响应式设计的案例.全部都是收集的一些励志精美而时尚的网站,使用媒体查询和响应的网页设计. ...

  9. Android只播放gif动画

    使用easygifanimator软件把gif动画打散为图片. 第一步:先上图片素材,以下素材放到res/drawable目录下: 转:http://blog.csdn.net/aminfo/arti ...

  10. Python3.6学习笔记(六)

    WSGI Python Web Server Gateway Interface 规范学习 由于Python的灵活性,提供了多种方式可以作为服务端语言,包括Python编写的服务器(Medusa).P ...