【GIS】点图层符号的方向和大小
方向:根据属性字段设置点图层中每个要素的符号方向和大小,
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】点图层符号的方向和大小的更多相关文章
- 《ArcGIS Engine+C#实例开发教程》第七讲 图层符号选择器的实现2
原文:<ArcGIS Engine+C#实例开发教程>第七讲 图层符号选择器的实现2 摘要:在第七讲 图层符号选择器的实现的第一阶段中,我们完成了符号选择器窗体的创建与调用.在第二阶段中, ...
- android自适应屏幕方向和大小
一:不同的layout Android手机 屏幕 大小不一,有480x320, 640x360, 800x480.怎样才能让App自动 适应不同的屏幕 呢? 其实很简单,只需要在res目录下 ...
- 设置图层符号风格为用已有mxd里的同名图层风格
//要加载的IFeatureClass IFeatureClass pFeatClass = dataset as IFeatureClass; //新建要加载到mxd文档中的图层 IFeatureL ...
- ArcGIS api for javascript——地图配置-滑动器的刻度线、方向、大小的改变
描述 本例展示了如果删除缩放等级滑动器的刻度线.通过设置esriConfig里的sliderLabel为null来实现: esriConfig.defaults.map.sliderLabel = n ...
- idea运行gradle项目报错,找不到符号符号,方向xxxx类未知
报错: 解决:把build和run设置为idea
- GIS基础软件及操作(七)
原文 GIS基础软件及操作(七) 练习七.地形分析 地形分析:TIN及DEM的生成及应用 加深对TIN建立过程的原理.方法的认识: 熟练掌握ArcGIS中建立DEM.TIN的技术方法: 结合实际,掌握 ...
- 【PS算法理论探讨二】 Photoshop中图层样式之 投影样式 算法原理初探讨。
接下来几篇文章我们将稍微简单的探索下PS中多种图层混合模式的算法内部原理,因为毕竟没有这方面的官方资料,所以很多方面也只是本人自己的探索和实践,有可能和实际的情况有着较大的差异. 在PS的实践中,图层 ...
- Google Maps API V3 之 图层
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- 《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立
原文:<ArcGIS Engine+C#实例开发教程>第一讲桌面GIS应用程序框架的建立 摘要:本讲主要是使用MapControl.PageLayoutControl.ToolbarCon ...
随机推荐
- OSPF的基本工作原理
OSPF的基本工作原理 1.定义 2.特点 3.基本概念 4.OSPF五种分组类型 5.DR/BDR 6.区域 1.定义 开放最短路径优先OSPF,是为了克服RIP的缺点在1989年开发出来的. &q ...
- [刘阳Java]_什么是EasyUI_第1讲
jQuery EasyUI在Java后台开发中用得还是比较多.当然客观来讲虽然前端技术的发展,很多后台界面设计都植入了前端技术的框架.但是这篇文章我个人觉得也不会妨碍我们对jQuery EasyUI的 ...
- Nacos源码分析-Distro协议概览
温馨提示: 本文内容基于个人学习Nacos 2.0.1版本代码总结而来,因个人理解差异,不保证完全正确.如有理解错误之处欢迎各位拍砖指正,相互学习:转载请注明出处. 什么是Distro协议 今天来分析 ...
- mybatis-6-动态sql
动态sql简介&OGNL了解 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处 理器相似. MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作. if cho ...
- Redis主从复制那点事
我们在 Redis持久化机制你学会了吗?学习了AOF和RDB,如果Redis宕机,他们分别通过回放日志和重新读入RDB文件的方式恢复数据,从而提高可靠性.我们今天来想这么一个问题,假如我们 ...
- 【动态规划】石子合并 luogu-1880
分析 简单的区间DP AC代码 #include <bits/stdc++.h> using namespace std; #define ms(a,b) memset(a,b,sizeo ...
- document.all("div).style.display = "none"与 等于""的区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 异地远程访问群晖NAS中的文件
异地远程访问群晖NAS中的文件 我以群晖DS720+网络存储服务器为例,介绍我是如何异地远程访问群晖NAS中的文件的. 此文章只介绍部署操作的大概步骤,具体的操作方法和技巧可以在西瓜视频.抖音 ...
- squid异常停止的排查步骤
今天重启squid的时候发现,squid启动后,status 一会就stop了 whoami@blackman:~/script/AutoProxy-master/main/server$ sudo ...
- appium自动化测试(5)-一些pyhon操作
1.套件的问题 将所有的测试用例加进去,会一个个执行,用于用例名字没有规范test开头的时候 def suite(): suite = unittest.TestSuite suite.addTest ...