乐于分享
好东西不私藏

ArcMap MXD裁剪,工具可以下载

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