在arcpy中为具有最大值变化的数据映射分级符号

时间:2015-10-13 22:53:45

标签: mapping range legend arcpy

我有一个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,但该部分正在运行。

谢谢!

0 个答案:

没有答案