1. 在VS2019上配置PIE.NET-SDK插件式环境(c#)

2023-05-16

1. 开发环境部署
  • 确保Win10系统
  • 安装Visual Studio2019
  • 安装PIESDK.Net_V6.3_Windows_X64.exe
2.创建工程

​ 1.选Windows窗口应用,不然后面找不到.Net framwork 4.0

在这里插入图片描述
在这里插入图片描述

  1. 选中项目设置属性

在这里插入图片描述

这个是PIESDK的安装路径下的Bin

image-20220724201556909

PIE软件启动路径

在这里插入图片描述

鼠标双击打开,选择图片,添加现有资源,选择图片位置。

在这里插入图片描述
在这里插入图片描述

​ 3.删除原来的测试文件,重新创建VectorCommand.cs。

image-20220724202311459

  1. 代码部分增加了详细的注释
//using System;
//using System.Collections.Generic;
//using System.Text;
using PIE.Controls;
using System.Windows.Forms;

namespace PIE.ControlsTest
{
    /// <summary>
    /// 矢量数据加载
    /// </summary>
    public class VectorCommand : BaseCommand // BaseCommand基础命令:数据加载、显示、放缩等功能,可参考文档中 Command类结构图
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public VectorCommand()
        {
            m_Image = ControlsTest.Properties.Resources.DataLoader_Vector; // 按钮背景图片
            this.Caption = "加载矢量数据"; // 按钮名称
            this.Name = "VectorCommand"; // 命令对象名称
            this.ToolTip = "加载矢量数据(shape)"; // 按钮提示内容
            this.Checked = false; // 初始化按钮是否为选中状态
            this.Enabled = false; // 设置初始化按钮的可用性
        }

        /// <summary>
        /// 创建插件对象 
        /// </summary>
        /// <param name="hook"></param>
        public override void OnCreate(object hook) // OnCreate是从BaseCommand继承的成员函数,这里重写该成员函数  
        {
            // object是C#类中的顶层基类,
            if (hook == null) return;// hook为空直接返回; 

            // IPmdContents接口是用来管理地图工程文档及制图模板的基础接口。
            if (!(hook is PIE.Carto.IPmdContents)) return;// hook是否为interface类型;is 运算符检查表达式的结果是否与给定的类型相匹配

            this.Enabled = true;// 设置按钮可用

            // 通过OnCreate方法传递hook对象,也就是MapControl对象,赋值给Command对象的m_Hook和m_HookHelper
            m_Hook = hook; 
            m_HookHelper.Hook = hook;
        }

        /// <summary>
        ///  单击方法
        /// </summary>
        public override void OnClick()
        {
            if (!this.Enabled) return;

            OpenFileDialog openFileDialog = new OpenFileDialog(); // 创建 OpenFileDialog 对象。
            openFileDialog.Title = "请选择打开的数据:"; // 设置文件对话框标题。
            openFileDialog.Filter = "Shape Files|*.shp;*.000";// 设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
            openFileDialog.Multiselect = true; // 是否允许选择多个文件。
            if (openFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; // 如果选择取消,退出程序

            PIE.Carto.IActiveView activeView = m_HookHelper.ActiveView;// IActiveView接口则定义了Map对象的数据显示功能
            PIE.Carto.IMap map = m_HookHelper.FocusMap;// IMap定义了Map对象的数据管理功能
            PIE.Carto.ILayer layer = null;// ILayer是所有图层类都实现了的一般接口,它定义了所有图层都实现的公共方法和属性

            string[] files = openFileDialog.FileNames;// 获得文件名称
            for (int i = 0; i < files.Length; i++)
            {
                layer = PIE.Carto.LayerFactory.CreateDefaultLayer(files[i]); // 创建默认图层,参数为目标图层路径
                map.AddLayer(layer);// 将图层放置到地图内
            }
            // PartialRefresh 部分刷新;刷新制图模块的所有类型
            activeView.PartialRefresh(PIE.Carto.ViewDrawPhaseType.ViewAll);
          
        }
    }
}

  1. 打开xml文件

image-20220724202603623

image-20220724202704366

添加以下内容:

 <Item valid="1" type="button" identity="PIE.ControlsTest.VectorCommand" library="PIE.ControlsTest.dll" caption="加载矢量数据(shp)" image="DataLoader_Vector.png" beginGroup="0" parameter="" tip=""/>

运行结果:
在这里插入图片描述
参考网址:
https://www.cnblogs.com/PIESat/p/10248815.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1. 在VS2019上配置PIE.NET-SDK插件式环境(c#) 的相关文章

  • Windows:列出并启动与扩展关联的应用程序

    如何确定与特定扩展名 例如 JPG 关联的应用程序 然后确定该应用程序的可执行文件所在的位置 以便可以通过调用 System Diagnostics Process Start 来启动它 我已经知道如何读取和写入注册表 注册表的布局使得以标
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • 哪些 .NET 编程语言有 CodeDom 提供程序?

    除了 C VB NET C 托管和 C CLI 和 F 之外 哪些 NET 编程语言有自己的 CodeDom 提供程序 我考虑过为 UnrealScript 制作一个 但我遇到了一些奇怪的问题 比如代码二进制运算符类型 http msdn
  • Android Studio 调试失败,错误:任务 ':app:preDexDebug'.Pl 执行失败

    当我运行我的项目时 它在标题中显示错误 解决办法是什么 apply plugin com android application android compileSdkVersion 24 buildToolsVersion 24 0 0 d
  • 在 C# 中实现动态代理的最佳方法是什么?

    我需要在 C 中创建动态代理 我希望这个类包装另一个类 并采用它的公共接口 转发对这些函数的调用 class MyRootClass public virtual void Foo Console Out WriteLine Foo int
  • 字符串与 StringBuilder

    我理解之间的区别String and StringBuilder StringBuilder是可变的 但是两者之间有很大的性能差异吗 我正在开发的程序有很多大小写驱动的字符串附加 500 正在使用StringBuilder更好的选择 是的
  • C# 模拟接口与模拟类

    我是 net 中的最小起订量框架的新手 根据我的在线研究 似乎有两种方法可以使用这个框架 要么模拟接口 要么模拟具体类 似乎在嘲笑具体类时 只有virtual方法可以被嘲笑 就我而言 我只想模拟实现接口的类的几个方法 例如 如果我们有以下内
  • 自定义 WCF DataContractSerializer

    是否可以用我自己的序列化程序替换 Windows Communication Foundation 中的 dataContractSerializer 如果可能的话 我怎样才能实现这一目标 是的 您可以提供自己的序列化器实现 默认情况下 W
  • 如果未返回,则在一段时间后终止线程

    我有一个线程从网络或串行端口获取一些数据 如果 5 秒内没有收到数据 则线程必须终止 或返回 false 换句话说 如果线程运行时间超过 5 秒 则必须停止 我用 C 编写 但任何 NET 语言都可以 有两种方法 1 封装超时 从网络或串行
  • 中继命令和无参数执行方法

    我目前正在学习 WPF 和 MVVM 我想我已经了解了大部分内容及其工作原理 但我在使用 RelayCommand 或 DelegateCommand 时遇到了一些我不明白的问题 我认为这与代表的工作方式有关 请注意 下面的代码目前仅处于测
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera
  • web.config 转换为

    我有针对多个环境的 web config 转换 在配置文件中 我有一个 applicationSettings 部分 其中包含多个设置和值对 我尝试过根据用于匹配名称的语法并更改连接字符串以匹配设置并更改值 但转换失败 这是可能吗 所以我的
  • Sencha Touch 和远程服务器上的身份验证

    我希望收到您关于使用 PhoneGap 和 Sencha Touch 的应用程序以及带有 Active Directory 的 NET 服务器的身份验证机制的反馈 因此 我们需要在移动设备上存储用户凭据 以便用户每次希望使用该应用程序时都不
  • 查询 dns 别名

    我找到了一些code http msdn microsoft com en us library system net dns gethostbyaddress VS 71 aspx来自 msdn 站点 下面包含代码 看起来它将返回给定服务
  • EF数据库首先如何针对数据库更改更新模型?

    在班级图书馆Ado net Entity Data Model已生成 POCO 类 这些是第一次生成的 但数据库更改并未得到反映 在edmx图表右键单击并选择Update Model from Database显示新创建的表 但即使选择添加
  • 在服务器桌面会话上捕获屏幕

    我开发了一个 GUI 测试框架 可以按计划对我们公司网站进行集成测试 当出现问题时 它会截取桌面等内容 它在专用 Windows Server 2008 上的登录用户上运行 无人值守 问题是在我已断开远程桌面会话连接的桌面上截取屏幕截图 我
  • 为什么该字符串的长度比其中的字符数长?

    这段代码 string a abc string b A C Console WriteLine Length a 0 a Length Console WriteLine Length b 0 b Length outputs Lengt
  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • 为什么文件更新时“如果较新则复制”不复制文件?

    我在 Visual Studio Express 中有一个解决方案 如下所示 The LogicSchemaC 中的类 将在运行时解析指定的 XML 文件 以下是在main的方法Program cs LogicSchema ls new L

随机推荐

  • Ubuntu 16.04安装docker详细步骤与Ubuntu16.04 执行sudo apt-get update出现E: Sub-process returned an error code错误

    转载https blog csdn net jinking01 article details 82490688和https blog csdn net devil 08 article details 78431491 因需要安装open
  • 2.3 SVC中断

    SVC中断 SVC中断服务函数 通过SVC指令触发SVC中断 define vPortSVCHandler SVC Handler asm void vPortSVCHandler void PRESERVE8 ldr r3 61 pxCu
  • 解决virtualBox ubuntu桥接,nat不能上网问题

    开始配置网络的无论是桥接 xff0c nat模式都不能连接外网 xff0c 尝试了N方法无果 xff0c 最后猜想是不是网卡的设置有问题 结果果然是这里的问题 解决方案 xff1a 打开网络和共享中心 lt lt 更改适配器设置 lt lt
  • ProxmoxVE折腾记录(二)--版本升级

    PVE6 0升级 官方F amp Q https pve proxmox com wiki FAQ faq support table 升级说明 F amp Q10条 11条系统版本说明及升级参考 xff0c 这次准备升级到6 0 5 4的
  • casbin学习笔记

    安装 go get github com casbin casbin v2 span class token keyword import span span class token string 34 github com casbin
  • Linux用户和组管理

    Linux用户和组管理 一 实验目的 1 掌握添加用户 修改用户和删除用户信息的方法 2 掌握添加组 修改组户和删除组的方法 3 掌握修改用户权限的方法 二 实验内容 在字符界面下 xff0c 使用常用的Linux操作命令 xff0c 完成
  • 【Docker环境部署】kong网关搭建,konga安装(参考官网)

    一 下载镜像 docker pull postgres 9 6 docker pull kong docker pull pantsel konga 二 docker安装kong 1 创建网桥 docker network create k
  • 【VBA编程】VBA基础语法(二)

    一 VBA中的内置函数 合理使用函数不但可以节省处理数据的时间 xff0c 提高工作效率还可以降低编程的难度 xff0c 减少编写代码的工作量 例如想知道当前系统时间 xff1a Sub NowTime MsgBox 34 现在的时间是 x
  • 【VBA编程】Sub过程

    过程就是做一件事的经过 xff0c 由不同的操作按先后顺序排列 组合起来 VBA的基本过程有Function过程和Sub过程 过程保存在模块里 Excel对象 xff08 或窗体对象 xff09 也能保存过程 为了避免发生错误 xff0c
  • 【VBA编程】自定义函数,Function过程

    Function过程也称为函数过程 编写一个Function过程 xff0c 就是编写了一个函数 函数可以完成很多复杂的计算 xff0c 如想求A列的和 xff0c 可以使用SUM函数 xff1b Function过程同Sub过程一样 xf
  • 查看网站的技术架构

    想要快速查看网站使用的架构 xff0c 可以在浏览器中添加Wappalyzer插件 以火狐浏览器为例 火狐浏览器 更多工具 61 gt 面向开发者扩展 61 gt 查找Wappalyzer 61 添加 xff0c 即可 红框中即 Wappa
  • Linux服务器查看日志的几种方法

    1 进入日志文件所在的文件目录 xff0c 比如 xff1a cd opt tomcat7 logs 2 通过命令打开日志 xff0c 分析需求场景打开需要的日志 比如 xff1a tail f catalina out 3 常用命令一 x
  • Postman设置网络代理

    1 什么是网络代理 xff1f 在一个基本的网络会话中 xff0c 一个客户端发送一个请求到服务器 xff0c 服务器返回一个响应 xff1b 一个代理服务是一个应用程序或者系统 作为一个中介在你的电脑和互联网之间 客户端和服务器 xff0
  • Postman中的authorization

    1 概述 Authorization是验证是否拥有从服务器访问所需数据的权限 当发送请求时 xff0c 通常必须包含参数 xff0c 以确保请求具有访问和返回所需数据的权限 Postman提供了授权类型 xff0c 可以轻松地在Postma
  • 无法将非静态数据成员声明为 inline

    示例代码 xff1a span class token macro property span class token directive hash span span class token directive keyword inclu
  • C++中类的成员函数(方法)

    文章目录 成员函数 xff08 方法 xff09 示例1 xff1a 在结构体中引入成员函数示例2 xff1a 类示例3 xff1a 类内定义成员函数示例4 xff1a 类内声明 43 类外定义显示内敛的成员函数示例5 xff1a 类内声明
  • visual studio 2019 安装卸载问题

    1 visual studio 2019 安装 问题1 xff1a 如何安装visual studio 2019 企业版 可参考 xff1a http www winwin7 com soft 9019 html xiazai 问题2 xf
  • GDAL图像重采样

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • C#入门基础教程

    文章目录 C 基础入门基本用法 xff08 理解面向对象编程 xff09 示例1 xff1a 创建线类 关键字数据类型数值类型布尔与文本类型引用类型指针类型示例2 xff1a 数值类型示例3 xff1a 文本类型示例4 xff1a Obje
  • 1. 在VS2019上配置PIE.NET-SDK插件式环境(c#)

    1 开发环境部署 确保Win10系统安装Visual Studio2019安装PIESDK Net V6 3 Windows X64 exe 2 创建工程 1 选Windows窗口应用 xff0c 不然后面找不到 Net framwork