作者: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。
 



















