import arcpy.mp as map
#打开工程文件
aprx=map.ArcGISProject("CURRENT")
#读取地图
Mxd=aprx.listMaps()[0]
#修改地图名称
Mxd.name="Crime Project"
#保存副本
aprx.saveACopy("Crime_copy.aprx")
#获取地图内的图层列表
layers=Mxd.listLayers()
for lyr in layers:
print(lyr.name)
import arcpy.mp as map
#打开工程文件
aprx=map.ArcGISProject("CURRENT")
#读取地图
Mxd=aprx.listMaps()[0]
#添加底图
Mxd.addBasemap("中国地图彩色版")
#添加shp图层
Mxd.addDataFromPath("D:\个人资料\Arcpy\ProgrammingPro\Databases\Trippville_GIS.gdb\\Floodplains")
#添加lyrx图层文件
lyr = map.LayerFile(r"D:\个人资料\Arcpy\ProgrammingPro\Databases\Zoning.lyrx")
Mxd.addLayer(lyr)
读取某一要素,为简单符号;改变其颜色、轮廓和尺寸
import arcpy.mp as map
try:
aprx = map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Map"):
for lyr in m.listLayers("Parcels"):
if lyr.isFeatureLayer:
sym = lyr.symbology
#按名称设置
sym.renderer.symbol.applySymbolFromGallery("机场跑道")
#改变颜色
sym.renderer.symbol.color ={'RGB': [255, 255, 190, 25]}
#轮廓颜色
sym.renderer.symbol.outlineColor ={'CMYK': [25, 50, 75, 25, 100]}
#尺寸
sym.renderer.symbol.size = 1.0
lyr.symbology = sym
except Exception as e:
print("Error: " + e.args[0])
1,列出工程已有的色带
aprx = arcpy.mp.ArcGISProject('CURRENT')
#列出色带名称
for cr in aprx.listColorRamps():
print(cr.name)
2,设置分级色彩
import arcpy.mp as map
try:
aprx=map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Map"):
for lyr in m.listLayers("Parcels"):
if lyr.isFeatureLayer:
sym=lyr.symbology
#设置渲染器
sym.updateRenderer("GraduatedColorsRenderer")
#渲染字段
sym.renderer.classificationField = 'ACRES'
#分类方法
sym.renderer.classificationMethod ='NaturalBreaks'
#类数
sym.renderer.breakCount = 5
sym.renderer.colorRamp =aprx.listColorRamps("热点图:深品红-黄")[0]
lyr.symbology = sym
except Exception as e:
print("ERROE:"+e.arg[0])
import arcpy.mp as map
try:
aprx=map.ArcGISProject("CURRENT")
for m in aprx.listMaps("Streets and Railroads"):
for lyr in m.listLayers("Street_Centerlines"):
if lyr.isFeatureLayer:
sym=lyr.symbology
#设置渲染器
sym.updateRenderer("UniqueValueRenderer")
#渲染字段
sym.renderer.fields = ['Condition']
#读取每个字段,赋予不同的颜色
for grp in sym.renderer.groups:
for itm in grp.items:
if itm.label == "Poor":
itm.symbol.color = {"RGB":[255, 0, 0, 100]}
elif itm.label == "Fair":
itm.symbol.color = {"RGB":[0, 92, 230, 100]}
elif itm.label == "Good":
itm.symbol.color = {"RGB":[38, 115, 0, 100]}
lyr.symbology = sym
except Exception as e:
print("ERROE:"+e.arg[0])
import arcpy
#导入当前工程文件
p = arcpy.mp.ArcGISProject('CURRENT')
#引用工程中的单个页面布局
m = p.listMaps("Crime Project")[0]
#引用页面布局中的't_x5'图层
l = m.listLayers('Building_Permits')[0]
sym = l.symbology
#渲染器:栅格类用colorizer 矢量类用renderer
#设置符号小数点
Labels=sym.renderer.classBreaks
for i in range(len(Labels)):
#label获取并设置分类间隔的标注。
L=Labels[i].label.split(" - ")
Label=str(round(float(L[0]),3))+" - "+str(round(float(L[1]),3))
Labels[i].label=Label
#修改要素符号
l.symbology = sym
#读取图层
lyr= m.listLayers('Burglaries_2009')[0]
#更新布局视图范围
mf =lyt.listElements('MAPFRAME_ELEMENT')[0]
mf.camera.setExtent(mf.getLayerExtent())
#从fc中选择要素
arcpy.SelectLayerByAttribute_management(fc, "NEW_SELECTION", "格网ID = " + str(i))
#读取布局
lyt = aprx.listLayouts("Park Layout")[0]
#读取布局中地图框
mf = lyt.listElements("MAPFRAME_ELEMENT")[0]
#缩放至选择的要素
mf.zoomToAllLayers(True)
#平移
#读取MAP地图中的要素
parcelLyr = m.listLayers("Parcels")[0]
#平移要素
ext = mf.getLayerExtent(parcelLyr,True)
mf.panToExtent(ext)
#导出JPEG,DPI400,高清格式
lyt.exportToJPEG(outFile,400,8,100,True)
#修改标题
title = layout.listElements("TEXT_ELEMENT", "标题")[0]
title.text = "%s边界图" % name[0:3]
#修改下标日期
day_title = layout.listElements("TEXT_ELEMENT", "日期")[0]
day_title.text = "%s年%s月%s日制" % (datetime.today().year, datetime.today().month, datetime.today().day)
可以先修改图例的文本符号,大小、字体;后面批量操作可以直接继承
import arcpy
#导入当前工程文件
p = arcpy.mp.ArcGISProject('CURRENT')
#读取布局
lyt = p.listLayouts()[0]
#读取布局中图例
legend = lyt.listElements()[0]
legend.title
#修改图例项的可见性
for itm in legend.items:
itm.patchHeight = 16
itm.patchWidth = 30
itm
if itm.name != 'Building_Permits':
itm.visible = False
如下代码,是对’t_x5’图层制图的;只需加个循环即可对所有要素进行批量输出。
import arcpy
#导入当前工程文件
p = arcpy.mp.ArcGISProject('CURRENT')
#引用工程中的单个页面布局
m = p.listMaps('地图')[0]
#引用页面布局中的't_x5'图层
l = m.listLayers('t_x5')[0]
sym = l.symbology
#渲染器:栅格类用colorizer 矢量类用renderer
#修改色带,分类方法,分类数,直接中文
sym.updateRenderer('GraduatedColorsRenderer')
sym.renderer.colorRamp =p.listColorRamps("预测")[0]
sym.renderer.classificationMethod="EqualInterval"
sym.renderer.breakCount=4
#符号类型
print(sym.renderer.type)
#分类字段
print(sym.renderer.classificationField)
#分为几类
print(sym.renderer.breakCount)
#色带名称,空值,名称不会随渲染器或着色器保留
print(sym.renderer.colorRamp.name)
#设置符号小数点
Labels=sym.colorizer.classBreaks
for i in range(len(Labels)):
L=Labels[i].label.split(" - ")
Label=str(round(float(L[0]),3))+" - "+str(round(float(L[1]),3))
Labels[i].label=Label
#修改要素符号
l.symbology = sym
#获取当前布局
lyt = p.listLayouts("布局")[0]
#导出图片
lyt.exportToPNG("A.png", 300)