ArcGis中shp文件出现问号状态,打不开怎么解决?

一 打开不了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的几何实体数量保持一致。

这样就能简单修复了。

三 其他修复的方法

  1. envi可以直接打开shp。在envi上把shp直接另存为新的数据。
  2. 同理,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文件中。

2024年1月10日更新

用代码修复

略。

开源代码地址在:

GitHub - ytkz11/RestoreShp: restore shape file

如果对你有帮助,请点一个star!

快捷修复

我把以上的代码打包为一个命令行的exe,如果你对代码不熟练,可以直接运行这个exe,输入对应的文件路径,完成对shape文件的修复。

在公众号(remote sensing)回复:shp修复

获得exe文件。

image-20240103161521093

### 问题分析 ArcGIS 打不开的问题可能涉及多个方面,包括软件本身的安装完整性、系统环境兼容性、Python 环境配置以及文件编码等问题。根据提供的参考内容,可以总结出以下几种常见原因及对应的解决方法。 --- ### 解决方案 #### 1. **修复 ArcGIS Pro 安装** 如果双击 ArcGIS Pro 没有任何反应,可能是安装文件损坏或配置异常。可以尝试使用原始的安装文件(`.msi`)进行修复: - 找到原始的 ArcGIS Pro 安装包(通常是 `.msi` 文件)。 - 双击运行该文件,选择 "Repair"(修复)选项。 - 等待修复完成后重新启动软件[^1]。 #### 2. **检查 Python 环境** ArcGIS 的某些功能依赖于特定版本的 Python 环境。如果安装了不兼容的 Python 版本(如 Python 3.x),可能会导致软件闪退或无法正常运行: - 下载与 ArcGIS 兼容的 Python 安装包(通常包含在 ArcGIS 的安装文件中)。 - 解压安装包后找到 Python 部分,单独安装或重装该版本的 Python。 - 安装完成后重启 ArcGIS 并测试是否能正常打开工具箱[^2]。 #### 3. **处理 Shapefile 文件编码问题** 如果 ArcGIS 中加载 `.shp` 文件时显示问号或无法打开,可能是文件编码问题: - 使用 Python 的 `shapefile` 库读取 `.shp` 文件,并尝试指定不同的编码格式(如 `gbk`)。 - 示例代码如下: ```python def get_shp_shape_records(path): try: # 尝试默认编码读取 file = shapefile.Reader(path) shape_records = file.shapeRecords() except UnicodeDecodeError: # 如果出现解码错误,尝试使用 gbk 编码 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) ``` - 如果此方法有效,则说明文件的编码方式与 ArcGIS 默认设置不符,建议将文件转换为标准编码格式后再导入[^3]。 #### 4. **清理缓存和日志文件** 有时,ArcGIS 的临时缓存或日志文件可能导致启动失败: - 清理用户目录下的缓存文件夹(例如:`C:\Users\用户名\AppData\Local\ESRI`)。 - 删除或备份旧的日志文件,避免因日志冲突导致程序崩溃。 #### 5. **更新或重装 ArcGIS** 如果上述方法均无效,可以考虑更新或完全卸载并重新安装 ArcGIS: - 前往 Esri 官网下载最新版本的 ArcGIS 软件。 - 在安装前关闭所有杀毒软件和防火墙,防止安装过程被中断。 - 安装完成后,验证软件是否能够正常运行。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值