练习3 罪案地图数据查询
数据 道路(AutoCAD的DWG)
犯罪统计数据(CSV)
总体目标 进行犯罪统计与城市街区之间的衔接
演示了 属性连接
开始工作 没有一个
结束工作 C: \ \ DesktopBasic \ Transformers-Ex3-Complete.fmw FMEData2016 \工作区
C: \ \ DesktopBasic \ Transformers-Ex3-Complete-Advanced.fmw FMEData2016 \工作区

一家全国性报纸的数据记者要求获得一个街区一个街区显示城市内犯罪地点的空间数据。这在一定程度上是对该市开放数据政策的测试,不遵守是没有问题的。

然而,由于当前的犯罪数据集(CSV、非空间数据集)和城市街区(AutoCAD)没有以任何方式连接,因此出现了危机!

你听说了这个问题,建议FME在犯罪数据和城市街区之间创建一个连接,这样就可以按照要求的格式提供信息。完成这个任务,你将成为一个空间超级英雄!


1)检查源数据(犯罪)
第一个任务是熟悉源数据。为此,请在FME数据检查器或简单的文本编辑器中打开以下数据集。

读者的格式 逗号分隔值(CSV)
读者数据集 C: \ FMEData2016 \ \ \ Crime2011.csv紧急数据
读者参数 文件有字段名:Yes(已选中)
要跳过的行:标题1

数据将看起来像这样在数据检查表视图窗口:

注意,这里没有空间数据,只有一个块号。


警长Webb-Mapp说……
犯罪? !在我的城市吗?我认为不是。但是如果有…请注意,7XX W Georgia Street是指安大略省街以西的Georgia Street上的第七个街区,包括700-800号楼。乔治亚街7XX号离这里有14个街区,在安大略省东边的第七个街区。明白了吗?


2)检查源数据(道路)
现在让我们检查一些可以合并犯罪统计数据的空间数据。在数据检查器中打开以下数据集

读者的格式 Autodesk AutoCAD的DWG / DXF
读者数据集 C: \ FMEData2016 \ \运输\ Roads.dwg数据
读者参数 按:属性模式对实体进行分组

这是道路数据集。你会看到道路在每个街区的交叉点分开,这非常适合我们的目的。它也有一个块号属性:

一个不同之处,这将使加入更难的是,该块号用零填充(“700”,而不是“7XX”)。另一个区别是,道路数据存储在标题的情况下(“W格鲁吉亚ST”)在道路数据集,而犯罪数据集是大写字母(“W GEORGIA ST”)。


3)添加读者
现在,让我们开始与这个数据的工作。启动FME工作台,并开始与一个空白的画布。

添加阅读器到工作区使用读卡器>从菜单栏中添加读卡器。这位读者应该用于读取罪(CSV)的数据。一定要使用作为数据检查指定的参数相同。

现在,添加第二个阅读器阅读的道路(DWG)数据。然而,从检查数据,我看到道路被存储在一组七个不同的层次。添加阅读器的时候,像这样我们不需要这一点,所以设置了“单一的合并功能类型”参数:

同样,确保作为数据检查指定使用相同的实体组通过参数。

工作区现在看起来是这样的:

如果你不点击一个合并的功能类型选项,你会得到每个AutoCAD图层特征类型。这是确定的,但你必须确保你的每个人连接到随后的变压器。


4)添加StringReplacer
合并的数据,我们需要一个共同的块属性。在块号是如何构成的电流差可以通过用“00”使用StringReplacer变压器替换“XX”非常简单地被固定。

添加StringReplacer变压器,并将其连接到犯罪数据集特征类型。

打开该StringReplacer参数对话框。设置适当的参数。该属性工艺将“块”的文本匹配将是“XX”和替换文本将是“00”,像这样:

单击确定接受的价值观。如果你愿意的话,附加检查变压器和运行工作空间,以保证变压器工作正常。


5)添加StringCaseChanger
犯罪/道路数据的另一个区别是UPPER /首字母街道名称。这种差异可以固定一个StringCaseChanger变压器。

添加StringCaseChanger变压器,并将其连接到道路数据集特征类型:

打开参数对话框。设置参数HBlock的值更改为大写:


向量小姐说……
所以,回答我这个问题。为什么我们在道路数据上使用StringCaseChanger(大写)而不是将犯罪数据更改(TitleCase)?你知道吗?


6)添加FeatureMerger
现在,我们已经整理出了连接密钥,我们可以将数据连同FeatureMerger合并结构。

一个FeatureMerger添加到画布上。道路数据作为请求者和犯罪数据连接的供应商(我们希望提供与犯罪统计数据路):

如果像我一样,你不喜欢这样的交叉连接,随意左右交换对象的位置解开它。

打开该FeatureMerger参数对话框。

对于“加入的”设置的参数,请求连接属性将HBlock,供应商连接属性将座和比较模式将是字符串:


工作台博士说……
如果您很敏锐,您可能已经注意到可以在文本编辑窗口中定义请求者和供应商参数。
这意味着,不使用我们刚刚添加的变形器,我们可以使用文本编辑器中的函数来复制它们的功能,就像这样:
@ReplaceString (@ value(块),XX, 00) @UpperCase (@ value (HBlock))

对于“合并参数”的功能合并类型应该是属性而已。因为我们可以期待每块数罪并罚参数过程重复供应商应设置为Yes。组供应商属性的号码是“NumberOfCrimes” - 这将创建一个名字记录的属性许多罪行是如何发生在该块。

最后,属性的积累需要“合并供应商。”

单击确定关闭对话框。


7)添加人员
添加检查变压器到合并和NotMerged输出端口(或两个输出连接到一个检查器)。这将为我们提供附有犯罪信息的道路数据。因为有可能没有任何犯罪块NotMerged数据是非常重要的。

未引用的输出端口会告诉我们,没有匹配到已知地址的罪行,所以这里连接记录仪变压器来记录,在这方面失败的任何功能。


保存并运行翻译
保存工作区,然后运行转换。通过查询块,你应该能够看到多少罪发生在那里。


提示
如果您想查看每个块中发生的犯罪的列表,请打开FeatureMerger参数并选中生成列表框。现在重新运行工作区并查询一个特性(列表不会显示在表视图窗口中)。

高级健身
现在,您已经成功地将犯罪统计数据合并到一组空间数据中,这正是数据记者所要求的。然而,如果他能根据这些信息创造出一张地图,那么我们也能。如果你有时间,让我们试一试。


9)添加MapnikRasterizer
所述MapnikRasterizer是从一组矢量数据的创建很好地格式化栅格地图输出的方式。

放置连接到FeatureMerger的合并输出端口的MapnikRasterizer变压器:

打开参数对话框。将合并层是一个线符号化。然后单击编辑按钮向右。

对于线宽度(像素)的参数,点击下拉箭头并选择属性值>犯罪的数量。单击确定关闭对话框。

设置输出栅格大小为2500个细胞为列和行。


10)添加RasterExpressionEvaluator
如果您运行的工作区,现在你会看到包含黑“功能”一白方。要识破白色区域的背景图上我们可以设置白数据的透明度。

要做到这一点,添加RasterExpressionEvaluator变压器。打开参数对话框,设置参数如下:

这基本上意味着,因为他们之前设定的红 - 绿 - 蓝值。如果蓝色值是255,那么透明度设置为0,否则设置为255。即如果该区域是白色的,然后将其设置为透明。


11)运行的工作区
现在,您可以添加一个检查和运行工作区。

输出将是这样的:


瓷砖的MapQuest

基本上我们已经创建了一个地图,其中道路宽度反映了该街区的犯罪数量。


祝贺
通过完成这个练习,你已经学会了如何:
  • 预处理数据以获得具有匹配结构的连接键
  • 在FeatureMerger中使用连接键连接非空间数据
  • 使用MapnikRasterizer创建映射输出

结果匹配”

    无结果匹配”