ArcGIS二次开发基础教程(03):保存文档和导出地图

ArcGIS二次开发基础教程(03):保存文档和导出地图ArcGIS二次开发基础教程(03):保存文档和导出地图保存文档保存://这里的path为全局变量在打开文件获添加数据时赋值原路径//判断打开文件是否为mxd文件是则保存不是则另存为if(System.IO.File.Exists(path.Remove(path.IndexOf(‘.’))+”.mxd”)){//对于已打开的mxd文档保存在原路径//…

大家好,又见面了,我是你们的朋友全栈君。

ArcGIS二次开发基础教程(03):保存文档和导出地图

保存文档

  1. 保存:
//这里的path为全局变量 在打开文件获添加数据时赋值原路径
//判断打开文件是否为mxd文件 是则保存 不是则另存为
if(System.IO.File.Exists(path.Remove(path.IndexOf('.')) + ".mxd"))
{
    //对于已打开的mxd文档保存在原路径
    //获取mapcontrol中的地图数据
	IMXDContexts context = axMapControl.Map as IMXDContexts;
	IMapDocument mapDocumnet = new MapDocumnetClass();
	mapDocument.Open(path);
	mapDocument.ReplaceContexts(context);
	mapDocument.Save();
}
else
{
    SaveAs();
}
  1. 另存为
void SaveAs()
{
    //没有mxd文档的新建一个
	saveFileDialog.Title = "保存文件";
	saveFileDialog.Filter = "ArcMap Document(*.mxd)|*.mxd";
	if(saveFileDialog.ShowDialog()==DialogResult.OK)
	{
		IMXDContexts context = axMapControl.Map as IMXDContexts;
		IMapDocument mapDocumnet = new MapDocumnetClass();
		mapDocument.New(path);
		mapDocument.ReplaceContexts(context);
		mapDocument.Save();
	}
}

导出地图

//将mapcontrol的显示范围导出为图片
saveFileDialog.Title = "导出图片";
//还有其他图片格式同理
saveFileDialog.Filter = "JPEG(*.jpg)|*.jpg|PNG(*.png)|*.png|PDF(*.pdf)|*.pdf|BMP(*.bmp)|*.bmp|TIFF(*.tif)|*.tif";
if(saveFileDialog.ShowDialog()==DialogResult.OK)
{
    IExport export = new ExportAllClass();
    string path = saveFileDialog.FileName;
    string extension = System.IO.Path.GetExtenion(path).Replace(".","").ToLower();
    switch(extension)
    {
        case "jpg":
            export = new ExportJPEGClass();
            break;
        case "png":
            export = new ExportPNGClass();
            break;
        case "pdf":
            export = new ExportPDFClass();
            break;
        case "bmp":
            export = new ExportBMPClass();
            break;
        case "tif":
            export = new ExportTIFFClass();
            break;
        default:
            MessageBox.Show("Error");
            return;
    }
    if(ExportImage(export,axMapConrol1.ActiveView,fileName))
    {
        MessageBox.Show("Succeed");
    }
    else
    {
        MessageBox.Show("Error");
    }
}
//这里是参考的帮助文档
bool ExportImage(IExport export,IActiveView activeView,string fileName)
{
  export.ExportFileName = fileName;

  // Microsoft Windows default DPI resolution
  export.Resolution = 96;
  // mapcontrol的显示范围
  tagRECT exportRECT = activeView.ExportFrame;
  IEnvelope envelope = new EnvelopeClass();
  envelope.PutCoords(exportRECT.left, exportRECT.top, exportRECT.right, exportRECT.bottom);
  export.PixelBounds = envelope;
  Int32 hDC = export.StartExporting();
  activeView.Output(hDC, (Int16)export.Resolution, ref exportRECT, null, null);

  // Finish writing the export file and cleanup any intermediate files
  export.FinishExporting();
  export.Cleanup();

  return true;
}

历届GIS应用技能大赛开发题答案点这里,尚在不定期更新中

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163431.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 玩客云 青龙面板_青龙京东签到

    玩客云 青龙面板_青龙京东签到玩客云安装青龙面板实现京东签到薅羊毛

    2022年9月18日
    0
  • visio 2003密钥

    visio 2003密钥序列号:GWH28-DGCMP-P6RC4-6J4MT-3HFDY序列号:WFDWY-XQXJF-RHRYG-BG7RQ-BBDHM

    2022年6月24日
    58
  • goland2021.7.20激活码_在线激活

    (goland2021.7.20激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月21日
    40
  • 当和尚遇到钻石「建议收藏」

    当和尚遇到钻石「建议收藏」 序推荐序    麦克尔·罗奇先生,我不认识他,但是看了他写的《当和尚遇到钻石》这本书以后,令我对他产生了由衷的敬佩之意。他身在商业界,实修清净行,特别是他具有高人一等的智能,将《金刚经》融会贯通,运用万法潜能,发挥在商场的经营上……      罗奇先生的道心坚定,虽然事业经营成功,但内心从来没有忘记自己是一位修道者,他尊师重道,对师父的指示从不敢疏忽或违背,在穿着上保持着端

    2022年8月21日
    2
  • java 中级面试题_java中级面试题[通俗易懂]

    java 中级面试题_java中级面试题[通俗易懂]本帖最后由唯我独赞mo于2015-11-1222:47编辑1、java中wait和sleep有什么区别?多线程条件下如何保证数据安全?答:最大区别是等待时wait会释放锁,而sleep会一直持有锁,wait通常用于线程时交互,sleep通常被用于暂停执行。2、java中volatile和synchronized有什么区别?1.volatile本质是在告诉jvm当前变量在寄存器(工作内存…

    2022年10月12日
    1
  • java treeset subset_Java TreeSet subSet()方法

    java treeset subset_Java TreeSet subSet()方法JavaTreeSetsubSet()方法java.util.TreeSet.subSet(EfromElement,EtoElement)方法用于返回位于给定范围(包括fromElement和不包括toElement)之间的一组元素。1语法publicSortedSetsubSet(EfromElement,EtoElement)2参数fromElement:这是返回集的最…

    2025年6月16日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号