shp文件在arcgis打开失败及其修复 | 您所在的位置:网站首页 › arcgis出错 › shp文件在arcgis打开失败及其修复 |
一 打开不了shp文件 同学们在平常使用arcgis的时候,是否遇到了下面这样的情况。 这是由于shp文件丢失了部分数据,导致在arcgis打不开。 1个 Shape文件结构Shape文件的文件构成Shape文件由3 个文件构成: 主文件、索引文件、数据文件。它们分别是“.shp” , ".shx"".dbf”文件。 如果数据文件dbf,丢失了部分数据,就会出现上面说的打不开的错误。 二 修复dbf文件记录的是对应的属性表信息,比如arcgis的属性表的字段、面积信息等等。 步骤如下: 1.用envi打开shp,查看shp有多少个几何实体。记录下来。 2.用DBFViewer 或者excell,打开对应的dbf文件,这里要分情况处理。 情况一:例如你在步骤1中记录该shp有15个图斑,dbf的个数是10个,这时你要填充5条假数据到dbf末端中,使dbf文件记录的几何实体与shp的几何实体数量保持一致。 情况二:例如你在步骤1中记录该shp有15个图斑,dbf的个数是20个,这时你要删除dbf末端5条,使dbf文件记录的几何实体与shp的几何实体数量保持一致。 这样就能简单修复了。 三 其他修复的方法envi可以直接打开shp。在envi上把shp直接另存为新的数据。同理,google earth 也能直接打开shp文件,再次导出即可。四 写代码修复的步骤读取dbf文件,在python使用第三方库dbfread,借助dbfread可以读取dbf文件,dbfread安装如下: pip install dbfread下面是简单的python读取dbf示例: #!/usr/bin/env python # -*- coding: utf-8 -*- file = r'test.dbf' from dbfread import DBF # 读取 DBF 文件 table = DBF('test.dbf', encoding='gbk') # 输出记录 for record in table: print(record)安装pyshp,读取shp文件: pip install pyshp下面是简单的python读取shp示例: def get_shp_shape_records(path): try: # 先读取原文件的几何数据和属性数据, 返回几何数据的个数 try: file = shapefile.Reader(path) shape_records = file.shapeRecords() except UnicodeDecodeError: file = shapefile.Reader(path, encoding="gbk") shape_records = file.shapeRecords() except Exception as e: print(e) return len(shape_records) file = r'test.shp' a = get_shp_shape_records(file)后面再写,暂时没这个编程实现的需求。 大概思路是用xlwt这个模块把数据写入到dbf文件中。 |
CopyRight 2018-2019 实验室设备网 版权所有 |