方向:根据属性字段设置点图层中每个要素的符号方向和大小,

1 所有要素使用同一种符号---简单渲染

在图层属性---符号系统---单一符号中进行设置,首先设置符号,在后面的【高级】选项按钮中分别设置【旋转】和【大小】

【旋转】下拉框中选择对应字段,以及旋转方式,确定即可

【大小】下拉框中选择对应符号大小的字段,确认即可

2 要素根据字段值得不同采用不同的符号---使用唯一值渲染

图层属性中设置唯一值渲染,根据字段值得不同选择不同的符号,并在【高级】选项中设置【旋转】和【大小】,方法同上

显示效果如下:

ArcEngine提供了相应的接口进行设置,

IRotationRenderer设置旋转参数

ISizeRenderer设置大小参数

比如

  IRotationRenderer pRotationRender = pSimRender as IRotationRenderer;
pRotationRender.RotationField = "ANGEL";
pRotationRender.RotationType = esriSymbolRotationType.esriRotateSymbolArithmetic; ISizeRenderer pSizeRender = pSimRender as ISizeRenderer;
pSizeRender.SizeRendererFlags = (int)esriSizeRendererFlags.esriSizeRendererUseExpression;
pSizeRender.SizeRendererExpression = "[SIZE]";

简单渲染

        /// <summary>
/// 单一符号化
/// </summary>
/// <param name="pFeatLyr">渲染图层</param>
/// <param name="pRgbColor">渲染颜色</param>
private void SimpleRenderer(IFeatureLayer pFeatLyr, IMarkerSymbol markerSymbol)
{
try
{
esriGeometryType type = pFeatLyr.FeatureClass.ShapeType;
ISimpleRenderer pSimRender = new SimpleRendererClass(); IColor pColor = this.GetColor(255, 0, 0);
if (type == esriGeometryType.esriGeometryPoint)
{
markerSymbol.Color = pColor;
markerSymbol.Size = 50;
pSimRender.Symbol = markerSymbol as ISymbol;
IRotationRenderer pRotationRender = pSimRender as IRotationRenderer;
pRotationRender.RotationField = "ANGEL";
pRotationRender.RotationType = esriSymbolRotationType.esriRotateSymbolArithmetic; ISizeRenderer pSizeRender = pSimRender as ISizeRenderer;
pSizeRender.SizeRendererFlags = (int)esriSizeRendererFlags.esriSizeRendererUseExpression;
pSizeRender.SizeRendererExpression = "[SIZE]"; } IGeoFeatureLayer pGeoFeatLyr = pFeatLyr as IGeoFeatureLayer;
pGeoFeatLyr.Renderer = pSimRender as IFeatureRenderer;
this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
this.axTOCControl1.Update();
}
catch (Exception ex)
{
}
}

唯一值渲染

        /// <summary>
/// 多符号
/// </summary>
/// <param name="pFeaLyr"></param>
/// <param name="fieldname"></param>
private void UniqueValueRender(IFeatureLayer pFeaLyr, string fieldname)
{
IGeoFeatureLayer pGeoFeatLyr = pFeaLyr as IGeoFeatureLayer;
ITable pTable = pFeaLyr as ITable;
IUniqueValueRenderer pUniqueValueRender = new UniqueValueRendererClass(); int intFieldNumber = pTable.FindField(fieldname);
pUniqueValueRender.FieldCount = 1;//设置唯一值符号化的关键字段为一个
pUniqueValueRender.set_Field(0, fieldname);//设置唯一值符号化的第一个关键字段 //根据渲染字段的值的个数,设置一组随机颜色,如某一字段有5个值,则创建5个随机颜色与之匹配
IQueryFilter pQueryFilter = new QueryFilterClass();
bool bSuccess = false;
IColor pNextUniqueColor = this.GetColor(255, 0, 0);
//查询字段的值
pQueryFilter = new QueryFilterClass();
pQueryFilter.AddField(fieldname);
ICursor pCursor = pTable.Search(pQueryFilter, true);
IRow pNextRow = pCursor.NextRow();
int codeValue = 0;
IRowBuffer pNextRowBuffer = null; while (pNextRow != null)
{
pNextRowBuffer = pNextRow as IRowBuffer;
codeValue = Convert.ToInt32(pNextRowBuffer.get_Value(intFieldNumber));//获取渲染字段的每一个值
IMarkerSymbol pMarkerSymbol = null; switch (pGeoFeatLyr.FeatureClass.ShapeType)
{
case esriGeometryType.esriGeometryPoint:
{
string symbolname = "";
switch (codeValue)
{
case 1:
symbolname = "飞机场";
break;
case 2:
symbolname = "箭头";
break;
case 3:
symbolname = "房屋";
break; }
pMarkerSymbol = ServerSymbolUtilty.GetItemFromServerStyle(symbolFile, "Marker Symbols", symbolname).Item as IMarkerSymbol;
pMarkerSymbol.Color = pNextUniqueColor;
pUniqueValueRender.AddValue(codeValue.ToString(), "", pMarkerSymbol as ISymbol);//添加渲染字段的值和渲染样式
pNextRow = pCursor.NextRow();
break;
}
}
}
IRotationRenderer pRotationRender = pUniqueValueRender as IRotationRenderer;
pRotationRender.RotationField = "ANGEL";
pRotationRender.RotationType = esriSymbolRotationType.esriRotateSymbolArithmetic; ISizeRenderer pSizeRender = pUniqueValueRender as ISizeRenderer;
pSizeRender.SizeRendererFlags = (int)esriSizeRendererFlags.esriSizeRendererUseExpression;
pSizeRender.SizeRendererExpression = "[SIZE]"; pGeoFeatLyr.Renderer = pUniqueValueRender as IFeatureRenderer;
axMapControl1.Refresh();
axTOCControl1.Update();
}

