Arcpy自动化批量制图

import arcpy

mxd = arcpy.mapping.MapDocument('./demo_bak.mxd')
lyrs = arcpy.mapping.ListLayers(mxd)
time = arcpy.mapping.ListLayoutElements(mxd, 'TEXT_ELEMENT', 'time')[0]
for i in range(121):
    shp = './shps/{}.shp'.format(i)
    cursor = arcpy.SearchCursor(shp, fields='time_str')
    row = cursor.next()
    time_str = row.getValue('time_str')
    del cursor
    lyrHs = lyrs[1]
    lyrContour = lyrs[0]
    lyrHs.replaceDataSource(workspace_path='./tifs/', workspace_type='RASTER_WORKSPACE', dataset_name=i)
    lyrContour.replaceDataSource(workspace_path='./contours/', workspace_type='SHAPEFILE_WORKSPACE',
                                 dataset_name=i)
    # dataset_name 参数只需要文件名,不需要文件后缀
    time.text = time_str
    arcpy.mapping.ExportToPNG(mxd, './pngs/{}.png'.format(i), resolution=192)
    mxd.saveACopy('./mxds/{}.mxd'.format(i))
    print '{}.mxd has been created!'.format(i)
    print '{}.png has been created!'.format(i)
del mxd
print 'finished!'

多个图层

import arcpy

times_str = list()
with open('time_str.txt', mode='r') as f:
    times_str = f.readlines()
times_str = [time_str.strip() for time_str in times_str]
mxd = arcpy.mapping.MapDocument('./server.mxd')
df = arcpy.mapping.ListDataFrames(mxd)[0]
for i in range(0, 121, 8):
    for j in range(i, i + 8):
        if j > 120:
            j -= 1
            break
        lyrHs = arcpy.mapping.Layer('./Hs.lyr')
        lyrContour = arcpy.mapping.Layer('./Contour.lyr')
        lyrHs.replaceDataSource('./tifs/', 'RASTER_WORKSPACE', j)
        lyrContour.replaceDataSource('./contours', 'SHAPEFILE_WORKSPACE', j)
        lyrContour.showLabels = False
        lyrHs.name = times_str[j]
        lyrContour.name = times_str[j]
        arcpy.mapping.AddLayer(df, lyrHs, 'TOP')
        arcpy.mapping.AddLayer(df, lyrContour, 'TOP')
    mxdname = times_str[i] + '_' + times_str[j]
    mxdname = mxdname.replace(' ', '_')
    mxdname = mxdname.replace(':', '-')
    mxd.relativePaths = True
    mxd.saveACopy('./servers/{}.mxd'.format(mxdname))
    print '{}.mxd has been created!'.format(mxdname)


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值