热门标签 | 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开发

推荐阅读
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • andr ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何利用动态规划算法解决经典的0-1背包问题。通过具体实例和代码实现,详细解释了在给定容量的背包中选择若干物品以最大化总价值的过程。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文介绍了如何在C#中启动一个应用程序,并通过枚举窗口来获取其主窗口句柄。当使用Process类启动程序时,我们通常只能获得进程的句柄,而主窗口句柄可能为0。因此,我们需要使用API函数和回调机制来准确获取主窗口句柄。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
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社区 版权所有