浅谈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

相关文章

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

一文教你如何解决Python开发总是import出错的问题

《一文教你如何解决Python开发总是import出错的问题》经常朋友碰到Python开发的过程中import包报错的问题,所以本文将和大家介绍一下可编辑安装(EditableInstall)模式,可... 目录摘要1. 可编辑安装(Editable Install)模式到底在解决什么问题?2. 原理3.

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件