作者:
爱尔兰马克

所有博客帖子>关于FMEγ7月30日,二千零一十三γ爱尔兰马克

FME 2013用例:数据下载和文件复制格式

嗨,朋友们,
本文介绍了一种在FME中鲜为人知的编写器格式及其作为FME服务器数据下载服务一部分的有用性。特别是,我将展示我可以利用它从我们的网站下载标准的FME样本数据集。

培训数据下载
你知道吗,当你在线培训课程使用安全软亚搏在线件,您可以获得自己的Amazon Web服务虚拟机实例,预先安装了哪些FME和所需数据?你只需通过远程桌面连接就可以访问它,然后离开!我们发现这是允许用户进行在线培训的最简单方法。

但是,有时,用户希望在自己的计算机上执行课程,在这种情况下,他们需要手动下载样本数据。

然而,下载数据的能力并不像它应该的那样有效。数据保存在一个zip文件中——这很简单——但这意味着用户最终下载了近200MB的数据,不管他们是否在修一门全用的课程。

鉴于SAFE是FME服亚搏在线务器的创建者,其中包括数据下载服务,我很尴尬还没有找到更好的解决方案。

好,2014,我计划这么做。这是怎么回事。

文件复制基础
第一,让我解释一下filecopy是关于什么的。

文件拷贝编写器是一个鲜为人知的FME功能,并且,因为它的模糊性,可能没有它应该使用的那么多。这不是一种数据格式,像这样的。相反,每个传入功能都会触发文件系统复制(或移动)命令:

正如你所看到的,编写器功能类型包括定义源文件和目标的格式属性。实际属性为:

  • 文件复制源数据集
  • 文件复制目标数据集
  • 文件复制目标文件名

我只需设置源文件/文件夹的格式属性,目标文件夹/文件名各一个。然后,在运行时,数据只是从一个复制到另一个。

示例使用可能是元数据文件。例如,如果要创建形状编写器MyDATA.SHP,那么你可以用一个文件复制器来复制mymetadatatemplate.xml文件MyDATA XML.这样,通过复制可用的标准文件,可以自动创建元数据文件。

filecopy还可以用于将输出从一个编写器复制到其他位置。例如,我将形状数据写入本地文件系统的某个位置,但使用file copy自动将输出复制到远程文件系统上的中央数据存储,其他人可以进入的地方。

但我的计划是在FME服务器上使用这种格式,这就是它变得更有趣的地方。

文件复制和数据下载
为什么filecopy是我最好的方法?

好,在大多数FME服务器数据下载服务中,我们希望让用户能够选择数据格式(通用编写器)或一组层(要读取的特征类型)或坐标系(重新编写器变压器)。像这样:

但在训练中我们不想这样。我不想给用户改变任何东西的机会,因为那样的话,数据将与课程练习不兼容。数据内容不应被翻译或转换。我只想让用户选择他们将要学习的课程,并为FME服务器提供在此基础上的数据,这样地:

文件拷贝编写器是完美的,因为数据已经以所需格式存在.我可以简单地将所选培训课程映射到文件列表,并将其传递给文件复制编写器。在FME服务器数据下载时,文件复制输出被发送到正在下载的zip文件。

因此,用户将获得我选择提供给他们的任何源文件的精确副本。下一节将介绍如何设置。

培训下载工作区
我的工作区首先扫描我的培训文件系统(C:FMEDataData)并查找数据文件夹。我使用目录和文件路径名阅读器来执行此操作。这就像文件拷贝编写器一样,是另一个独特的FME功能,它返回特定位置的文件和文件夹列表。

这样做似乎很奇怪——我不应该知道存在哪些文件夹吗?–但随着时间的推移,数据会发生变化,会添加更多的文件夹。这样我的过程是动态的。如果添加了新文件夹,我不需要更改工作区来处理它。

工作区的下一部分将所选课程映射到数据文件夹列表。这个,此刻,是硬编码的;但我希望通过引用一个外部查找表来使这一点更加动态。

例如,ESRI培训课程需要公园,区域,和机场数据文件夹。它不需要光栅文件夹,在那个课程中没有用到。

然后我简单地做一个测试来检查我读过的文件夹是否在这个值列表中,使用测试变压器:

最后,文件副本编写器提供了通过测试的数据文件夹列表:

当我在服务器上运行这个程序时,有人问我希望为哪个课程下载数据,然后它作为一个zip文件发送,准备安装:

就这么简单…差不多!

最终工作空间
实际上,最终的工作区有点复杂,看起来像这样(单击放大):

有几个原因,这就更复杂了。

首先,我希望提供的内容不仅包括数据(粉色书签),还包括示例工作区(黄色书签)和自述文件(绿色书签)。

其次,我想一次能处理多个课程。例如,我希望用户能够同时选择KML和ESRI课程。

为此,我最终使用了FME列表。所选课程以逗号分隔的字符串形式呈现,我将其拆分为一个列表,然后分解为各个功能。然后,我将每个课程的数据集列表作为单独的功能进行匹配。一个副本移动器变压器确保我不会尝试两次传递同一个文件夹,即使这两门课都用到了。

实例
我们已经有几个FME用户(据我所知)以这种方式使用filecopy,所以这不仅仅是一个理论项目。

此外,还有一些关于fmepedia的例子,您可以查看。

这个例子说明如何使用filecopy将元数据包含在数据下载服务中。

这个例子更有趣的是,演示了如何使用它将数据写入现有文件geodatabase,并使用filecopy将其添加到zip文件中。

所有这些都需要有一个文件副本编写器来优先处理ESRI编写器。简单!

综上所述
综上所述,我想在这里了解一些想法。

首先看一下文件拷贝编写器。它可能是你不知道的东西,可以在你的翻译中使用,桌面或服务器。

其次,如果您想通过数据下载服务交付数据,请注意,使用filecopy意味着您可以简单地移动数据,并将其插入下载的zip文件中,而无需尝试读/写它。

此外,我可以看到我在FME云,因为这是一个完美的例子,项目的类型FME云应该用于。如果你不知道,FME云是虚拟的,FME服务器的按需版本。我们正在进行beta测试,定价模型现在发布在网站上。

事实上,看看我的下一篇文章,当我给你们所有人一个秘密的高峰,它是如何工作的。

当做