# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import arcpy
import os
from datetime import datetime
arcpy.CheckOutExtension("Spatial") # ArcGIS各种功能模块许可
__name__ = 'add_Layer'
_workSpace = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), 'data')
_mxdPath = os.path.join(_workSpace, 'printMap.mxd')
_doMapAuthor = "胡广豪" # 制图人
_doTitleName = "NDVI" # 地图标题
_dataNamePath = r"E:\Work_List\Graduation_Project\ArcPython\data\temp\index\NDVI\LS_05_1994_NDVI.tif" # 制图图幅路径
_dataName = os.path.basename(_dataNamePath).rstrip(os.path.splitext(_dataNamePath)[1]) # 制图图幅
arcpy.env.workspace = _workSpace # 创建工作空间
arcpy.env.overwriteOutput = True # 覆盖相同文件
# 添加图层数据进.mxd
def AddLayerData():
try:
# 1.打开需发布的.mxd文件
print _mxdPath
mxd = arcpy.mapping.MapDocument(_mxdPath)
# 2.获取数据框
# df = arcpy.mapping.ListDataFrames(mxd, "Layer")[0]
frames = arcpy.mapping.ListDataFrames(mxd, "图层")
if len(frames) == 0:
frames = arcpy.mapping.ListDataFrames(mxd, "Layer")
df = frames[0]
# 3.加载图层数据
addLayer = arcpy.mapping.Layer(_dataNamePath)
arcpy.mapping.AddLayer(df, addLayer, "TOP") # 图层依次后来居上
refLayer = arcpy.mapping.ListLayers(mxd, "", df)[0] # 获取图层
arcpy.ApplySymbologyFromLayer_management(refLayer, "test.lyr") # 使用.Lyr进行栅格渲染
arcpy.RefreshActiveView() # 更新视图
arcpy.RefreshTOC() # 更新目录
# 打印地图
printMap(mxd)
# 4.另保存mxd文件
aCopyMXD_Path = os.path.join(os.path.abspath('../data/temp/mxd'), _dataName + '.mxd')
print aCopyMXD_Path
mxd.saveACopy(aCopyMXD_Path) # 另保存mxd文件
return "ok"
except Exception, e:
print e
def printMap(mxd):
try:
print "Print..."
# 设置标题
for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT", "*do*"):
if elm.name == "doDataName":
elm.text = _dataName
elif elm.name == "doMapAuthor":
elm.text = _doMapAuthor
elif elm.name == "doTitleName":
elm.text = _doTitleName
elif elm.name == "doMapDate":
elm.text = "%s年%s月%s日制" % (datetime.today().year, datetime.today().month, datetime.today().day)
# 输出底图
savePNG_Path = os.path.join(os.path.abspath('../data/temp/png'), _dataName + '.png')
arcpy.mapping.ExportToPNG(mxd, savePNG_Path, resolution=450)
print savePNG_Path
except Exception, e:
print e
# 调用函数
AddLayerData()