#coding=gbk
#@author lifc,20140806
#批量制作输出专题图
import arcpy,os,time,math

#testpath=raw_input("testpath:")

mainPath = r'C:/Users/yuwhuawang/Desktop/batchExportPNG_lifc' #模板mxd所在目录
mxdTempletName='200mGrid_bj_xicheng.mxd'#mxd模板文件名
tempMxdPath = mainPath+'/tempMxd' #中间过程mxd存储目录
resultPngPath=mainPath+'/resultPng' #png输出结果目录
res = 800 #dpi
#哈希数组arr
arr={'G_A100001':'总人口数',
'G_A100002':'男性人口数',
'G_A100003':'女性人口数',
'G_A100005':'户籍人口数',
'G_A100008':'城镇人口数',
'G_A100009':'非城镇人口数',
'G_A100010':'家庭户总数',
'G_A100011':'属家庭户的人口数 ',
'G_A100013':'家庭户中一人户总数',
'G_A100014':'家庭户中一代户的户数',
'G_A100015':'家庭户中二代户的户数',
'G_A100016':'家庭户中三代户的户数',
'G_A100017':'家庭户中四代及以上户的户数',
'G_A200001':'0岁男性总人数',
'G_A200002':'0岁女性总人数',
'G_A200003':'1-4岁男性总人数',
'G_A200004':'1-4岁女性总人数',
'G_A200005':'5-9岁男性总人数',
'G_A200006':'5-9岁女性总人数',
'G_A200007':'10-14岁男性总人数',
'G_A200008':'10-14岁女性总人数',
'G_A200009':'15-19岁男性总人数',
'G_A200010':'15-19岁女性总人数',
'G_A200011':'20-24岁男性总人数',
'G_A200012':'20-24岁女性总人数',
'G_A200013':'25-29岁男性总人数',
'G_A200014':'25-29岁女性总人数',
'G_A200015':'30-34岁男性总人数',
'G_A200016':'30-34岁女性总人数',
'G_A200017':'35-39岁男性总人数',
'G_A200018':'35-39岁女性总人数',
'G_A200019':'40-44岁男性总人数',
'G_A200020':'40-44岁女性总人数',
'G_A200021':'45-49岁男性总人数',
'G_A200022':'45-49岁女性总人数',
'G_A200023':'50-54岁男性总人数',
'G_A200024':'50-54岁女性总人数',
'G_A200025':'55-59岁男性总人数',
'G_A200026':'55-59岁女性总人数',
'G_A200027':'60-64岁男性总人数',
'G_A200028':'60-64岁女性总人数',
'G_A200029':'65-69岁男性总人数',
'G_A200030':'65-69岁女性总人数',
'G_A200031':'70-74岁男性总人数',
'G_A200032':'70-74岁女性总人数',
'G_A200033':'75-79岁男性总人数',
'G_A200034':'75-79岁女性总人数',
'G_A200035':'80-84岁男性总人数',
'G_A200036':'80-84岁女性总人数',
'G_A300005':'有65岁以上老年人口的户数',
'G_A300006':'有一个65岁以上老年人口的户数',
'G_A300007':'有二个65岁以上老年人口的户数',
'G_A300008':'有三个或以上65岁以上老年人口的户数',
'G_A300012':'从本县(市)及本市市区迁入的人口数',
'G_A300013':'从本省其他县(市)及市区迁入的人口数',
'G_A300014':'从外省迁入的人口数',
'G_A400001':'未上过学的男性人口数',
'G_A400002':'未上过学的女性人口数',
'G_A400003':'小学教育程度的男性人口数',
'G_A400004':'小学教育程度的女性人口数',
'G_A400005':'初中教育程度的男性人口数',
'G_A400006':'初中教育程度的女性人口数',
'G_A400007':'高中教育程度的男性人口数',
'G_A400008':'高中教育程度的女性人口数',
'G_A400009':'大学专科教育程度的男性人口数',
'G_A400010':'大学专科教育程度的女性人口数',
'G_A400011':'大学本科及以上教育程度的男性人口数',
'G_A400012':'大学本科以及上教育程度的女性人口数',
'G_A400016':'15岁及以上文盲人口数',
'G_A400017':'15岁及以上文盲男性人口数',
'G_A400018':'15岁及以上文盲女性人口数'
}

def reverseList(list):
list.reverse()
return list

def resv3(li):
hcnt = int(math.floor(len(li)/2))
tmp = 0
for i in range(hcnt):
tmp = li[i]
li[i] = li[-(i+1)]
li[-(i+1)] = tmp
return li

print '>>Program Start:' + str(time.ctime())
mxd= arcpy.mapping.MapDocument(os.path.join(mainPath,mxdTempletName))

print '>>step1-create temp mxd:' + str(time.ctime())
for lyr in arcpy.mapping.ListLayers(mxd):
if lyr.name=='grid':
for k in arr:
#注:10.2以上才支持GraduatedColorsSymbology
if lyr.symbologyType == "GRADUATED_COLORS":
lyr.symbology.valueField =k
lyr.symbology.numClasses =7
lyr.symbology.classBreakLabels=resv3(lyr.symbology.classBreakLabels)
lyr.symbology.classBreakDescriptions=resv3(lyr.symbology.classBreakLabels)
#lyr.symbology.classBreakValues=resv3(lyr.symbology.classBreakValues)
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
v = arr.get(k)
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
if elm.text.encode('gbk').startswith('—'):#获取副标题,调整x值&修改名称
elm.elementPositionX=15-len(v)*0.25
elm.text = "—"+v
print k+":"+v
mxd.saveACopy(os.path.join(tempMxdPath, k+'.mxd'))
print '>>step1-completed:' + str(time.ctime())

print '>>step2-export png:' + str(time.ctime())
for afile in os.listdir(tempMxdPath):
if afile[-3:].lower() == 'mxd':
mxd = arcpy.mapping.MapDocument(os.path.join(tempMxdPath,afile))
arcpy.mapping.ExportToPNG(mxd, os.path.join(resultPngPath,afile[:-3] + 'png'), resolution = res)
del mxd
print '>>step2-completed:' + str(time.ctime())

print '>>Program End:' + str(time.ctime())

batchExportPNG.py不是我的代码的更多相关文章

  1. PyQt4转换ui为py文件需添加如下代码才可执行

    1)转换ui为py 命令行进入ui文件所在文件夹,输入pyuic4 ui_name.ui > py_name.py即可 或新建ui2py.bat文件,写入: @echo off @cd /d & ...

  2. pycharm,右键执行run unittests in xx.py后,__main__:后的代码没执行

    如图所示:执行py文件后,打印__name__的名是模块名,而非__main__ 查了好久,发现这个问题跟unittest这个类有关系,执行单元测试的py脚本时,不要右键run unittest,在p ...

  3. bottle.py中的路由解析代码

    # Routing def compile_route(route): """ Compiles a route string and returns a precomp ...

  4. python3 计算文件夹中所有py文件里面代码行数,注释行数,空行数

    import os,re #代码所在位置 FILE_PATH = './' def analyze_code(codefilesource): ''' 打开一个py文件统计其中的代码行数,包括空格和注 ...

  5. 10 行 Python 代码写的模糊查询

    导语: 模糊匹配可以算是现代编辑器(在选择要打开的文件时)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P ...

  6. 【Django】Django命令(Manager.py)

    django-admin.py startproject mysite 该命令在当前目录创建一个 mysite 目录. django-admin.py这个文件在C:\Python27\Lib\site ...

  7. OpenStack的Resize和冷迁移代码解析及改进

    原文:http://www.hengtianyun.com/download-show-id-79.html OpenStack的Resize(升级)功能,我们可以改变虚拟机的CPU核数.内存及磁盘大 ...

  8. python 代码格式化工具:autopep8

    学习资料: https://github.com/hhatto/autopep8 背景 autopep8 会根据 PEP 8 样式文档来格式化 python 代码.它使用 pep8 来决定代码的哪部分 ...

  9. Python 代码实现模糊查询

    Python 代码实现模糊查询 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列 ...

随机推荐

  1. POJ 2888 Magic Bracelet(Burnside引理,矩阵优化)

    Magic Bracelet Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 3731   Accepted: 1227 D ...

  2. [置顶] 我的设计模式学习笔记------>Java设计模式总概况

    设计模式的概念最早起源于建筑设计大师Alexander的<建筑的永恒方法>一书,尽管Alexander的著作是针对建筑领域的,但是他的观点实际上用用于所有的工程设计领域,其中也包括软件设计 ...

  3. Spring REST实践之客户端和测试

    RestTemplate 可参考spring实战来写这部分. RestTemplate免于编写乏味的样板代码,RestTemplate定义了33个与REST资源交互的方法,涵盖了HTTP动作的各种形式 ...

  4. Xcode快捷键整理

    下面是Xcode比较常用的快捷键,特别是红色标注的,很常用.用熟了开发编辑代码的的时候就很方便,希望对大家有用~1. 文件CMD + N: 新文件CMD + SHIFT + N: 新项目CMD + O ...

  5. 【官方文档】Hadoop分布式文件系统:架构和设计

    http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html 引言 前提和设计目标 硬件错误 流式数据访问 大规模数据集 简单的一致性模型 “移动计 ...

  6. PostgreSQL中的数组与Any

    建立表: CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] ); 插入数据: INSERT I ...

  7. IOS 7 Study - UIActivityViewController(Presenting Sharing Options)

    You want to be able to allow your users to share content inside your apps with theirfriends, through ...

  8. Codeforces Round #290 (Div. 2) A. Fox And Snake 水题

    A. Fox And Snake 题目连接: http://codeforces.com/contest/510/problem/A Description Fox Ciel starts to le ...

  9. .NET程序性能的基本要领

    前几天在老赵的博客上看到,Bill Chiles (Roslyn 编译器的Program Manager)写了一篇文章叫做<Essential Performance Facts and .NE ...

  10. 关于C#中派生类调用基类构造函数的理解

    (1)当基类中没有自己编写的构造函数时,派生类默认条用基类的构造函数 (2)当基类中有自己编写的构造函数时,要在基类中添加无参的构造函数 public class MyBaseClass { publ ...