【Arcpy】批处理图像

本文介绍了一个Python函数,用于ArcGIS环境中的批处理操作,修改地理信息系统(GIS)图像中土地类型的标签和颜色,以中文命名并应用预定义的颜色方案。该函数可以应用于TIF图片和特定的土地类型图层.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

批处理图像

import arcpy.mp as map
#字典 每个数字对应的中文含义 图像中的value都是数字要改成中文的 追加设置了颜色 且按照一般认知修改颜色 如水为蓝色 田地为绿色
DIR = {
    "11": ["水田", [0, 255, 0, 100]],           # 绿色
    "12": ["旱地", [255, 255, 0, 100]],         # 黄色
    "21": ["有林地", [0, 128, 0, 100]],         # 深绿色
    "22": ["灌木林地", [128, 128, 0,100]],     # 深黄色
    "23": ["疏林地", [0, 255, 255, 100]],       # 青色
    "24": ["其他林地", [128, 128, 128, 100]],   # 灰色
    "31": ["高覆盖度草地", [255, 0, 255, 100]], # 紫色
    "32": ["中覆盖度草地", [128, 0, 128, 100]], # 深紫色
    "33": ["低覆盖度草地", [255, 128, 255, 100]], # 浅紫色
    "41": ["河渠", [0, 0, 255,100]],           # 蓝色
    "42": ["湖泊", [255, 0, 0, 100]],           # 红色
    "43": ["水库、坑塘", [128, 0, 0, 100]],      # 深红色
    "44": ["冰川永久积雪", [255, 255, 255,100]], # 白色
    "45": ["海涂", [0, 0, 128, 100]],           # 深蓝色
    "46": ["滩地", [255, 128, 0, 100]],         # 橙色
    "51": ["城镇", [0, 128, 128, 100]],         # 青绿色
    "52": ["农村居民点", [128, 255, 255, 100]],  # 浅青色
    "53": ["工交建设用地", [128, 255, 128, 100]], # 浅绿色
    "61": ["沙地", [255, 255, 128, 100]],       # 浅黄色
    "62": ["戈壁", [128, 128, 255, 100]],       # 浅蓝色
    "63": ["盐碱地", [0, 255, 128, 100]],       # 浅绿色
    "64": ["沼泽地", [255, 128, 255, 100]],     # 浅紫色
    "65": ["裸土地", [128, 255, 0, 100]],       # 浅橙色
    "66": ["裸岩石砾地", [255, 0, 128, 100]],   # 浅红色
    "67": ["其它未利用地", [0, 255, 255, 100]]   # 浅青色
}

#就是刚刚那个代码 封装为了函数 便于批处理 传入的是tif图片 然后对传入的图片修改label和颜色
def modifyLabel(lyr):
    try:
        sym = lyr.symbology
        # 设置渲染器为唯一值
        sym.updateColorizer("RasterUniqueValueColorizer")
        # 渲染字段为value
        sym.colorizer.field = 'Value'
        # 读取value中的每个字段
        for grp in sym.colorizer.groups:
            for itm in grp.items:
                # 如果label在字典中
                if itm.label in DIR:
                    #利用字典改成label对应的中文
                    name = DIR[itm.label][0]
                    #修改颜色
                    colorname = DIR[itm.label][1]
                    itm.label = name
                    itm.color = {"RGB": colorname }

                # 无用的99类型 查了下属于军事 监狱类;一般不展示。直接设为透明
                else:
                    #print("Label:", itm.label)
                    itm.color = {"RGB": [255, 0, 0, 0]}
                    itm.label = ''
                # 打印结果
                #print("Label:", itm.label)
        lyr.symbology = sym
    except Exception as e:
        print("An error occurred:", str(e))

#获取当前的工程数据和地图
aprx = map.ArcGISProject("CURRENT")
m =aprx.listMaps()[0]
#获取地图内的图层列表
layers=m.listLayers("Con*")#里面的*就是通配符 去掉就是搜素所有的图层
for lyr in layers:
    print(lyr.name)
    modifyLabel(lyr)#将每个图层传入函数进行处理 批量修改label
#获取地图内的图层列表
layers=m.listLayers("*.tif")
for lyr in layers:
    print(lyr.name)

#导入当前工程文件
aprx = map.ArcGISProject("CURRENT")
m =aprx.listMaps()[0]
#获取地图内的图层列表
layers=m.listLayers("土地类型*")#里面的*就是通配符 去掉就是搜素所有的图层
#起始年份
i=2000
#便利图层
for lyr in layers:
    print(lyr.name)
    #获取当前布局
    lyt = aprx.listLayouts("布局")[0]
    #导出图片 分辨率为800dpi
    lyt.exportToPNG("土地类型"+str(i)+"A.png", 800)
    #增加为下一个年份
    i=i+5
    #移除已使用的图层
    m.removeLayer(lyr)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燕南路GISer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值