AE开发之图层渲染
- 比例符号化
- 地图的整饰
- 唯一值符号的符号化过程
- 点符号设置,线符号设置
- 标注图层,
(写得不好,不推荐看)
唯一值符号化,字段进行设置,这里用到了UniqueValueRenderer接口,这里面有一个FieldCount字段,用于设置或返回渲染唯一值
通过,IUniqueValueRender中的AddValue方法。
唯一值多字段,有一个字段或者多个字段,唯一值一个字段,实习期间多个字段的尽量去实现表达出来
分级色彩符号化,有一个数值型字段,进行分级,分级方法
数值间隔是多少,等间距,自然断点,基于统计,基于个数,等个数,100个点,等个数就是分十级,每一级个数一样。
分级是有分级方法,分级之后用什么颜色去表达呢,
分级设色,分级符号化,根据面积设置了五个分级,根据面积进行不同的颜色设置。
再一个呢?
颜色符号化,分级符号化,不同的区域,根据面积大小,用不同大小的符号进行表示,分级符号化进行表示
比例符号化
数值型字段,假设这个点,想表达不同的数值的亮度变化,我去表达一个数值,其他的点,超过这个数值,我就用2倍大小
MaxDataValue MinDataValue 表达最小值最大值符号的大小,进行指定,其他的符号会根据比例进行设置,点密度符号化,主要用于面状要素,数值型要素的高低,人口等点越密集,代表的亮值,当前面域数值之内,绘制几个点,“面密度方法”
点密度图是什么含义,统计符号,饼图,折线图,面状图
找代码,找方法,找类,统计符号一般用 chartRender类,看看是折线图还是饼状图等设置,
双值符号化,两个值进行表达的时候,一个值有分级符号化,另一个是用颜色去表达,表示两个层。
多比例尺符号化,是什么概念呢,我在不同的地图的缩放尺度下,显示不同的表达效果,这时候就需要多比例尺符号设置
1-1000比例尺范围内,设置一个显示效果,设置不同的符号化显示效果,可能效果就比较优秀了,多比例尺符号化
地图的整饰
加图例,那么图例应该嫁到哪里呢,加在透明层上面,
打开地图之后,点层设置里面,这里面有一个symbol,很多渲染的效果,第一个效果就是简单渲染,
unige valuew只能用数值型的嘛?答:也可以是字符串,比如城市名称,比如城市编码,大型城市,中型城市,小型城市,可能编码一样,但是名称不一样,
可以把所有的唯一值,进行设置
找到所有的唯一值进行应用,
arcgis所表达的这个界面,我们可以做一个类似的界面,
我们可以单独的拿出符号化这一个窗口,进行实现,这个界面工作,不涉及到AE开发,只涉及到C#进行操作
建议去尝试一下,
最多三个字段和他们的名字,设置几个字段,去添加唯一值,一般情况下,在属性表里面,存这个记录,想用什么样的符号去表达,编号或者名称放在这个里面去,当然我们现在也可以理解了,当然了我们也可以看到分级设色,看到渐变色,设置一个色带,这个色带是预先设置出来的,设置这个工作,可以设置起始颜色和终止颜色,然后开始计算,自动进行色带的生成,当前是用什么分级方法,手动的进行指定和设置,我们可以呢,等间距,十级的等间距,也可以去设置,自己去定义一个间距,设定一个。
当然还有呢,我们可以,最大值最小值,各占25%的比例,这个是自然断点,是根据当前的,根据个数或者间距,符合分布规律的
给大家去看这个是什么目的呀,每一个分级都有一个对应的类,我们要用这个对应的类去进行分级设定。
比例符号化,指定一个最小符合,进行去表达,其余的,按比例进行生成,其余的进行设置和生成,无限制放大可能效果不好,我们可以设置最大是多少,最小是多少,进行设置,
还有里面chart,饼图,折线图,进行设置,进行表达。
点击每一个菜单项,进入,自己去设想的话,如果唯一值符号化,去设置,要考虑要用什么颜色,什么符号,考虑什么形状,什么大小啊,线型是什么
单一符号化设置,符号颜色设置,代码颜色符号都固化了,我们自己做的时候,要做一个对话框,进行选择和设置,后期做人机交互。
单一符号化,当前选择的这个层,hateTExt方法,选择iTem,选择层,选择地图,他是空的,
按下鼠标的时候进行选中的,我们去判断,所对应的shapeType,这是什么类型,多点要素是什么,多个点代表一个实体,有没有这个问题呢?多个点有同样的属性,有多个点做成一个Multipoint,如果是这个是一个点或者multipoint,进行SimpleMarkerSymbol,对简单符号化渲染的这个类,SimpleRender这个,
返回的是render的这个simple进行赋值,设定一个符号,创建一个simplerender这个对象,赋给当前这个层的render属性,一刷新,就用简单符号进行渲染了
上面是点的。线 面都一样
上面没有赋宽度,默认是 1 ,后面都是一样的
后面唯一不一样的是,simplerender ,简单渲染是不是很简单啊
geometryLine GeometryRing envelope 椭圆
只要是面的,我们都去执行下面的代码
简单单一符号化(上面)
下面再看,唯一值符号化,怎么样才能实现唯一值符号化,首先要找到唯一值,怎么去找唯一值呢
指定字段,然后去调用datastatistic让他去指定哪一个字段,再去统计一个唯一值,有多少个唯一值,就要有多少个颜色的色带,每一个唯一值都有一个颜色进行设定,色带的个数和唯一值个数要有对应关系,找到后,需要建立起来这个关系,接口里面有addvalue方法,要做什么用呢,
要做唯一值渲染的时候,就要添加进去,add完之后,有了一个数组,就给我指定的这个层,指定这个层的render方法,出来这个元素,我们应该选什么符号进行表达呢
唯一值符号的符号化过程
理好这个思路,我们就可以去进行代码的执行了,
代码的执行也是有这个固化的颜色,后期也需要改进
找到对应的层,返回IUniqueValueRender 指定一个字段进行唯一值渲染,唯一值进行选择的时候,
选择这个表里面的,选择到的部分,进行替换,进行固化,但是自己去做的时候不要单独用这个字段,需要做窗口进行人机交互
我们要去找,FID要找所有的唯一值
数据所对应的数据源,进行查询,然后在进行statistics 然后再去找到featureclass方法,把数据源所有这个要素进行访问和渲染,这是我们返回所有要素和代码,我们要建立唯一值和颜色的对应关系,下面进行色带设置,下面可以用不同的色带, 可以选随机设色 randomColorRamp
每一个值进行设置最大值,最小值,色带的尺寸,多少的颜色个数,当前的featureclass 有多少个要素,进行设置,featureCount进行设置,进行设置查询条件,进行指定和设置,色带设置完成之后,就调用ColorRamp进行生成,生成的所有颜色,所有要素进行一一对应关系,我们循环一个记录,就给这个记录附上颜色值
get_Value进行设置和指定下面的类型值,如果是点的就做MarkerSymbol,色带里面的,循环到的颜色,然后生成,接口查询的ISymbol,对应哪一个值进行设置,设置符号的尺寸和大小,没有的话,进行设置,唯一值数值进行符号建立起来了,后面开始进行循环,每一个值都找到,每一个值都对应上,后面做什么呢?让当前这个层,等于UnigeVAlue
点的用markerSymbol,线的用LineSymbol,面的用
学习算法,用AE表达。
点符号设置,线符号设置
唯一值符号化,唯一值多字段符号化,分级设色符号化,分级色彩符号化
分级设色,分级方法,我们要进行分级要怎么做呢
间隔的调整,我可以指定分级的个数
有无不同分级方法,这里呢,equalInterval等间距分级,这个对象分管这个,不同的分级方法,进行分级的时候,调用分级的这个类。
所有对象都会实现这个接口,我们找到这个接口之后,再去用这个接口去反推,谁去实现了这个接口,用这个分级方法去反推
调用了很多对象 找分类方法
等个数,进行统计,每个频度去判定,basicTable…对象,代表一个起始值,一个空间值,有了这个,我们就可以根据当前数据,进行频度统计,找到图层对应的矢量数据集,创建这个之后,我们就可以进行查询
tableHIstogram找,哪一个字段要进行统计,编写用户的交互界面,用一个table,用一个basicHistogram,找到当前一些字段,统计datavalue的值进行统计,gethistogram存放数据值,这个呢就是做数据评估统计的,数值型数据,进行等间距分级,等个数分级,硬性指定分级方法,后面就给分级进行设定,classify进行数据分级,数据,频度,个数,
分级后的结果放哪里去了?放到classBreaks。每一个断点都代表分级的位置
所有break的范围要给他取到,放到哪里去呢,一个classes数组里面去了,再去吧,classcount分过来
划分为六段,或者划分为四段,这时候就要找到划分的段,我们这种分级方法和渲染效果进行渲染和学习,这里面还需要指定BreakCount ,再去设定分级的升序或者降序,后面还需要去指定起止颜色制作色带的设定,
分级关系对应好了,就可以设置符号和断点,然后就直接和前面一样了
比例符号化,我是不是要去找,当前指定的一个字段,找当前字段的最大值最小值,指定这个最小值用什么符号去设置,其余的符号值,用别的去指定
指定当前的图层之后,我们要去用这个数值去对当前这个数据做统计,然后去找最大值最小值
全要素进行设置
后面对这些统计量,设置一个简单的mark符号,进行设置,比例符号化,比例符号化的渲染风格,指定对哪一个字段进行渲染,最大值最小值是谁,就从统计出来的最大值最小值
0.001-0.1变化,
对于最小值,后期对数据进行分析,到底加什么
createlegendSymbols进行生成,然后在进行添加
自己加注释;
点密度符号化,我们应该怎么去做呢
我也得找到一个数值型字段,根据当前数值型字段进行赋值,在这个面里面到底放几个点,放点的个数和代表的大小是不是有关系呀,点个数是不是越少呀,点的尺寸和大小是不是也需要进行设定呀
点符号设置的时候,是DotDensityRender
RenederFields,这个接口有什么用啊,是指定对应的字段,看指定的哪一个字段,然后进行颜色设置,进行点密度填充符号,学填充符号的时候,每一个点的尺寸是多少,每一个位置是不是固定的,每一个颜色是什么,
DotDensityFIllsymbol
symArray.AddSymbol()、、、做完之后,我们就给render进行赋值了,
概念
填空
程序设计(代码注释,一段代码填充,填写关键词,关键类的,所有对象所有类所有方法,扩展:留上一段话,手写代码进行实现,这一段不会很复杂,但基本上会是自己编写的代码)
标注图层,
点层还是面层进行判定,增加了一个对话框,弹出一个小对话框,通过不同设置,找到不同字段,找到符号设置,在这里呢,进行显示,DialogResult,进行Field图层进行循环,
找到字段集合里面的第几个字段,后面干什么事情呀
把里面的cursor里面进行设置,一个一个访问里面的feature,对应里面的value值进行标注,这一个过程进行标注,把里面的这个值进行标注,设置标注位置,当前这里面这个feature
、
进行设置,
这里面的方法加到这里面,
指定字体,尺寸大小,textsymbol进行设置,风格是什么,颜色是什么,文本字符串的内容是什么
字段名称是什么
textSymbol进行设置,text ELement进行生成,进行设置,赋值,添加到graphicscontainer上面,目的是把文本字符串传进来,字体颜色传进来,字体位置加进来,用这个值加进来,用这个值进行