在ArcGIS中使用ArcPy导出GDB数据库要素类字段信息
发布时间: 2024-12-17
所属分类: Python、ArcGIS 学习及开发
近期在做一个数据处理项目时,写总结报告需要把GDB库体的数据库结构给写进去,本着 “偷懒” 的原则,花时间写了个ArcPy脚本,几分钟就搞定了(主要用到了arcpy库和xlwt库),在这里记录一下。
效果预览
导出表格如下图所示,清晰罗列了字段名称、别名、类型、长度等信息。
实现代码
将输入GDB文件路径和输出EXCEL表格的路径修改之后,就可以正常运行了。输出的字段可以根据自己的需求进行优化调整。
# -*- coding: utf-8 -*-
import os
import sys
import time
from datetime import datetime
import arcpy
import xlwt
reload(sys)
sys.setdefaultencoding("utf-8")
def makedirs_file(input_path):
"""
检查文件夹是否存在,否则创建文件夹
@param input_path: 文件或文件夹名称
@return:
"""
if os.path.isdir(input_path):
if os.path.exists(input_path) is False:
os.makedirs(input_path)
else:
input_path = os.path.dirname(input_path)
if os.path.exists(input_path) is False:
os.makedirs(input_path)
if __name__ == '__main__':
# 设置文件路径和工作区间
path_gdb = r'F:\gisData\慈溪变更数据\基础数据\地类图斑.gdb'
# 输出表格的路径,注意: 表格的名称最好不要包含中文,否则可能会报错
time_str = str(datetime.now().strftime("%Y%m%d%H%M"))
excelpath = './results/field-info{}.xls'.format(time_str)
# 创建输出文件夹
makedirs_file(excelpath)
if not arcpy.Exists(path_gdb):
raise IOError(u"错误,未发现GDB数据库文件!")
arcpy.env.workspace = path_gdb
# 程序运行开始时间
startTime = time.time()
# 创建Excel
xls = xlwt.Workbook(encoding='utf-8')
# 设置工作表的名称
sht1 = xls.add_sheet(u'字段信息表')
fieldList = [u'序号', u'字段序号', u'要素类名称', u'字段名称', u'别称', u'字段类型', u'字段长度', u'要素类型',
u'要素路径', u'坐标系']
for column in range(len(fieldList)):
sht1.write(0, column, fieldList[column])
fcs = arcpy.ListFeatureClasses()
if len(fcs) < 1:
raise IOError(u"错误,未发现矢量文件!")
row = 0
for featureClass in fcs:
print ("current deal ---->" + featureClass)
fieldList = arcpy.ListFields(dataset=featureClass)
fieldLen = len(fieldList)
for index in range(fieldLen):
field = fieldList[index]
# 字段名称
field_name = field.name
# 无效名称字段
list_field_filter = ['Shape', 'SHAPE','OBJECTID', 'OBJECTID_1','OBJECTID_2', 'Shape_Length', 'Shape_Area', '']
if field_name in list_field_filter:
continue
# 要素路径
featureclasspath = os.path.join(path_gdb, featureClass)
# 序号
row += 1
sht1.write(row, 0, row)
# 字段序号
sht1.write(row, 1, "字段{}".format(index + 1))
# 要素名称
sht1.write(row, 2, featureClass.encode('utf-8'))
# 字段名称
sht1.write(row, 3, field_name)
# 字段别称
sht1.write(row, 4, field.aliasName)
# 字段类型
sht1.write(row, 5, field.type)
# 字段长度
sht1.write(row, 6, field.length)
# 要素几何类型
sht1.write(row, 7, arcpy.Describe(featureclasspath).shapetype)
# 要素路径
sht1.write(row, 8, str(featureclasspath.encode('utf-8')))
# 坐标系
sht1.write(row, 9, arcpy.Describe(featureclasspath).spatialReference.name)
try:
print(u'开始保存到Excel中...')
xls.save(excelpath)
print(u'程序运行结束,字段信息已经保存Excel中:' + excelpath)
except Exception, arg:
raise ValueError("错误,导出失败:"+arg.message)
# end
endTime = time.time()
print ("The program run time is : %.02f seconds" % (endTime - startTime))
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子