ArcEngine IPageLayout 添加经纬网和公里网
转载于:http://www.gisall.com/html/52/25952-2932.html
向AxPageLayoutControl的PageLayout中添加格网分为两种情况: 添加经纬网 和 添加公里网。
两种情况的很多代码都是相同的,不过区别的地方也是很关键的。
创建经纬网时,是将IMapGrid的对象赋值给IMeasuredGrid对象。
创建公里网时,是将IMeasuredGrid对象的对象赋值给IMapGrid的对象,同时还要为IMeasuredGrid的对象设置投影属性(IProjectedGrid)。
具体代码:
1、创建经纬网。
///
/// 为PageLayout对象添加经纬网格
///
///
///
public void CreateGraticuleMapGrid(IPageLayout pPageLayout)
{
//获取MapFrame对象
IActiveView pActiveView = pPageLayout as IActiveView;
IMap pMap = pActiveView.FocusMap;
IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;
IMapFrame. pMapFrame. = pGraphicsContainer.FindFrame(pMap) as IMapFrame;
IMapGrids pMapGrids = pMapFrame. as IMapGrids;
//创建网格对象
IMapGrid pMapGrid = new GraticuleClass();// (IGraticule)pServerContext.CreateObject("esriCarto.Graticule");
pMapGrid.Name = "Map Grid";
//设置网格线的符号样式
ICartographicLineSymbol pLineSymbol;
pLineSymbol = new CartographicLineSymbolClass();
pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
pLineSymbol.Width = 1;
IRgbColor rgbColor = new RgbColor();
rgbColor.Red = 166;
rgbColor.Green = 187;
rgbColor.Blue = 208;
IColor color = rgbColor as IColor;
pLineSymbol.Color = color;
pMapGrid.LineSymbol = pLineSymbol;
//设置网格的边框样式,为简单边框样式
ISimpleMapGridBorder simpleMapGridBorder = new SimpleMapGridBorderClass();
ISimpleLineSymbol simpleLineSymbol = new SimpleLineSymbolClass();
simpleLineSymbol.Style. = esriSimpleLineStyle.esriSLSSolid;
simpleLineSymbol.Color = BuildRGB(0, 0, 0);
simpleLineSymbol.Width = 2;
simpleMapGridBorder.LineSymbol = simpleLineSymbol as ILineSymbol;
pMapGrid.Border = simpleMapGridBorder as IMapGridBorder ;
pMapGrid.SetTickVisibility(true, true, true, true);
//设置网格的主刻度的样式和可见性
pMapGrid.TickLength = 15;
pLineSymbol = new CartographicLineSymbolClass();
pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
pLineSymbol.Width = 1;
pLineSymbol.Color = color;
pMapGrid.TickMarkSymbol = null;
pMapGrid.TickLineSymbol = pLineSymbol;
pMapGrid.SetTickVisibility(true, true, true, true);
//设置网格的次一级刻度的样式和可见性
pMapGrid.SubTickCount = 5;
pMapGrid.SubTickLength = 10;
pLineSymbol = new CartographicLineSymbolClass();
pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
pLineSymbol.Width = 0.1;
pLineSymbol.Color = color;
pMapGrid.SubTickLineSymbol = pLineSymbol;
pMapGrid.SetSubTickVisibility(true, true, true, true);
//设置网格的标签的样式和可见性
IGridLabel pGridLabel;
pGridLabel = pMapGrid.LabelFormat;
pGridLabel.LabelOffset = 15;
stdole.StdFont pFont = new stdole.StdFont();
pFont.Name = "Arial";
pFont.Size = 16;
pMapGrid.LabelFormat.Font = pFont as stdole.IFontDisp;
//设置网格的可见性
pMapGrid.Visible = true;
//创建IMeasuredGrid对象
IMeasuredGrid pMeasuredGrid;
pMeasuredGrid = pMapGrid as IMeasuredGrid;
pMeasuredGrid.FixedOrigin = true;
pMeasuredGrid.XIntervalSize = 0.5; //meridian interval
pMeasuredGrid.XOrigin = 109; //shift grid 5
pMeasuredGrid.YIntervalSize = 0.5; //parallel interval
pMeasuredGrid.YOrigin = 40; //shift grid 5
//将网格对象添加到地图控件中
pMapGrids.AddMapGrid(pMapGrid);
//刷新地图
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);
}
2、创建公里网。
public void CreateMeasuredGrid(IPageLayout pPageLayout)
{
try
{
//获取MapFrame对象
IActiveView pActiveView = pPageLayout as IActiveView;
IMap pMap = pActiveView.FocusMap;
IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;
IMapFrame. pMapFrame. = pGraphicsContainer.FindFrame(pMap) as IMapFrame;
IMapGrids pMapGrids = pMapFrame. as IMapGrids;
//创建MeasuredGrid对象
IMeasuredGrid pMeasuredGrid = new MeasuredGrid() as IMeasuredGrid;
//设置pMeasuredGrid的投影属性
IProjectedGrid pProjectedGrid = (IProjectedGrid)pMeasuredGrid;
pProjectedGrid.SpatialReference = Map.SpatialReference;
double MaxX,MaxY,MinX,MinY;//动态获取坐标系中的坐标范围,以便设置网格的起始点和间隔
pProjectedGrid.SpatialReference.GetDomain(out MinX, out MaxX , out MinY , out MaxY );
pMeasuredGrid.FixedOrigin = true;
pMeasuredGrid.Units = Map.MapUnits;
pMeasuredGrid.XIntervalSize = (MaxX-MinX)/20;
pMeasuredGrid.XOrigin = MinX;
pMeasuredGrid.YIntervalSize = (MaxY - MinY)/20 ;
pMeasuredGrid.YOrigin = MinY;
//将pMeasuredGrid赋值个IMapGrid对象
IMapGrid pMapGrid = (IMapGrid)pMeasuredGrid;
pMapGrid.Name = "Measureed Grid";
//设置网格线的符号样式
ICartographicLineSymbol pLineSymbol;
pLineSymbol = new CartographicLineSymbolClass();
pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
pLineSymbol.Width = 1;
IRgbColor rgbColor = new RgbColor();
rgbColor.Red = 166;
rgbColor.Green = 187;
rgbColor.Blue = 208;
IColor color = rgbColor as IColor;
pLineSymbol.Color = color;
pMapGrid.LineSymbol = pLineSymbol;
//设置ICalibratedMapGridBorder的属性
ICalibratedMapGridBorder pCalibratedBorder = (ICalibratedMapGridBorder)new CalibratedMapGridBorder();
IRgbColor gCol = new RgbColor();
gCol.Red = 255;
gCol.Blue = 255;
gCol.Green = 255;
pCalibratedBorder.BackgroundColor = gCol;
IRgbColor ForeColor = new RgbColor();
ForeColor.Red = 0;
ForeColor.Blue = 0;
ForeColor.Green = 0;
pCalibratedBorder.ForegroundColor = ForeColor;
pCalibratedBorder.BorderWidth = 2;
pCalibratedBorder.Interval = 50;
pCalibratedBorder.Alternating = true;
pMapGrid.Border = (IMapGridBorder)pCalibratedBorder;
//设置网格的主刻度的样式和可见性
pMapGrid.TickLength = 15;
pLineSymbol = new CartographicLineSymbolClass();
pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
pLineSymbol.Width = 1;
pLineSymbol.Color = color;
pMapGrid.TickMarkSymbol = null;
pMapGrid.TickLineSymbol = pLineSymbol;
pMapGrid.SetTickVisibility(true, true, true, true);
//设置网格的次一级刻度的样式和可见性
pMapGrid.SubTickCount = 5;
pMapGrid.SubTickLength = 10;
pLineSymbol = new CartographicLineSymbolClass();
pLineSymbol.Cap = esriLineCapStyle.esriLCSButt;
pLineSymbol.Width = 0.1;
pLineSymbol.Color = color;
pMapGrid.SubTickLineSymbol = pLineSymbol;
pMapGrid.SetSubTickVisibility(true, true, true, true);
//标签格式设置IGridLabel
IGridLabel pGridLabel;
pGridLabel = pMapGrid.LabelFormat;
pGridLabel.LabelOffset = 15;
stdole.StdFont pFont = new stdole.StdFont();
pFont.Name = "Arial";
pFont.Size = 16;
pMapGrid.LabelFormat.Font = pFont as stdole.IFontDisp;
//设置网格的可见性
pMapGrid.Visible = true;
//添加网格对象到地图控件中
pMapGrids.AddMapGrid(pMapGrid);
//刷新地图
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null);
}
catch (Exception EX)
{
throw EX;
}
}
ArcEngine IPageLayout 添加经纬网和公里网相关推荐
- 晟兴地球如何添加经纬网
晟兴地球如何添加经纬网 1) 案例概述 介绍晟兴地球添加经纬网的操作步骤.晟兴地球下载. 2) 经纬网添加步骤 a.右键场景项目,选择添加其他图层. b.选择geodetic经纬网 ...
- ArcGIS pro制图添加经纬网图例
ArcGIS pro制图添加经纬网图例 添加经纬网 Insert - Grid Vertical 右键 - 属性 更改刻度.标签.刻线等等 添加图例 比例尺 修改主刻度和次刻线 修改文字大小.格式 右 ...
- 使用ArcGIS制作专题图,并添加经纬网
目录 一.添加地图三要素 二.添加经纬网 三.导出地图 一.添加地图三要素 首先将视图从数据视图切换到布局视图,页面的左下角. 现在页面是纵向的,点击文件→页面和打印设置,将方向调整为横向 调整地图及 ...
- ArcMap投影后的数据添加经纬网
众所周知,在ArcMap中的经纬线网是通过识别数据框的形状和范围来进行自动添加的,但是数据框通常是非常规则的矩形,而我们的数据通常经过地图投影后会发生形变,比如高斯投影,投影后的数据会变成非矩形,此时 ...
- 详解ArcGIS中添加经纬网操作步骤
1.ArcGIS中的经纬网在布局视图中才会显示,因此我们首先把视图切换为布局视图(点击左下角的第二个图标). 2.在布局视图的数据框内点击鼠标右键,此时数据框会显示为蓝色,然后在菜单中选择" ...
- 在ArcMap中添加经纬网
1. 进入Layout View模式 2. 地图上点击右键,选择Properties 3. 选择Grids选项卡,新建一个Grid 4. 调整属性,完成经纬网 转载于:https://www.cnbl ...
- 地图的出图设置和经纬网的调整(基础篇)
1.在页面布局调整到和页面边框相同: 单击右键--分布--调整到和页边距相同. 布局工具条中的放大和缩小工具是指对于整个图层进行放大和缩小:而工具工具条中的放大和缩小工具是讲图层中的某个图片进行放大和 ...
- Mapbox实现自定义经纬网及标注
一.效果预览 在Mapbox地图中,添加经纬网与经纬网坐标标注,并随着地图缩放自适应经纬网网格大小. 二.原理说明 本方法在maplibre-grid.js基础上修改完成,maplibre-grid ...
- ArcGIS地图制作的注记、格网添加
1.如何避免地图注记重复标记 在制图过程中,我们可能会发现,在同一区域上有多个注记重复标记,这无疑是十分影响地图阅读使用的,同时也十分的不美观,使得图面十分繁复,为避免相关情况出现,我们可以选择进行以 ...
最新文章
- python的源代码文件的扩展名是-python源文件后缀是什么?
- WCF(学习笔记)【参见WCF教程】
- C++ Opengl 显示列表源码
- visio2013跨线问题
- 西安单招学校学计算机软件的,西北大学软件职业技术学院单招
- c++中vector使用的小问题
- 蚂蚁区块链正式升级为蚂蚁链:首次公布“日活”超1亿
- 【转】ASP.NET ViewState详解
- Linux 下使用 gdb 调试 core 文件
- 如何将Java Web项目部署到服务器上
- 解决安装vissim4.3一直显示Installing Plug-Ins,please wait
- 三种视觉软件框架开发源码集合 三套 halcon视觉框架
- JavaWeb(HTML +css+js+Servlet....)
- word批量转PDF
- 室内三维物体识别与姿态估计--背景
- 安装angular ng-alain
- 2023年湖北武汉中级工程师怎么申请?申报渠道有哪些?启程别
- “早知道这些我的公司就不会死”系列(二):Cohort Analysis
- 爬取女朋友用我淘宝已购买的宝贝数据,发现了她特殊的秘密...
- Excel使用攻略(1)
热门文章
- Android的壁纸放在哪?
- 世界首张黑洞照片即将公布
- 突破隔离合同线上签—电子签名的用武之地
- STM32基础学习笔记(2)---独立看门狗
- android 组件可见,android界面控件可见性方法setVisibility()3个可选参数(visible,invisible,gone)的区别...
- 细说JVM系列:自动内存管理内存回收:垃圾收集理论-垃圾收集算法
- 使用Google CDN的JSAPI服务来提供加载各类JS库的方法
- 程序员为什么都容易“喜当爹”
- java基础部分典型代码
- Cadence放置过孔总结:走线过孔、过孔复制和过孔阵列