FME 2011预览:新特性 IFMEWorkspaceRunner
原发文时间;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相关推荐
- MS CRM 2011中的新特性(1)——界面部分
MS crm2011中,在界面部分的调整包括有ribbon.入门窗格.最近访问列表.以及实例的表单方面的调整,下面一一介绍. Ribbon特性 MS CRM2011中,使用了Ribbon作为工作菜单的 ...
- office 文档在线预览新姿势之永中云转换
你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者需要毕业设计,大作业指导,购买付费源码等,欢迎指教: 企鹅:869192208 文章目录 前言: 一.接入准备 二.预览 w ...
- 发明神奇的理发店“魔镜”,可提前预览新发型!
日本长冈市一家理发店近段时间新上了一面"魔镜",非常受顾客的欢迎.通过它,顾客们可以提前预览自己的新发型在镜子里的样子,是不是很神奇. 与其说是"魔镜",其实更 ...
- 你想要的PDF预览新方式,微信小程序绝对不容错过
前言 随着微信小程序的不断发展和变革,越来越多的功能被开发出来,其中预览 PDF 文件功能也已经成为小程序的常见应用之一.今天,我们将针对微信小程序预览 PDF 这一功能,为大家详细解析和介绍. 实现 ...
- Visual Studio 11预览: 新的编程语言功能
每个版本的Visual Studio开发环境通常都会在其IDE及其支持的编程语言中引入一些新功能.微软开发部副总裁S. Somasegar最近展示了一些即将出现在Visual Studio 11中的新 ...
- .NET Pet Shop 4.0案例研究预览篇
概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 随着.NE ...
- JDK9-17开发常用的新特性
以下样例代码均可在样例代码中查看 jdk9新特性 新功能和库的更新 "_"为关键字,不可作为变量名 As of Java 9, '_' is a keyword, and may ...
- java switch 表达式_尝鲜Java 12新特性:switch表达式
Java 12将在两个月后(2019/3/19)发布,现已进入RDP1阶段,确定加入8个JEP.其中对Java语法的改进是JEP 325: switch表达式.于是我迫不及待,提前感受一下更先进的语言 ...
- C# 10 新特性 —— 补充篇
C# 10 新特性 -- 补充篇 Intro 前面已经写了几篇文章介绍 C# 10 新特性的文章,还有一些小的更新 Constant interpolated strings 在之前的版本中,如果想要 ...
最新文章
- numpy.mod详解
- 安全专家呼吁希拉里要求重新计票
- Docker 精通之 docker-compose
- django-如何debug
- Bzoj 3226: [Sdoi2008]校门外的区间
- 从操作系统内核看设计模式--linux内核的facade模式
- matlab定位噪声位置,Matlab怎么样调节KALMAN滤波中的过程噪声和观测噪声
- 创建WEBPARTS全过程
- C语言读取文件所有内容
- hdu4747(求mex区间之和)
- 微信小程序书籍翻页效果
- 前端常用事件案例——抽名字(抽奖)/搜索下拉菜单/微博文本框
- 微信平台开发的基本步骤讲解
- 关于浏览器flash插件遇到的一些坑
- 我傻眼了:一个完全由 AI 生成的播客,采访了乔布斯
- AM335X 、AM5728 NOR flash启动
- Linux中C语言编程经验总结
- ecshop2.72文件结构说明
- json>object>bean
- 【VMware】虚拟机识别USB设备
热门文章
- imagenet数据集类别标签和对应的英文中文对照表
- 我用unity开发的第一款游戏demo心得
- Bellman Equation 贝尔曼方程
- 第三节: 水泥混凝土路面构造特点
- 80x86系统微处理器简介
- 机器学习中的数据集切分
- 翻译文章“AST 模块:用 Python 修改 Python 代码”---!!注意ironpathyon未实现此功能...
- 隐函数求导(一元和二元)
- 怎么让浏览器一直前置_上海居住证积分没有前置学历怎么解决?
- SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame