热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在AE中高效添加地图指北针以提升地理信息准确性

在AdobeAfterEffects中,通过高效添加地图指北针,可以显著提升地理信息的准确性和视觉效果。本文介绍了一种方法,利用代码函数`publicstaticvoidExportMapEx(stringfilepath,intresolution,AxMapControlcurMapControl)`,实现地图导出时自动添加指北针,确保地理数据的精确性和一致性。此外,还详细探讨了如何优化指北针的位置和样式,以增强地图的可读性和专业性。

  public static void ExportMapEx(string filepath, int resolution, AxMapControl curMapControl)
        {
            try
            {
                // 从Style文件中获取指定的指北针
                string stylefilePath Application.StartupPath @"\style\testArrow.ServerStyle";
                INorthArrow pNorthArrow GetSymbol(stylefilePath, "North Arrows", "ESRI North 2") as INorthArrow;
                if (pNorthArrow == null) return;
                // 设置指北针的位置及大小
                ESRI.ArcGIS.Geometry.IEnvelope envelope3 new ESRI.ArcGIS.Geometry.EnvelopeClass();
                envelope3.PutCoords(2, 2, 5, 5);

                // 设置当前活动视图,m_MapDocument为当前打开的地图文档
                IActiveView pCurActiveView MyGIS.Forms.MainForm.m_MapDocument.PageLayout as IActiveView;
                MyGIS.Forms.MainForm.m_MapDocument.SetActiveView(pCurActiveView);
                IGraphicsContainer pGraphicContainer (IGraphicsContainer)MyGIS.Forms.MainForm.m_MapDocument.PageLayout;

                IMapFrame mapFrame pGraphicContainer.FindFrame(pCurActiveView.FocusMap) as IMapFrame ;
                IMapSurroundFrame mapSurroundFrame new MapSurroundFrameClass();
                mapSurroundFrame.MapFrame mapFrame;
                mapSurroundFrame.MapSurround pNorthArrow as IMapSurround;
                IElement element (IElement)mapSurroundFrame;
                element.Geometry envelope3;

                // 添加元素
                element.Activate(pCurActiveView.ScreenDisplay);
                pGraphicContainer.AddElement(element, 0);
                //pCurActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, mapSurroundFrame, null);

                // 这里分辨率分两种情况:96dpi和300dpi
                string extension System.IO.Path.GetExtension(filepath);
                IExport pExporter null;
                if (extension == ".bmp")
                {
                    pExporter new ExportBMPClass();
                }
                else if (extension == ".jpg")
                {
                    pExporter new ExportJPEGClass();
                }
                else if (extension == ".png")
                {
                    pExporter new ExportPNGClass();
                }
                else if (extension == ".gif")
                {
                    pExporter new ExportGIFClass();
                }
                else if (extension == ".pdf")
                {
                    pExporter new ExportPDFClass();
                }
                else if (extension == ".tif")
                {
                    pExporter new ExportTIFFClass();
                }

                pExporter.ExportFileName filepath;
                tagRECT deviceRECT default(tagRECT);
                if (resolution 96)
                {
                    return;
                }
                // 区分设置分辨率
                if (resolution == 96)
                {
                    pExporter.Resolution resolution;
                    deviceRECT pCurActiveView.ExportFrame;
                    IEnvelope pDriverBounds new EnvelopeClass();
                    pDriverBounds.PutCoords(deviceRECT.left, deviceRECT.bottom, deviceRECT.right, deviceRECT.top);
                    pExporter.PixelBounds pDriverBounds;
                }
                else
                {
                    System.Int32 screenResolution 96;
                    pExporter.Resolution resolution;
                    deviceRECT.left 0;
                    deviceRECT.top 0;
                    deviceRECT.right (int)(pCurActiveView.ExportFrame.right (resolution screenResolution));
                    deviceRECT.bottom (int)(pCurActiveView.ExportFrame.bottom (resolution screenResolution));

                    ESRI.ArcGIS.Geometry.IEnvelope envelope new ESRI.ArcGIS.Geometry.EnvelopeClass();
                    envelope.PutCoords(deviceRECT.left, deviceRECT.top, deviceRECT.right, deviceRECT.bottom);
                    pExporter.PixelBounds envelope;
                }

                //ITrackCancel pCancel new CancelTrackerClass();
                //curMapControl.ActiveView.Output(pExporter.StartExporting(), Convert.ToInt32(lScreenResolution), ref deviceRECT, curMapControl.ActiveView.Extent, pCancel);
                pCurActiveView.Output(pExporter.StartExporting(), Convert.ToInt32(resolution), ref deviceRECT, null, null);
                pExporter.FinishExporting();
                pExporter.Cleanup();
                MessageBox.Show("导出图像成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("导出异常: \n" ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
        }

 

#ae开发

推荐阅读
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • CentOS 6.5 上安装 MySQL 5.7.23 的详细步骤
    本文详细介绍如何在 CentOS 6.5 系统上成功安装 MySQL 5.7.23,包括卸载旧版本、下载安装包、配置文件修改及启动服务等关键步骤。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • 使用Nginx反向代理实现多域名端口映射
    本文介绍如何通过配置本地hosts文件和Nginx反向代理,实现多个虚拟域名的端口映射,使用户可以通过标准HTTP端口80访问不同后端服务。 ... [详细]
  • 历经三十年的开发,Mathematica 已成为技术计算领域的标杆,为全球的技术创新者、教育工作者、学生及其他用户提供了一个领先的计算平台。最新版本 Mathematica 12.3.1 增加了多项核心语言、数学计算、可视化和图形处理的新功能。 ... [详细]
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
author-avatar
白堤柳帘佳_688
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有