在 PyCharm 中使用 arcpy 读取 dbf?

Read dbf with arcpy in PyCharm?

我已将 A​​rcGIS Desktop 10.7 table 导出到 dbf 文件中。
现在我想独立进行一些 GIS 计算 Python。
因此,我启动了一个引用 ArcGIS Python 解释器的 PyCharm 项目,因此我能够将 arcpy 导入我的 main.py.
问题是:我不想 pip 安装其他模块,但我不知道如何使用 arcpy.

正确读取 dbf table
#encoding=utf-8 
import arcpy
path=r"D:\test.dbf"
sc=arcpy.SearchCursor(path) # Does not work: IOError exception str() failed
tv=arcpy.mapping.TableView(path) # Does not work either: StandaloneObject invalid data source or table

dbf文件正确,可以读入ArcGIS
有人可以给我一个想法,如何使用 arcpy 独立读取文件?

使用pandas

ArcMap 中的

Python 带有一些模块。您可以将数据加载到 pandas.DataFrame 并使用此格式。 Pandas 有据可查,网络上已经有很多关于它的问题。进行 groupby 或 table 操作也非常容易。

import pandas as pd
import arcpy


def read_arcpy_table(self, table, fields='*', null_value=None):
    """
    Transform a table from ArcMap into a pandas.DataFrame object

    table : Path the table
    fields : Fields to load - '*' loads all fields
    null_value : choose a value to replace null values
    """
    fields_type = {f.name: f.type for f in arcpy.ListFields(table)}
    if fields == '*':
        fields = fields_type.keys()
    fields = [f.name for f in arcpy.ListFields(table) if f.name in fields]
    fields = [f for f in fields if f in fields_type and fields_type[f] != 'Geometry'] # Remove Geometry field if FeatureClass to avoid bug

    # Transform in pd.Dataframe
    np_array = arcpy.da.FeatureClassToNumPyArray(in_table=table,
                                                 field_names=fields,
                                                 skip_nulls=False,
                                                 null_value=null_value)
    df = self.DataFrame(np_array)
    return df
# Add the function into the loaded pandas module
pd.read_arcpy_table = types.MethodType(read_arcpy_table, pd)

df = pd.read_arcpy_table(table='path_to_your_table')
# Do whatever calculations need to be done

使用光标

也可以使用arcpy游标和dict进行简单计算

此页面上有关于如何正确使用游标的简单示例: https://desktop.arcgis.com/fr/arcmap/10.3/analyze/arcpy-data-access/searchcursor-class.htm

我的错, 在阅读 Using cursor 方法后,我发现使用

sc=arcpy.SearchCursor(path) # Does not work: IOError exception str() failed

方法是正确的,但是在凌晨 3 点左右的时候,我有点累了,错过了导致错误的路径 中的拼写错误 。然而,一个更具描述性的错误消息,例如IOError could not open file 而不是 IOError exception str() failed 会解决我作为 acrGIS 新手的错误..:/