AE学习笔记之地图符号化
2016-09-18 19:18
357 查看
地图符号化就是对ArcGIS Engine中加载的地图图层进行渲染,地图图层可以分为点、线、面、三种形式。根据每个图层的图层类型可以分别对点、线、面要素,即MarkerSymbol、LineSymbol、和FillSymbol 进行渲染。
1、点对象
MarkerSymbol对于修饰点对象符号拥有五个子类:SimpleMarkerSymbol、ArrowMarkerSymbol、CharacterMarkerSymbol、PictureMarkerSymbol 和 MultilayerMarkerSymbol。一下以SimpleMarkerSymbol为例实现点对象的修饰:
具体流程为:首先,新建一个要素图层的接口,并将mapControl中的第一个图层赋予该图层。
然后,将要素图层转化为地理要素图层。
接着,新建一个SimpleRendererClass对象,和ISimpleMarkerSymbol接口。设置SimpleMarkerSymbol 的颜色、类型、尺寸等信息。
//将MarkerSymbol 赋予simpleRender的Symbol
simpleRender.Symbol = pMarkerSymbol as ISymbol;
geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer;
最后,设置地理要素的Render。
2、线要素
线要素与点要素相似,不过线要素的子类有8个,分别是:CartographicLineSymbol、HashLineSymbol、MarkLineSymbol、MultiLayerLineSymbol、SimpleLineSymbol、PictureLineSymbol、SimpleLine3DSymbol和TextureLineSymbol。以SimleLineSymbol为例:
结果如下图:
![](https://img-blog.csdn.net/20160918191649726?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3、FillSymbol与以上两个类似,有七种填充方式。
-----------------------------------------------------------------------------------------end-------------------------------------------------------------------
1、点对象
MarkerSymbol对于修饰点对象符号拥有五个子类:SimpleMarkerSymbol、ArrowMarkerSymbol、CharacterMarkerSymbol、PictureMarkerSymbol 和 MultilayerMarkerSymbol。一下以SimpleMarkerSymbol为例实现点对象的修饰:
try { //获得点图层 IFeatureLayer layer; layer = axMapControl1.get_Layer(0) as IFeatureLayer; for (int i = 0; i < axMapControl1.Map.LayerCount; ++i) //寻找点图层 { layer = axMapControl1.get_Layer(i) as IFeatureLayer; if (layer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint) break; } if (layer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint) return; //QI到IGeoFeatureLayer接口 IGeoFeatureLayer geoFeatureLayer = layer as IGeoFeatureLayer; //新建SimpleRendererClass对象 SimpleRenderer simpleRender = new SimpleRendererClass(); ISimpleMarkerSymbol pMarkerSymbol; //创建颜色 IColor color; color = new RgbColorClass(); color.RGB = 225; //创建SimpleMarkerSymbolClass pMarkerSymbol = new SimpleMarkerSymbolClass(); pMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle; pMarkerSymbol.Color = color; pMarkerSymbol.Angle = 60; pMarkerSymbol.Size = 6; //将MarkerSymbol 赋予simpleRender的Symbol simpleRender.Symbol = pMarkerSymbol as ISymbol; geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer; axMapControl1.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message); }
具体流程为:首先,新建一个要素图层的接口,并将mapControl中的第一个图层赋予该图层。
然后,将要素图层转化为地理要素图层。
接着,新建一个SimpleRendererClass对象,和ISimpleMarkerSymbol接口。设置SimpleMarkerSymbol 的颜色、类型、尺寸等信息。
//将MarkerSymbol 赋予simpleRender的Symbol
simpleRender.Symbol = pMarkerSymbol as ISymbol;
geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer;
最后,设置地理要素的Render。
2、线要素
线要素与点要素相似,不过线要素的子类有8个,分别是:CartographicLineSymbol、HashLineSymbol、MarkLineSymbol、MultiLayerLineSymbol、SimpleLineSymbol、PictureLineSymbol、SimpleLine3DSymbol和TextureLineSymbol。以SimleLineSymbol为例:
private void simpleLineSymbolToolStripMenuItem_Click(object sender, EventArgs e) { IGeoFeatureLayer geoFeatureLayer; geoFeatureLayer = axMapControl1.get_Layer(0) as IGeoFeatureLayer; ISimpleRenderer simpleRender; simpleRender = new SimpleRendererClass(); IRgbColor HC = new RgbColor(); HC.Red = 225; HC.Green = 0; HC.Blue = 0; ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass(); simpleLineSymbol.Color = HC; simpleLineSymbol.Width = 5; simpleLineSymbol.Style = esriSimpleLineStyle.esriSLSDashDot; simpleRender.Symbol = simpleLineSymbol as ISymbol; geoFeatureLayer.Renderer = simpleRender as IFeatureRenderer; axMapControl1.Refresh(); axTOCControl1.Update(); }
结果如下图:
3、FillSymbol与以上两个类似,有七种填充方式。
-----------------------------------------------------------------------------------------end-------------------------------------------------------------------
相关文章推荐
- per.ccz与png互转
- 项目难点
- Maven学习-继承
- Leetcode 403. Frog Jump 青蛙过河 解题报告
- HTTP协议
- 求小于n的素数个数(模板)
- 服务器远程管理简介(ILO,BMC,RSA)
- HDU 5901 Count primes 2016年沈阳网络赛 (Lehmer素数计数)
- Codevs 1215 迷宫(DFS)
- TCP/IP Sockets-1
- Spark的三种分布式部署方式
- tessract-ocr文本识别系统网页搭建php_进一步完善及操作流程详解
- 网站安全性之js注入
- Java(Android)线程池
- Android 服务与多线程——编写简单的音乐播放器程序
- 第一次参加创新性大赛吐槽/感受与经验。
- [JZOJ4786] 小a的强迫症
- centos7上部署php+mysql+nginx
- 计算客(无脑博士的试管们)
- docker入门实践