ArcGIS Pro 一些效果的实现

 

目录

1、隐藏目录停靠窗格

2、工程打开事件

3、图层打开事件

4、取消ArcGIS Pro打开

5、控制其它tab页面的显示

6、 禁止地图窗格和内容、目录停靠窗体跨进程拖拽图层

7、隐藏所以的Pro的tab页

8、如何隐藏授权提示

9、消息提示

10、统一处理未处理的异常

11、自定义控件不出现在加载项Tab页


1、隐藏目录停靠窗格

这个貌似通过配置没法解决,试了很多办法,最后发现在 ArcGIS.Desktop.Core.Events.ActivePaneInitializedEvent事件中写代码可以在界面完全展示前可以隐藏目录停靠窗。调用的地方写在ConfigurationManager类的方法中。

 ArcGIS.Desktop.Core.Events.ActivePaneInitializedEvent.Subscribe((args)=> 
            {
                var dockPane = FrameworkApplication.DockPaneManager.Find("esri_core_projectDockPane");
                dockPane.Hide();
            });
目录停靠窗格
​​​​

 

2、工程打开事件

ArcGIS.Desktop.Mapping.Events.LayersAddedEvent.Subscribe((args) =>
            {
                ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show($"加载了{args.Layers.Count()}个图层。");
            });

           

 

3、图层打开事件

 Action<ProjectEventArgs> OnProjectOpened = (arg) =>
            {
                ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show($"加载了【{arg.Project.URI}】工程。"); 
            };
            ProjectOpenedEvent.Subscribe(OnProjectOpened); //subscribe to Project opened event

4、取消ArcGIS Pro打开

  protected override void OnApplicationInitializing(CancelEventArgs cancelEventArgs)
        {
             此处插入自定义登录窗体的逻辑
            frmLogin frmLogin = new frmLogin();
            if (!(frmLogin.ShowDialog() ?? false))
            {
                cancelEventArgs.Cancel = true;
            }
        }

5、控制其它tab页面的显示

Button的Onclick事件

internal class Button_StartEdit : Button
    {
        private bool _isEditing;

        protected override void OnClick()
        {
            if (!_isEditing)
                FrameworkApplication.State.Activate("acme_edit");
            else
                FrameworkApplication.State.Deactivate("acme_edit");

            _isEditing = !_isEditing;
            DialogHelper dlgHelper = new DialogHelper();
            dlgHelper.ShowInformation("", string.Format("{0}编辑成功!", _isEditing ? "开启" : "停止"));
        }

        protected override void OnUpdate()
        {
            if (!_isEditing)
                Caption = "开启编辑";
            else
                Caption = "停止编辑";

        }
    }

DAML配置

 <conditions>
    <insertCondition id="acme_editing" caption="editing">
      <state id="acme_edit" />
  </conditions>

=======================我是分割线=========================

 <tab id="tab2" caption="编辑(自定义)" condition="acme_editing" keytip="Z2">
          <!--<group refID="esri_core_clipboardGroup"/>-->
          <group refID="esri_editing_Manage" />
          <group refID="esri_editing_Snapping" />
          <group refID="esri_editing_Features" />
          <group refID="esri_editing_selectionGroup" />
          <group refID="ConstructionTool_Group1" />
          <group refID="Construction_Tool" />
          <!--<group refID="esri_editing_EditGallery"/>-->
          <!--<group refID="esri_editing_elevationGroup"/>-->
        </tab>

6、 禁止地图窗格和内容、目录停靠窗体跨进程拖拽图层

ArcGIS Pro 默认是可以跨进程拖拽图层到其它Pro应用程序的,通过isDropTarget属性控制拖拽。

 var dockCatagory = database.Root.Descendants(nsp + "dockPane").First(ele => ele.Attribute("id").Value.Equals("esri_core_projectDockPane"));
 dockCatagory.Add(new XAttribute("isDropTarget", "false"));
 
   禁止地图和内容窗体拖拽内容
  dockCatagory = database.Root.Descendants(nsp + "dockPane").First(ele => ele.Attribute("id").Value.Equals("esri_core_contentsDockPane"));
  dockCatagory.Add(new XAttribute("isDropTarget", "false"));

  dockCatagory = database.Root.Descendants(nsp + "pane").First(ele => ele.Attribute("id").Value.Equals("esri_mapping_mapPane"));
  dockCatagory.Add(new XAttribute("isDropTarget", "false"));
   如果节点有此属性通过修改属性的方式
  //dockCatagory.Attribute("isDropTarget").Value = "false";

7、隐藏所以的Pro的tab页

                    var nsp = database.Root.Name.Namespace;
                    var tabElements = from seg in database.Root.Descendants(nsp + "tab") select seg;
                    var elements = new HashSet<XElement>();
                    foreach (var tabElement in tabElements)
                    {
                        if (tabElement.Parent == null
                            || tabElement.Parent.Name.LocalName.StartsWith("backstage"))
                            continue;
                        var id = tabElement.Attribute("id");
                        if (id == null) continue;

                        if (id.Value.StartsWith("esri"))
                            elements.Add(tabElement);
                    }

                    foreach (var element in elements)
                    {
                        element.Remove();
                    }

8、如何隐藏授权提示

在Pro2.2中提供了隐藏功能,之前的版本不支持。

授权到期提示

9、消息提示

                if (!_IsAdd)
                {
                    ArcGIS.Desktop.Framework.FrameworkApplication.RemoveNotification(notification);
                }
                else
                {
                    notification.Title = "提示";
                    notification.Message = "xxxxxxxxxx";
                    notification.ImageUrl = @"pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/AddInDesktop16.png";

                    ArcGIS.Desktop.Framework.FrameworkApplication.AddNotification(notification);
                }

                _IsAdd = !_IsAdd;

10、统一处理未处理的异常

 Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;

11、自定义控件不出现在加载项Tab页

appearsOnAddInTab属性控制是否显示在加载项tab页面。

         <group id="TDProAppModule_Group1" caption="编辑" appearsOnAddInTab="false" keytip="Z2">
          <!-- host controls within groups -->
          <button refID="Button_StartEdit" size="large" />
          <button refID="TestDemo_ProAppModule_Controls_Dockpane_Catalog_ShowButton" size="large" />
        </group>

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ArcGIS Pro是一款专业的GIS软件,它具有强大的工作流功能,可以帮助用户高效地完成GIS分析和制图任务。 ArcGIS Pro的工作流程可以分为以下几个步骤: 1. 数据管理:用户可以通过ArcGIS Pro中的数据管理工具对地理数据进行管理和编辑,包括导入、创建、编辑和导出数据。这些工具可以帮助用户创建和维护地理数据集、图层和要素类。 2. 空间分析:ArcGIS Pro提供了丰富的空间分析工具,例如缓冲区分析、叠加分析、网络分析等,可以帮助用户快速有效地分析和处理空间数据。 3. 制图:用户可以使用ArcGIS Pro中的多种制图工具,包括符号化、标注、图层控制等,创建美观的地图。用户还可以通过设置布局和添加图例、比例尺等元素,制作出具有专业水平的地图产品。 4. 分析输出:用户可以通过ArcGIS Pro中的输出工具,将分析结果和制图产品输出为不同格式的文件,例如PDF、图像、Web地图等。 总之,ArcGIS Pro的工作流程非常灵活和可定制,可以根据用户的具体需求和工作流程进行调整和优化。 ### 回答2: ArcGIS Pro是一款功能强大的地理信息系统软件,提供了丰富的工作流程来处理和分析地理数据。它具有以下几个主要的工作流程: 1. 数据管理:在ArcGIS Pro中,可以通过导入、创建或连接数据源来管理地理数据。用户可以通过添加数据到地图、数据库或文件夹来组织和分类地理数据。数据管理的过程中,可以进行数据清理、数据编辑和数据更新等操作。 2. 数据分析:ArcGIS Pro提供了多种数据分析工具和功能,用于对地理数据进行空间分析、统计分析和模型构建等。用户可以使用空间分析工具来探索地理特征之间的关系和模式,比如缓冲区分析、路径分析和热点分析等。统计分析功能可以用于数据的描述和预测分析,例如回归分析和聚类分析。此外,还可以通过模型构建工具创建自定义的地理处理模型。 3. 地图制作:ArcGIS Pro具有强大的地图制作功能,用户可以使用多种样式和符号来设计和制作地图。可以添加各种地图元素,如标题、标注和图例等,来呈现地理信息。此外,还可以进行地图排版和出版,生成高质量的地图产品。 4. 3D可视化:ArcGIS Pro支持三维地理数据的可视化和分析。可以使用三维场景和飞行模式来探索地理数据的空间分布和变化。还可以进行三维分析,如高程分析和剖面分析,以及三维模拟和视觉效果的制作。 5. 协作与共享:ArcGIS Pro提供了多种协作和共享功能。用户可以使用ArcGIS Online等平台来发布和共享地理数据、地图和应用程序。可以与其他用户进行协作,共同编辑和分析地理数据。此外,还可以导出地图、报告和动画等产品,与他人共享和传播。 综上所述,ArcGIS Pro的工作流程包括数据管理、数据分析、地图制作、3D可视化以及协作与共享。通过这些工作流程,用户可以更好地处理和分析地理数据,生成高质量的地图产品,并与他人共享和协作。 ### 回答3: ArcGIS Pro是一种强大的地理信息系统软件,用于创建、管理、分析和可视化空间数据。它具有审美用户界面和许多功能,使用户能够创建和完成复杂的工作流程。 ArcGIS Pro的工作流程通常包括以下几个步骤: 1. 数据收集和导入:首先,用户需要收集相关的空间数据,例如地图、影像、矢量数据等。然后,这些数据可以通过不同的方式导入到ArcGIS Pro中,例如从本地文件导入、连接到数据库或者从在线数据源下载。 2. 数据预处理和清洗:一旦数据导入到ArcGIS Pro中,用户可以对数据进行预处理和清洗。这包括数据投影转换、数据筛选、数据融合等操作,以确保数据的准确性和一致性。 3. 空间分析和建模:ArcGIS Pro具有强大的空间分析和建模功能,能够帮助用户解决各种空间问题。用户可以使用工具箱中的各种分析工具来执行地理处理操作、空间查询、网络分析等,并生成可视化的分析结果。 4. 地图制作和可视化:ArcGIS Pro提供了丰富的地图制作和可视化功能,用户可以根据需要创建地图布局、添加地图元素、设计符号和标签等。还可以使用动画工具创建动态的地图演示和场景。 5. 数据共享和发布:一旦工作流程完成,用户可以将结果共享给其他人。ArcGIS Pro支持将地图和数据导出为不同的格式,如PDF、JPEG、KML等。同时,用户还可以使用ArcGIS Online等在线平台发布地图和应用程序,以实现更广泛的数据传播和共享。 总而言之,ArcGIS Pro的工作流程涵盖了数据收集、数据预处理、空间分析、地图制作和数据发布等多个方面。通过这些步骤,用户可以完成各种与空间数据相关的任务,并生成高质量的空间分析结果和地图产品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值