原发文时间;2010-11-02 14:52:13

作者:Mark

整理:乱马

各位好:

对于熟练掌握编程的人,我都是很尊敬的,因为我对于计算机编程或者软件工程不是很熟悉。如果你知道类和接口的不同(方法或者对象),那么我也一样尊敬你。

但是,有时我觉得对于FME,开发人员有着一些错误的观念。所以这里对于开发人员,提供一个快速指导,尤其是针对FME 2011的一些新特性。

起因

我曾经或者经常看到这样的问题,一些人在安装FME后,立刻开始用C++编程,做一些例如从Shape格式到KML的转换工作。

老兄,并不是我们有一个SDK工具,就意味着你要用它来解决一切问题。说真的,当你着手转换和变换空间数据的编程,你可能要考虑是否有效的利用了你的时间。大多数用户只要30秒的时间就可以用Workbench来完成从Shape格式到KML的转换。你是否真的需要采用Java花很多天来完成同样的事情。

此外,你可以在FME Server上面运行一个工作空间,但是你不可能用FME Objects的应用做同样的事情。

 

归纳起来,在Workbench中定义一个转换,比起从头利用开发来完成整件事情,是很灵活和高效的。并且FME2011有了更全新的方式来做这些。

首先,让我们回顾一下现有的方式。

命令行方式执行

由于FME运行方式的核心就是命令行方式,所以通过这一方式来执行一个工作空间是非常简单的。任何工作空间的运行窗口将告诉你一个命令应该是什么样子的。所以即使是没有编程经验的人(比如我自己),也可以很容易把一组功能包装成最终用户可以使用的界面。

FME Server运行

当你需要采用一个web页面来运行工作空间,FME Server是一个方法。把一个工作空间发布到FME server上是很容易的,因为有简单的API,这样可以很容易用URL进行一个转换。对于FME Server 2011,甚至可以使用REST方式。

IFMEWorkspace

由于没有一个可行的方法利用FME Objects来运行一个工作空间,因此对于程序化一个工作空间的运行是困难的,至少是没有一个简单和灵活的方法。所以你发现使用Workbench来定义转换,然后用自己的程序去运行这个转换是比较困难的。

FME 2011的新特性,即在FME Objects中提供了一个类(或者接口)IFMEWorkspaceRunner,如他的名字一样,是提供了一个方法能从应用中去执行一个空间转换。

查看API的文档(你必须要安装开发资源才能得到这些文档),位于FME安装目录下的\fmeobjects\cpp\apidoc\classIFMEWorkspaceRunner.html。这个文档提示这个类有8个公共参数,他们分别是:

IFMEWorkspaceRunner的方法:

Run(运行):只要使用一个默认参数就可以运行工作空间。

promptRun(提示运行):明显的,这个参数是给用户一个参数对话框来运行工作空间。

runWithParameters(带参数运行)一个重要的方法,可以传递参数给FME,这样就可以在你自己的应用中把获取/创建的参数传递给FME,而不是必须使用FME默认参数。

还有一点很重要,由于promptRun接受参数并且直接传递给FME,因此没有返回值。使用runWithParameters这种方法让你保留这些参数是如何设置的记录。

当然,除非你知道准确的参数及何种类型,否则你不能传递参数值到工作空间。这里还有一些方法来取回信息:

·getPublishedParamNames:这个方法让你获得工作空间的一组参数。

·getParamValues:这个方法是让你取得每个参数的值。

·getParamType:这个方法让你取得每个工作空间参数的类型。

·getParamOptional:这个方法是让你确定每个参数是否可选。

·getParamLabel:这个方法让你取得每个参数定义的名称文本。

·例子
IFMEWorkspaceRunner的一个例子,可以参阅FME Objects文件夹下的C++例子:

<FME>\fmeobjects\samples\Cpp\CppViewer\ViewerDoc.cpp

IFMEWorkspaceRunner在FME2011 beta 6458 builds及以上版本,可以使用C++,Java和.Net等开发环境。也希望在FME 2011正式发布版本中有可以使用Python来开发。

快速回顾!
问题:为什么IFMEWorkspaceRunner很重要?
回答:使用Workbench开发一个数据转换是比使用FME Objects进行编程来完成转换容易的多,IFMEWorkspaceRunner之所以重要,是可以让你在比较容易的环境下进行转换定制(Workbench),然后在其他应用中调用这个转换。

 

 

