#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. 安装glibc2.7

    参考链接http://fhqdddddd.blog.163.com/blog/static/18699154201401722649441/ /lib/libc.so.6: version `glib ...

  2. 关于select @@IDENTITY的初识

    这句话主要是得到唯一的主键,然后应用于下面的SQL语句 例如代码 StringBuilder strSql=new StringBuilder(); strSql.Append("inser ...

  3. login placeholder

    $(function(){ function isPlaceholder(){ var input = document.createElement('input'); return 'placeho ...

  4. POJ3080Blue Jeans(暴力)

    开始做字符串专题,地址 第一题水题,暴力就可以做 #include <map> #include <set> #include <stack> #include & ...

  5. C# JabLib系列之如何保证只运行一个应用程序的实现

    保证只运行一个应用程序的C#实现: using System;using System.Collections.Generic;using System.Linq;using System.Windo ...

  6. Arrays, Hashtables and Dictionaries

    Original article Built-in arrays Javascript Arrays(Javascript only) ArrayLists Hashtables Generic Li ...

  7. js打开新页面 关闭当前页 关闭父页面

    js打开新页面.关闭当前页.关闭父页面 2010-04-29 14:04:13|  分类: 页面与JavaScript |  标签: |字号大中小 订阅     //关闭当前页面,并且打开新页面,(不 ...

  8. MFC 构建、消亡 顺序 (二)--多文档 (MDI)

    MFC 构建.消亡 顺序 (二)--多文档 (MDI) by:http://www.cnblogs.com/vranger/ (一)MDI 生成顺序 (二)打开文档-“Open” (三)新建文档-“N ...

  9. 你真的会玩SQL吗?实用函数方汇总

    http://www.cnblogs.com/zhangs1986/p/4917800.html 实用函数方法 由于有些知识很少被用到,但真需要用时却忘记了又焦头烂额的到处找. 现在将这些‘冷门“却有 ...

  10. wikioi 1098 均分纸牌

    题目描述 Description 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸 ...