作者:dongyx
SuperMap iDesktopX是超图研究院推出的一款跨平台的桌面GIS软件,兼容Windows和Linux,同时iDesktopX也采用的是插件式扩展开发框架,支持定制开发。
使用iDesktopX定制开发有以下优势:
⚫ 采用 Swing 图形界面框架,封装 60+GUI 控件,便于用户调用;
⚫ 通过配置文件进行界面配置与管理,无须编程;
⚫ 支持 Java、Python 两种语言扩展定制;
⚫ 可定制开发界面功能及可视化的地理处理建模工具;
⚫ 使用 IDEA 自动管理并部署依赖,实现一键部署。
一、开发工程配置:
SuperMap iDesktopX 提供两种扩展开发工程的配置方式:
1)推荐方式,直接通过“视图”选项卡中的新建二次开发工程功能,快速构建二次开发工 程。该方式高效便捷,无需手动添加桌面依赖,可以选择开发工程存放路径、自定义项目参数;并且还可导入二次开发示例代码,方便用户快速进行扩展开发。
2)其他方式,则是通过打开扩展开发示例模板的方式,需要手动添加依赖。
1.1.1 推荐方式
1.新建二次开发工程:视图->新建二次开发工程,在弹出框中设置工程名称、包名、版本等信息,选择扩展开发模板类型为GPA,该模板用于扩展GPA算子。
2.在IDEA中打开刚刚新建好的二次开发工程:如下图所示,SampleCode为新建工程,若勾选了导入二次开发示例代码,工程中还会加载二次开发示例模板SampleCodeTemplates目录。
3.编译:单击工具栏中的Run或者Debug按钮,编译后自动启动SuperMap iDesktopX。启动后工具箱中会增加GPA工具示例组,其中包含了删除重复点和设置坐标系两个示例工具。
1.2.1 其他方式
安装IDEA后,需打开扩展开发的工程模板SampleCode并进行配置,详细说明如下:
1.打开模板工程:IDEA->File->Open-> 选 择 SuperMap iDesktopX 产品包
\templates\SampleCode 目录,打开扩展开发示例模板工程。
2.添加桌面依赖:File->Project Structure->Libraries->添加->JAVA,在弹出的 Select
Library Files 对话框中,同时选中以下 4 个目录,单击 OK 按钮后,选择 SampleCode,即可
将桌面依赖添加至二次开发插件。
1)%iDesktopX 产品包%/bin/
2)%iDesktopX 产品包%/bundles/idesktop_bundles/
3)%iDesktopX 产品包%/bundles/require_bundles/
4)%iDesktopX 产品包%/lib/
二、GPA算子扩展
以推荐方式创建的GPA模板扩展开发工程中提供了完整的工作流实现代码DesktopProcessSampleCode。GPA扩展开发类需要继承算子模型基类AbstractDesktopProcess来实现对应的方法,需注意以下几点
1.算子名称
算子构造函数第一句必须调用super方法,方法参数为算子name,同一个包中算子名称不能重复,name为一个唯一值。如下图所示:
super("DeleteDuplicatePoints");
2.构造输入参数
以示例代码为例讲述如何构造输入参数:
⚫ sourceDataset:输入数据的 key,一个功能可能有多个输入数据,用于标识输入数
据;
⚫ DatasetVector.class:限制输入的值类型,本文示例是点数据集删除重复点,所提输
入的值类型是 DatasetVector.class。
获取输入数据需要调用相应的代码语句,获取输入参数的数据的示例代码如下,通过前面
构造的输入参数对象变量调用 getValue 方法即可。
3.构造输出参数
以示例代码为例讲述如何构造输入参数:
⚫ resultDataset:是输出参数的 key,标识输出参数,因为一个功能可能有多个输出参
数;
⚫ DatasetVector.class:限制输出的值类型,本文示例是点数据集删除重复点,所提输
出的值类型是 DatasetVector.class。
输出数据的需要调用相应的代码语句,输出数据的示例代码如下,通过前面构造的输出参
数对象变量调用 setValue 方法即可。
4.功能界面定制
SuperMap iDesktopX 封装了 70 余个控件,如数据集控件、字段选择控件、单选框、复
选框等,用户在配置功能对话框界面时,直接调用即可。对话框界面配置的示例代码如下:
5.childExecute方法
执行功能的代码放在childExecute方法中,且以boolean类型返回执行结果。当执行失败是返回false,执行成功时返回true。