C#+ArcEngine加载mxt地图模板文件
各位看官老爷们,本文主要介绍二种读取mxt文件的方法(与读取mxd文档的方法高度相似)。方法如下,
方法1:
IMapDocument接口不仅可以对mxd文件(地图文档)进行操作,对待mxt文件(地图模板)同样如此:
OpenFileDialog open = new OpenFileDialog();open.Filter = "制图模板(*.mxt)|*.mxt";open.Title = "选择制图模板";open.CheckFileExists = true;open.CheckPathExists = true;if (open.ShowDialog() == DialogResult.OK){IMapDocument pMapDocument = new MapDocumentClass();pMapDocument.Open(open.FileName);//读取模板IPageLayout pPageLayout;pPageLayout = pMapDocument.PageLayout;axPageLayoutControl1.PageLayout = pPageLayout;axPageLayoutControl1.Refresh();}
//缺点:会覆盖掉原有的全部要素
鉴于和mxd文档操作有很高的重合性,利用IMapDocument应该也可以对mxt文档做另存、新建、保存等操作,下面是对mxd文档的操作,有兴趣的看官们可以参照着自己试试对mxt文件进行相关的操作
//实现地图文档操作OpenFileDialog open = new OpenFileDialog();SaveFileDialog save = new SaveFileDialog();open.Filter = "地图文档文件(*.mxd)|*.mxd";save.Filter = "地图文档文件(*.mxd)|*.mxd";string strDocFile = string.Empty;IMapDocument pMapDocument = new MapDocumentClass();//IMapDocument接口:对地图文档进行新建、打开、保存、另存操作switch (StrOperType){case "NewDoc":{//新建一个地图文档save.Title = "输入需要新建地图文档的名字";save.ShowDialog();strDocFile = save.FileName;if (strDocFile == string.Empty)return;pMapDocument.New(strDocFile);pMapDocument.Open(strDocFile, "");axMapControl1.Map = pMapDocument.get_Map(0);break;}case "OpenDoc":{open.Title = "选择需要加载的地图文档文件";open.ShowDialog();strDocFile = open.FileName;if (strDocFile == string.Empty)return;//将数据加载入pMapDocument并与map控件联系起来pMapDocument.Open(strDocFile, "");for (int i = 0; i < pMapDocument.MapCount; i++){axMapControl1.Map = pMapDocument.get_Map(i);}axMapControl1.Refresh();break;}case "SaveDoc":{//判断文档是否为只读文档if (pMapDocument.get_IsReadOnly(pMapDocument.DocumentFilename) ==
true){MessageBox.Show("此地图为只读文档!", "信息提示");return;}//用相对路径保存地图文档pMapDocument.Save(pMapDocument.UsesRelativePaths, true);MessageBox.Show("保存成功!", "信息提示");break;}case "SaveDocAs":{save.Title = "地图文档另存";save.ShowDialog();strDocFile = save.FileName;if (strDocFile == string.Empty)return;if (strDocFile == pMapDocument.DocumentFilename)//所选路径是否与地图原文件路径一致{//将修改后的地图文档保存在源文件中//用相对路径保存地图文档pMapDocument.Save(pMapDocument.UsesRelativePaths, true);MessageBox.Show("保存成功", "信息提示");return;}else{//将修改后的地图文档保存为新文档pMapDocument.SaveAs(strDocFile, true, true);MessageBox.Show("保存成功", "信息提示");} break;}default:break;}
方法2:
与方法1类似,咱们直接说不同点
1、加载方式不同(mxd也有这种加载方式)
2、图层、图例、比例尺等会重新显示出来
OpenFileDialog open = new OpenFileDialog();open.Filter = "制图模板(*.mxt)|*.mxt";open.Title = "制图模板";open.CheckFileExists = true;open.CheckPathExists = true;if (open.ShowDialog() == DialogResult.OK){string fileName=open.FileName;if (fileName == string.Empty)return;IElement element_Legend =
axPageLayoutControl1.FindElementByName("Legend");IElement element_Scalebar =
axPageLayoutControl1.FindElementByName("ScaleBar");IElement element_NorthArrow =
axPageLayoutControl1.FindElementByName("MarkerNorthArrow");List<ILayer> layerlist = new List<ILayer>();//保存图层for (int i = 0; i < axPageLayoutControl1.ActiveView.FocusMap.LayerCount;
i++){layerlist.Add(axPageLayoutControl1.ActiveView.FocusMap.get_Layer(i));}//更新模板axPageLayoutControl1.GraphicsContainer.DeleteAllElements();axPageLayoutControl1.LoadMxFile(fileName);//加载原来图层for (int i = 0; i < layerlist.Count; i++)axPageLayoutControl1.ActiveView.FocusMap.AddLayer(layerlist[i]);if (element_Legend != null)axPageLayoutControl1.GraphicsContainer.AddElement(element_Legend,0);if (element_NorthArrow != null)axPageLayoutControl1.GraphicsContainer.AddElement(element_NorthArrow,
0);if (element_Scalebar != null)axPageLayoutControl1.GraphicsContainer.AddElement(element_Scalebar,
0);axPageLayoutControl1.Refresh();}
重要的事
重要的事
重要的事
各位看官老爷们,我已经说三遍了,接下来看问题
我现在有个问题是:用C#+ArcEngine制图怎样实现如图效果,使得我移动小方块(红色标记的那些小方块)能改变元素的形状?有想法的请私信哦!!! 谢谢大家啦
C#+ArcEngine加载mxt地图模板文件相关推荐
- 优化加载百度地图中的各种省份的js文件
背景 项目中需要用到百度地图,这里还包括了所有省份的js文件,如果在最开始的位置就匆匆引入的话那会是这样: <script src="./js/province/anhui.js&qu ...
- wordpress home.php,WordPress主题通过function.php来加载js和css文件
WordPress主题开发的时候可以直接将需要的js或css写在head标签中,但是现在已经不主张这种加载方式了,现在WordPress主题通过function.php来加载js和css文件. 基本架 ...
- ios 高德地图加载瓦片地图_OpenLayers加载高德地图离线瓦片地图
谷歌地球离线瓦片下载使用"迈高图-地图数据下载器"(以下简称:迈高图),演示数据以湖南省长沙市7~16级瓦片数据为例. 下载演示数据 迈高图选择谷歌地球为当前地图源,地图图层选择为 ...
- echarts asp mysql 源码_如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)...
ECharts地图主要用于地理区域数据的可视化,展示不同区域的数据分布信息.ECharts官网提供了中国地图.世界地图等地图数据下载,通过js引入或异步加载json文件的形式调用地图. 本文将结合实例 ...
- Qt加载百度地图和谷歌地图
Qt中加载网页,需要用到这个QWebView这个类,就可以将网页加载出来. 首先,使用Qt时,现在Qt的*.pro文件中加上这一句QT += webkit 然后需要包含这个头文件 #includ ...
- vue openlayers 加载高德地图等 gcj02 的图层偏移问题
vue openlayers 加载高德地图等 gcj02 的图层偏移问题 这个问题是在使用 openlayers 地图引擎加载高德地图或者是谷歌地图都会遇到的问题,所以说呢这篇博文稍微说一下解决办法. ...
- Android加载百度地图
1.第一步:项目中添加lib文件夹,放入百度相关jar包,如下图 第二步:编写布局文件 <?xml version="1.0" encoding ...
- web端加载百度地图和天地图
1.加载百度地图 在页面中引入js文件 <html> <head> <script type="text/javascript" src=" ...
- 微信小程序加载百度地图
1:申请百度地图服务的ak,(个人感觉浏览器和小程序类型没区别,甚至浏览器比小程序更好) 2:配置地图服务,微信小程序开发平台,设置开发设置 3:小程序里添加地图服务的js文件bmap-wx.min. ...
最新文章
- boost::fusion::front_extended_deque用法的测试程序
- 数列分块入门 (1 ~ 7)
- 35 FI配置-财务会计-应收账款和应付账款-为客户定义备选统驭科目
- light_oj 1236 求最小公倍数( lcm(a,b) )等于n的数对 素因数分解
- 2015 ACM Syrian Collegiate Programming Contest
- java命令行参数args_Args4J (Java 命令行参数控制开源项目) 使用指南
- 网站未备案不能访问,怎么用ip加端口的方式建站?
- Spring IOC(依赖注入的三种方式)
- Vue3+ts+vite 国际化处理
- 黑苹果日记六(双系统引导)
- 抖音海外版tiktok404 amp; 简洁国际版apk
- 敏捷史话(一):用一半的时间做两倍的事——Scrum之父Jeff Sutherland的传奇人生
- android电视APP开机自启动,安卓电视、机顶盒如何开机自动启动看电视直播-今日头条...
- svn: E155019: Can't upgrade as it is not a pre-1.7 work解决办法
- 【python-opencv】灰度图和彩色图的互相转换
- 无法运行rc.exe(已解决)
- C语言数据结构一元多项式
- 计算机专业如何写毕业论文-八大技巧
- 跨越2009之华为总裁任正非
- php 拼音首字母大写字母,获取汉字拼音首字母大写
热门文章
- 闷棍暴打面试官 Spring源码系列: (一) Spring 如何解决循环依赖
- ETest—中国人自己的LabView
- keepalived脑裂!
- YottaChain芝麻云服务器打造的区块链存储公链
- win10开机进入桌面不停加载闪动,任务栏和桌面图标消失
- C++简明教程,看这一篇就够了!
- 遮挡剔除 2021-07-04
- 科技新品 | 佳能多款数码复合机;索泰科技显卡和迷你电脑新成员;莱维特立体声麦克风组...
- 神经肽He-LWamide II、198995-08-3、Lys-Pro-Pro-Gly-Leu-Trp-NH2
- java下载文件excel格式错乱,excel获取文件表格数据格式化-excel表格里的文件突然格式全部乱了,怎么恢复?...