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

相关文章

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;