不要忘了……
有一系列FME用户会议在2010年10月。Don Murray,Mark Stoakes和Craig Vemon将会访问一些地区,进行一系列的演示。

FME 2011预览:新特性 IFMEWorkspaceRunner相关推荐

  1. MS CRM 2011中的新特性(1)——界面部分

    MS crm2011中,在界面部分的调整包括有ribbon.入门窗格.最近访问列表.以及实例的表单方面的调整,下面一一介绍. Ribbon特性 MS CRM2011中,使用了Ribbon作为工作菜单的 ...

  2. office 文档在线预览新姿势之永中云转换

    你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者需要毕业设计,大作业指导,购买付费源码等,欢迎指教: 企鹅:869192208 文章目录 前言: 一.接入准备 二.预览 w ...

  3. 发明神奇的理发店“魔镜”,可提前预览新发型!

    日本长冈市一家理发店近段时间新上了一面"魔镜",非常受顾客的欢迎.通过它,顾客们可以提前预览自己的新发型在镜子里的样子,是不是很神奇. 与其说是"魔镜",其实更 ...

  4. 你想要的PDF预览新方式,微信小程序绝对不容错过

    前言 随着微信小程序的不断发展和变革,越来越多的功能被开发出来,其中预览 PDF 文件功能也已经成为小程序的常见应用之一.今天,我们将针对微信小程序预览 PDF 这一功能,为大家详细解析和介绍. 实现 ...

  5. Visual Studio 11预览: 新的编程语言功能

    每个版本的Visual Studio开发环境通常都会在其IDE及其支持的编程语言中引入一些新功能.微软开发部副总裁S. Somasegar最近展示了一些即将出现在Visual Studio 11中的新 ...

  6. .NET Pet Shop 4.0案例研究预览篇

    概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 随着.NE ...

  7. JDK9-17开发常用的新特性

    以下样例代码均可在样例代码中查看 jdk9新特性 新功能和库的更新 "_"为关键字,不可作为变量名 As of Java 9, '_' is a keyword, and may ...

  8. java switch 表达式_尝鲜Java 12新特性:switch表达式

    Java 12将在两个月后(2019/3/19)发布,现已进入RDP1阶段,确定加入8个JEP.其中对Java语法的改进是JEP 325: switch表达式.于是我迫不及待,提前感受一下更先进的语言 ...

  9. C# 10 新特性 —— 补充篇

    C# 10 新特性 -- 补充篇 Intro 前面已经写了几篇文章介绍 C# 10 新特性的文章,还有一些小的更新 Constant interpolated strings 在之前的版本中,如果想要 ...

最新文章

  1. numpy.mod详解
  2. 安全专家呼吁希拉里要求重新计票
  3. Docker 精通之 docker-compose
  4. django-如何debug
  5. Bzoj 3226: [Sdoi2008]校门外的区间
  6. 从操作系统内核看设计模式--linux内核的facade模式
  7. matlab定位噪声位置,Matlab怎么样调节KALMAN滤波中的过程噪声和观测噪声
  8. 创建WEBPARTS全过程
  9. C语言读取文件所有内容
  10. hdu4747(求mex区间之和)
  11. 微信小程序书籍翻页效果
  12. 前端常用事件案例——抽名字(抽奖)/搜索下拉菜单/微博文本框
  13. 微信平台开发的基本步骤讲解
  14. 关于浏览器flash插件遇到的一些坑
  15. 我傻眼了:一个完全由 AI 生成的播客,采访了乔布斯
  16. AM335X 、AM5728 NOR flash启动
  17. Linux中C语言编程经验总结
  18. ecshop2.72文件结构说明
  19. json>object>bean
  20. 【VMware】虚拟机识别USB设备

热门文章

  1. imagenet数据集类别标签和对应的英文中文对照表
  2. 我用unity开发的第一款游戏demo心得
  3. Bellman Equation 贝尔曼方程
  4. 第三节: 水泥混凝土路面构造特点
  5. 80x86系统微处理器简介
  6. 机器学习中的数据集切分
  7. 翻译文章“AST 模块:用 Python 修改 Python 代码”---!!注意ironpathyon未实现此功能...
  8. 隐函数求导(一元和二元)
  9. 怎么让浏览器一直前置_上海居住证积分没有前置学历怎么解决?
  10. SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame