ArcMap MXD裁剪,工具可以下载
# -*- coding: utf-8 -*-
“””分析MXD结构 – 修正中文路径编码”””
import os
# 清理过长的环境变量
max_env_len = 4000
for key, val in os.environ.items():
iflen(val) > max_env_len:
os.environ[key] = val[:max_env_len]
import arcpy
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8’)
# 路径: 使用unicode字符串
mxd_path = u“E:\\2026\\Map\\data\\chp9\\连接\\kk.mxd”
# 调试信息
print(u“MXD路径: {}“.format(mxd_path))
print(u“文件存在: {}“.format(os.path.isfile(mxd_path)))
mxd = arcpy.mapping.MapDocument(mxd_path)
df = arcpy.mapping.ListDataFrames(mxd)[0]
print(u“数据框: {}“.format(df.name))
print(u“”)
# 列出所有图层
all_layers = arcpy.mapping.ListLayers(mxd, “”, df)
print(u“=== 所有图层 (共{}个) ===”.format(len(all_layers)))
for i, lyr inenumerate(all_layers):
lyr_type = u“未知”
if lyr.isFeatureLayer:
lyr_type = u“要素图层”
elif lyr.isRasterLayer:
lyr_type = u“栅格图层”
elif lyr.isGroupLayer:
lyr_type = u“组图层”
ds = u“无”
if lyr.supports(“dataSource”):
try:
ds = lyr.dataSource
except:
ds = u“读取失败”
symb = u“未知”
if lyr.supports(“symbologyType”):
try:
symb = lyr.symbologyType
except:
symb = u“读取失败”
visible = lyr.visible
print(u“[{0}] {1} | 类型: {2} | 符号: {3} | 可见: {4}“.format(
i + 1, lyr.name, lyr_type, symb, visible))
print(u” 数据源: {}“.format(ds))
# 查找jfb图层
print(u“”)
jfb_layer = None
for lyr in all_layers:
if lyr.name == u“jfb”or lyr.name.lower() == “jfb”:
jfb_layer = lyr
break
if jfb_layer:
print(u“=== jfb图层字段 ===”)
fields = arcpy.ListFields(jfb_layer.dataSource)
for f in fields:
print(u” {} (类型: {}, 长度: {})”.format(f.name, f.type, f.length))
print(u“”)
print(u“=== NewMapNo唯一值 ===”)
vals = set()
with arcpy.da.SearchCursor(jfb_layer.dataSource, [“NewMapNo”]) as cursor:
for row in cursor:
v = row[0]
if v isnotNone:
vals.add(unicode(v).strip())
vals = sorted(list(vals))
print(u“共 {} 个:”.format(len(vals)))
for v in vals:
print(u” – {}“.format(v))
else:
print(u“错误: 未找到jfb图层!”)
del mxd
print(u“\n分析完成!”)

工具下载:
通过网盘分享的文件:裁剪.tbx
链接: https://pan.baidu.com/s/1CdnDxEnpcSsygZmmY9TGLA 提取码: ylok

夜雨聆风