python自動化批量化製圖

這兩天一直分享祖國大好河山的圖片,專業反而少了點,今天補上,下面介紹一下基於ARCGIS的python自動化批量化製圖方法。調查圖製作是外業調查中的一項重要工作,幾乎應用於許多行業管理的各個方面,在傳統的外業調查過程中,外業調查圖紙的製作均是在設置好模板的基礎上,一張一張的導出,而無法實現批量出圖,這對於大批量的製圖工作是不利的,不僅工作量巨大,而且需要佔用大量的時間,時間成本較高。Python語言為Arcgis定製了專門的批量地圖製圖功能,不僅可以利用已有的模板製圖,而且可以重新設定製圖模板。由於很多外業調查圖圖式一致,本項目則藉助已有的製圖模板,利用Python的DataDrivenPages類並結合Arcgis中的Data Driven Pages工具,來實現對外業調查圖紙的批量化和自動化製作。具體實現代碼如下:

import arcpy

from arcpy import env

arcpy.CheckOutExtension("spatial")

arcpy.gp.overwriteOutput = 1

env.workspace = "c:/zygx/"

#定義當前文檔

mxd = arcpy.mapping.MapDocument("CURRENT")

#依據標準圖幅框切換製圖範圍

for pageNum in range(1,mxd.dataDrivenPages.pageCount):

mxd.dataDrivenPages.currentPageID=pageNum

mapName = mxd.dataDrivenPages.pageRow.getValue(mxd.dataDrivenPages.pageNameField.name)

raster = "c:/zygx/ditu" + mapName + ".tif"

#依據圖幅框加載底圖

arcpy.MakeRasterLayer_management(raster,mapName)

#修改圖名

elm = arcpy.mapping.ListLayoutptElements(mxd)[0]

for elm in arcpy.mapping.ListLayoutptElements(mxd):

if elm.name == "ZTH":

elm.text = mapName

#導出地圖

arcpy.mapping.ExportToJPEG(mxd, r"c:/zygx/zhitu/" + mapName + ".jpg",resolution = 300)

#保存MXD文件

scy = r"c:/zygx/zhitu/" + mapName + ".mxd"

mxd.saveACopy(scy)

#刪除所加載底圖

ryx = arcpy.mapping.ListDataFrames(mxd,"layers")[0]

for lyr in arcpy.mapping.ListLayers(mxd, "", ryx):

if lyr.name == mapName:

arcpy.mapping.RemoveLayer(ryx, lyr)

print(mapName + "Has Done")

print("All Done")


分享到:


相關文章: