我有一个pyscript,我正在研究并遇到传奇问题。
该脚本的目标是获取一个csv文件,其中包含两列(国家/地区,值),我将根据国家/地区名称加入世界地图。一旦他们加入我把它变成一个lyr文件,然后开始处理它的映射方面。
我想更改被映射到'value'的字段,然后将映射更改为带有5个中断的渐变符号(地图中最大值的5,20,50,75,100%)。问题在于,根据正在使用的图层文件,最大值会发生变化。我花了很多时间寻找如何做到这一点,并且仍然很短,我的代码可能有一些不必要的部分以及我现在的python。
如何根据基于5%中断和最大值变化的分级符号进行映射?
我在下面编写的一些代码,
mxd = arcpy.mapping.MapDocument(workspace/blank_4.mxd")
df = arcpy.mapping.ListDataFrames(mxd)[0]
调用空白mxd文件,设置要素图层,声明变量
sourceLayer = arcpy.mapping.Layer(newname)
'newname'是正在使用的图层文件
outLayer = str(newname)
curmap = workspace + filename + ".shp"
arcpy.MakeFeatureLayer_management(curmap, outLayer)
将要素类转换为图层对象
LayerFile = str(outLayer) + ".lyr"
arcpy.SaveToLayerFile_management(outLayer, LayerFile)
将图层对象保存到图层文件
newlayer = arcpy.mapping.Layer(LayerFile)
使用LayerFile对象
为新图层定义变量arcpy.mapping.AddLayer(df, newlayer, "TOP")
将新图层添加到mxd doc地图文档
中的TOC顶部lyr = arcpy.mapping.ListLayers(mxd, newlayer, df)[0]
symbols = arcpy.mapping.Layer(C:\workspace\graduated_symbol2.lyr")
将映射字段从国家/地区名称更改为费用值
arcpy.ApplySymbologyFromLayer_management(lyr,symbols)
arcpy.mapping.UpdateLayer(df, lyr, symbols, True)
渐变符号是一个空白图层文件,我在其中创建了一个包含5个中断(5,20,50,75,100%)的图例,但是该范围是基于最大值22,000创建的,现在当我运行最大文件时超过22,000的任何35,000的值变为空白。
我如何才能完全使用%break,并使用相应csv文件的0 / max范围??????
使用来自源图层的sybmology更新新图层
if lyr.symbologyType == "GRADUATED_COLORS":
lyr.symbology.valueField = "value"
print lyr.symbology.numClasses #
更改符号系统,颜色和中断
{{1}}
然后我将其输出为pdf,但该部分正在运行。
谢谢!