这里仅是点符号的渲染,其他渲染类似,代码比较乱,仅供参考,

【GIS】点图层符号的方向和大小的更多相关文章

  1. 《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现2

    原文:<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 摘要:在第七讲 图层符号选择器的实现的第一阶段中,我们完成了符号选择器窗体的创建与调用.在第二阶段中, ...

  2. android自适应屏幕方向和大小

    一:不同的layout Android手机 屏幕 大小不一,有480x320, 640x360, 800x480.怎样才能让App自动 适应不同的屏幕 呢?      其实很简单,只需要在res目录下 ...

  3. 设置图层符号风格为用已有mxd里的同名图层风格

    //要加载的IFeatureClass IFeatureClass pFeatClass = dataset as IFeatureClass; //新建要加载到mxd文档中的图层 IFeatureL ...

  4. ArcGIS api for javascript——地图配置-滑动器的刻度线、方向、大小的改变

    描述 本例展示了如果删除缩放等级滑动器的刻度线.通过设置esriConfig里的sliderLabel为null来实现: esriConfig.defaults.map.sliderLabel = n ...

  5. idea运行gradle项目报错,找不到符号符号,方向xxxx类未知

    报错: 解决:把build和run设置为idea

  6. GIS基础软件及操作(七)

    原文 GIS基础软件及操作(七) 练习七.地形分析 地形分析:TIN及DEM的生成及应用 加深对TIN建立过程的原理.方法的认识: 熟练掌握ArcGIS中建立DEM.TIN的技术方法: 结合实际,掌握 ...

  7. 【PS算法理论探讨二】 Photoshop中图层样式之 投影样式 算法原理初探讨。

    接下来几篇文章我们将稍微简单的探索下PS中多种图层混合模式的算法内部原理,因为毕竟没有这方面的官方资料,所以很多方面也只是本人自己的探索和实践,有可能和实际的情况有着较大的差异. 在PS的实践中,图层 ...

  8. Google Maps API V3 之 图层

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  9. 《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立

    原文:<ArcGIS Engine+C#实例开发教程>第一讲桌面GIS应用程序框架的建立 摘要:本讲主要是使用MapControl.PageLayoutControl.ToolbarCon ...

随机推荐

  1. [刘阳Java]_什么是EasyUI_第1讲

    jQuery EasyUI在Java后台开发中用得还是比较多.当然客观来讲虽然前端技术的发展,很多后台界面设计都植入了前端技术的框架.但是这篇文章我个人觉得也不会妨碍我们对jQuery EasyUI的 ...

  2. POJ 树的直径和重心

    树的直径:(无根)树上最长两点间的最长路径,两次dfs即可,第一次dfs任选一点u,找到距离它最远的点s,再从点s进行一次dfs,找到距离s最远的点t,则s-t之间的路径就是树的直径.证明: < ...

  3. PAT乙级:1057 数零壹 (20分)

    PAT乙级:1057 数零壹 (20分) 题干 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一 ...

  4. 构建后端第3篇之---springb @Alias注解使用

    write by 张艳涛 in 202210210,after today i will  write aritles by english,because english is so diffent ...

  5. 3分钟搭建一个网站?腾讯云Serverless开发体验

    作为一个开发者,应该都能理解一个网站从开发到上线,要经过很多繁琐的步骤. 编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间. 作为一个不精通代码的业务玩家, ...

  6. Tr0ll靶机

    一.主机探测 二.信息收集 进入21端口 发现文件并下载 下载文件 作为字典进行登录爆破 用字典爆破 ssh登录 查找信息   /etc/init.d/ssh start scp root@192.1 ...

  7. thinkphp5 原生sql带分页方法

    1.先在顶部引入use think\paginator\driver\Page; 2.使用下例代码 $pageNumber = input('page')? input('page'):'0';//客 ...

  8. 关于MySQL8的WITH查询学习

    目录 前言 示例 练习 总结 前言 对于逻辑复杂的sql,with可以大大减少临时表的数量,提升代码的可读性.可维护性 MySQL 8.0终于开始支持with语句了,对于复杂查询,可以不用写那么多的临 ...

  9. 3个月零基础入门Python+数据分析,详细时间表+计划表分享

    ​大家好,我是白云. 今天想给大家分享的是三个月零基础入门数据分析学习计划.有小伙伴可能会说,英语好像有点不太好,要怎么办?所以今天我给大家分享的资源呢就是对国内的小伙伴很友好,还附赠大家一份三个月学 ...

  10. Unsatisfied dependency expressed through field 'rabbitTemplate'错误总结

    1. 在springboot中整合RabbitMq的过程中,遇到如下错误:(截取部分) org.springframework.beans.factory.UnsatisfiedDependencyE ...