用户名
密码
(30天内有效)
注册
注册
首页 > 案例资料 >

FME 开发篇(一)

我要收藏
2016-05-04

FME Desktop

在上一篇文章中(似乎确实有一点点久远了),我们介绍了如何将FME Desktop的能力集成到你的App中。接下我们将用一个简单的示例程序来向你展示如何做到这一点。我们从FME Server的示例中下载了easyTranslator.fmw,一个可以完成多种格式直接相互转的模板,你将会看到在你的程序中加入这样一个格式转换的功能是多么的简洁和优雅。


我们先看看easyTranslator.fmw做了什么,转换过程很简单,采用动态模式将一个原数据格式转换到目标数据格式(什么是FME动态模式,值得你深入学习),通过转换参数分别指定,原数据和目标数据的格式、坐标系、文件。这一切都通过外部来决定实际的转换行为。


接下来我们给出一个示例程序来实现这个模板的功能。为了更直观,我们使用了一个Windows小窗口来展示这个过程。示例程序直接调用easyTranslator.fmw,在你的App中向用户提供这一转换功能。

 


 如果你质疑这个示例程序是为easyTranslator.fmw量身定做的,那么再看看下一张图片。


 是的,这就是一个FMW模板文件的简版执行器。把FME擅长的部分用FME Workbench来实现,比如easyTranslator.fmw,程序只做一件事,调用。我们来看看调用代码:

l  创建对象

l  指定FMW模板和参数


 我想足够这足够简洁了。调用异常时,你会得到一个日志对象用来分析错误原因。如果使用FME Objects实现时,你不得不认真考虑并实现整个繁杂过程。

 在前一篇文章中,我们提到有两种方式可以完成对FMW模板文件的调用。

l  FME Objects中的IWorksapceRunner接口。

l  FME命令行调用。

 

很不幸FME Objects和 FME Desktop版本相关,不同FME Objects版本的之间无法兼容,这导致你的编译的程序很可能无法在其它计算机上正确的运行,这要求客户计算机的FME Desktop和你的编译环境保持一致。

所以我们采用FME命令行调用FMW模板,我们发现这工作的很好,编译后程序能在绝大多数安装着不同版本FME Desktop的计算机上运行。为了简化这种命令行交互的调用方式,我们实现了一个调用接口,提供和FME Objects IWorksapceRunner相似的功能。这样你可以更专注于程序的其他部分。

 

在我们的实现中提供两个主要的接口来完成对FMW的调用操作。

IFMETranslation

FMW模板调用接口,提供对FMW模板解义和执行。

 

 

IFMELogger

FMW模板日志接口,由IFMETranslation创建,返回FMW模板执行状态,和执行日志信息。

 

最后将示例程序的实现代码提供给大家参考。运行环境:

l  FME Desktop 201X

l  Microsoft Visual Studio 2010


本站声明

本文仅代表作者观点,不代表城市数据派立场;
本文系作者授权城市数据派发表,未经许可,不得转载;
本网站上的所有内容均为虚拟服务,一经购买成功概不退款,请您理解。

点赞0