浅谈SuperMap iDesktopX桌面扩展开发

2024-02-25 08:58

本文主要是介绍浅谈SuperMap iDesktopX桌面扩展开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:dongyx

SuperMap iDesktopX是业界首款跨平台全功能桌面 GIS 软件,支持主流Linux操作系统,突破了专业桌面 GIS 软件只能运行于 Windows 环境的困境。提供空间数据生产及加工、空间大数据管理分析、可视化建模、服务发布等功能,可用于数据生产、加工、处理、分析以及制图。现在很多客户使用的场景不同,所以很多客户想利用扩展开发定制开发出属于自己应用场景的桌面软件。接下来我就谈一下如何对SuperMap iDesktopX 10.1.0版本进行定制开发。
SuperMap iDesktopX 是通过SuperMap iObjects Java 组件构建的一款企业级、插件式、跨平台桌面GIS应用与开发平台,可通过Java语言进行扩展开发。我们的产品目录也给大家提供了扩展工程模板,模板位于安装目录/templates/sampleCode文件夹,是扩展开发示例模板工程。
一、修改iDesktopX桌面软件标题
1.文件–选项–环境中修改iDesktopX标题
在这里插入图片描述
2.通过修改配置文件的方式修改iDesktopX标题,修改安装目录/configuration/SuperMap.Desktop.Parameter.xml文件
在这里插入图片描述
二、开发环境配置
1.开发工程配置
1.1 在IDEA开发平台中打开模板工程。模板位于安装目录/templates/sampleCode文件夹
1.2 配置jdk环境:设置工程的jdk环境为1.8
1.3 添加桌面依赖,点击File–project Structure, 在弹出框中依次选中 Global Libraries->添加->JAVA,在弹出的 Select Library Files 对话框中,同时选中以下 4 个目录,单击 OK 按钮后,
选择 develop,即可将桌面依赖添加至二次开发插件。

  1. %iDesktopX 产品包%/bin/
  2. %iDesktopX 产品包%/bundles/idesktop_bundles/
  3. %iDesktopX 产品包%/bundles/require_bundles/
  4. %iDesktopX 产品包%/lib/
    1.4 工程编译成功运行程序可以自动启动SuperMap iDesktopX,启动后可以“开始”选项卡中会增加二次开发分组,包含了二传开发示例、删除重复点两个功能,这样就表示环境配置成功
    2.工程模板介绍
    示例模板工程即 SampleCode 工程,其中 Develop module 就是我们的开发 module
    2.1 SampleCode Module
    SampleCode Module 主要通过此 module 的 pom 文件管理远程仓库地址及所有子
    module(自定义插件),不实现任何具体功能。详情参见 SampleCode 的 pom.xml 文件。注意:jar 生成路径不可修改。
    2.2 Develop module
    Develop module 是扩展开发示例 module,内部主要的类有三个,分别为 MyStartUp、
    DevelopPlugin、CtrlActionSampleCode。
    2.2.1MyStartUp
    MyStartUp 是二次开发启动的入口。
    2.2.2DevelopPlugin
    DevelopPlugin 是插件类必须实现,其命名规则为 module name+“Plugin”,必须继承
    实现 AbstractPlugin 类,否则 Develop module 所有功能都无法使用,具体实现方式参见
    DevelopPlugin 类。
    2.2.3CtrlActionSampleCode
    CtrlActionSampleCode 是示例开发类。CtrlActionSampleCode 类中包含了用于响应控
    件事件触发时所要执行的内容,即与 UI 控件绑定的类,该类必须继承自 CtrlAction 类。具
    体实现方式参见 CtrlActionSampleCode 类。
    2.2.4配置 CtrlAction
    实现功能之后,就需要在相应配置文件中进行配置,跟 UI 绑定。即将功能对应的
    CtrlAction 类名称写到 module 对应配置文件中相应控件的 onAction 属性中。
    注意:一个 module 对应一个配置文件,配置文件必须存在且正确配置,否则无法加载对
    应 module。配置文件位于%模块目录%\src\main\resources\文件夹下。(自定义启动
    module 不需要配置文件,只有界面功能需要配置文件)
    示例配置文件参见 SuperMap.Desktop.Develop.config
    在这里插入图片描述
    三、以缓冲区分析为例
    1.在Develop module中创建一个buffer的包名和一个buffer类。buffer类必须继承CtrlAction类。在run函数写缓冲区分析的业务代码
//获取当前打开的工作空间
Workspace workspace = Application.getActiveApplication().getWorkspace();
Dataset dataset = workspace.getDatasources().get(0).getDatasets().get("New_Line");
//新建一个地图窗口
IFormMap formMap = (FormMap) FormUtilities.fireNewWindowEvent(WindowType.MAP,"dyx");
MapControl mapControl = formMap.getMapControl();
mapControl.getMap().getLayers().add(dataset,true);
DatasetVectorInfo datasetVectorInfo = new DatasetVectorInfo();
datasetVectorInfo.setEncodeType(EncodeType.NONE);
datasetVectorInfo.setType(DatasetType.REGION);
datasetVectorInfo.setName("buffer");
DatasetVector result = workspace.getDatasources().get(0).getDatasets().create(datasetVectorInfo);
BufferAnalystParameter bufferParameter = new BufferAnalystParameter();
bufferParameter.setEndType(BufferEndType.FLAT);
bufferParameter.setLeftDistance(100);
bufferParameter.setRightDistance(100);
DatasetVector datasetVector = (DatasetVector)dataset;
//调用创建矢量数据集缓冲区方法
BufferAnalyst.createBuffer(datasetVector,result,bufferParameter,false,true);
mapControl.getMap().getLayers().add(result,false);
mapControl.getMap().refresh();

2.配置CtrlAction
在这里插入图片描述
3.在IDEA开发平台中运行该工程,启动SuperMap iDesktopX桌面,运行结果如下:
在这里插入图片描述

这篇关于浅谈SuperMap iDesktopX桌面扩展开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745000

相关文章

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF