2.9 更新图层符号
arcpy.mapping.UpdateLayer() 函数有更新图层符号的功能。当然该函数还可改变图层的各种属性,一般默认情况下更新符号,主要由参数控制。
>>> import arcpy
>>> mxd=arcpy.mapping.MapDocument("current")
>>> df=arcpy.mapping.ListDataFrames(mxd)[0]
>>> updatelayer=arcpy.mapping.ListLayers(mxd,"natur*",df)[0]
>>> sourcelayer=arcpy.mapping.Layer(r"E:\python_acrpy\pythonProject2\main\natural.lyr")
>>> arcpy.mapping.UpdateLayer(df,updatelayer,sourcelayer,True)
更新图层符号,首先确保更新图层和源图层有相同的几何,还有就是属性定义是否相同,比如分级符号一般都基于一个特定的字段,白话就是两个图层要有个相同字段属性。UpdateLayer()参数:df指的是数据框;updatelayer指将要更新符号的图层;sourcelayer指包含新符号的图层文件,用于更新;最后一个参数使用True表示仅更新符号,而不更新别的属性。
拓展:UpdateLayer()还可以移除一个图层并把另一个图层添加到该位置,两个图层可以完全不相关,不用考虑几何和属性字段。实现方法是最后一个参数值设为False。
>>> sourcelayer1=arcpy.mapping.Layer(r"E:\python_acrpy\pythonProject2\main\natural.shp")
>>> updatelayer2=arcpy.mapping.ListLayers(mxd,"railwa*",df)[0]
>>> arcpy.mapping.UpdateLayer(df,updatelayer2,sourcelayer1,False)
2.10 更新图层属性
本节继续拓展上节提到UpdaeLayer(),它还可以改图层其他属性。所有在图层属性对话框中找到的属性都可使用此函数来修改,比如图层名称、字段别名、符号系统、定义查询等等。当一个图层被多个地图文档添加并需要在所有文档中修改调整该图层某些属性时,可以使用此法。具体实现:可以在arcmap中修改需要改的属性后将图层保存为图层文件lyr,然后把这个lyr文件作为源图层,用来更新updatelayer图层属性。
>>> import arcpy
>>> mxd=arcpy.mapping.MapDocument("current")
>>> df=arcpy.mapping.ListDataFrames(mxd)[0]
>>> updatelayer=arcpy.mapping.ListLayers(mxd,"natu*",df)[0]
>>> sourcelayer=arcpy.mapping.Layer(r"E:\python_acrpy\pythonProject2\main\natural_new.lyr")
>>> arcpy.mapping.UpdateLayer(df,updatelayer,sourcelayer,False)
2.11操作启用时间的图层
DateFrameTime是DateFrame.time属性返回的结果,可以检索currentTime,endTime,startTime,timeStepInterval及其他能使用timeslideroptions对话框建立的属性。利用此功能按timeStepInterval间隔时间可以利用 循环("<=endTime")导出(mapping.exportToPDF)不同时段的地图pdf或者jpg等。当然还有很多参数选项可用,如图层时间属性中的“积累显示数据”。