span8
span4
XML是一种标记语言,使用户能够跨Web服务交换数据。在FME服务器中,可以使用数据流服务发布工作空间以轻松创建Web应用程序以将存储为XML的空间数据流。
下面的示例显示了如何创建一个工作区,该工作区获取空间数据并将其写入XML,然后将XML发布到FME服务器,以生成一个直接URL,该URL可用于在web服务中传输数据。本教程的第二部分将概述GML格式的数据流服务-一个OGC规范用于在XML中表示地理数据。
按照下面的说明创建一个工作区,该工作区将用XML写出数据,然后可以使用数据流服务将这些数据发布到FME服务器。如果您想跳过步骤8,可以使用该工作区的完整版本。
XML文档通常至少包含两个组件:
1.创建城市名称属性
要创建根元素,将AttributeCreator转换器添加到空白工作区,并将New Attribute设置为“City Name”,Attribute Value设置为“Austin Bus Routes”。这个转换器需要输入才能运行,因此在AttributeCreator之前添加一个Creator转换器。
“属性创建者参数”对话框
2.添加SDF阅读器
在此示例中,子模板将列出奥斯汀中总线路由的几何图形。首先,我们需要在Transit.sdf数据集中读取。使用以下参数添加读者:
格式 | Autodesk MapGuide Enterprise SDF |
数据集 | < datadownloadpath > \ Transit.sdf |
在选择OK之前,打开参数…在约束下选择省略号[…]],然后选择“默认”。BusRoutes特性。
添加SDF阅读器,然后从表格列表中选择要读取的要素类型
3.提取特征几何体
添加GeometryExtractor转换器并将其连接到读卡器输出端口,然后在参数中将几何编码更改为“FME XML”。此转换器将把与每条总线路由关联的几何图形转换为XML结构。
如果要添加检查器并立即运行工作空间,则每个要素都会有一个附加的几何体属性,该属性如下所示:
<?xml version = " 1.0 " encoding = " US_ASCII”独立=“不”? > <几何学> <多曲线> <行> < coord x = " 3097193.749875188 " y = " 10035576.9999291 " / > < coord x = " 3097148.4199133664 " y = " 10035602.950008437 " / > < coord x = " 3096944.5699273646 " y = " 10035784.760012269 " / > < coord x = " 3096840.9900820255 " y = " 10035860.790043935 " / > < coord x = " 3096824.890048608 "y = " 10035902.450065598 " / > < / >…
注意,< multiccurve >元素表示该特性是由多行组成的。
4.设置XML模板
现在您已经为最终的XML文件创建了这两个需求,我们可以使用XMLTemplater transformer将它们放在一起。当这个转换器第一次添加到画布时,它只有一个根输入,所以打开参数编辑器,选中子模板框并命名端口总线路由。
在根模板表达式中,复制以下代码行:
{fme:get属性(“CityName”)} {fme:process features(“BusRoutes”)}
该模板声明文档将是XML,并且还将写出在步骤1中创建的CityName属性的值。
您可以编辑此模板以包括其他属性数据,只要根端口接收到该数据即可。
注意:行{FME:进程 - 功能(“BusRoutes”)}是与我们即将创建的子模板相关的占位符。每个总线路线都将作为
在子模板表达式中添加以下代码行:
{fme:get-attribute("LINE_ID")} {fme:get-attribute("LINE_NAME")} {fme:get-xml-attribute("_geometry")
此子模板告诉文档在详细说明路线几何图形之前添加公交路线ID和名称。
注意:线{fme:get-xml-attribute(“_ geometry”)}在几何外提出的功能中创建的XML几何功能中拉动。请注意,这是Get-XML-Attribute函数而不是通常的Get-Attribute,这是告诉模板,这些属性已用XML编写并删除几何本身。
注意:如果您有一个XML Schema (XSD)文件,您可以使用XMLSampleGenerator转换器来创建一个XML模板,该模板可以用作XMLTemplater中的基础。
在关闭之前,参数编辑器将结果属性名称更改为“text_line_data”。
5.将数据连接到XML template
如果尚未将AttributeCreator连接到根输入,将GeometryExtractor连接到总线输入。XMLTemplater将创建一个功能,其属性包含整个文档。
6.格式化XML文件
添加XMLFormatter并将具有XML文本的属性更改为“text_line_data”,并对属性执行相同的属性以包含XML输出。我们可以使用此变压器清除在写数据之前清理线条和外观。
将text_line_data属性设置为包含XML文本的属性
7.添加文本文件编写器
XML文档现在可以导出为文本文件。添加具有以下参数的写入程序:
格式 | 文本文件 |
数据集 | busroutes.xml. |
在参数中...从下拉列表将MIME类型更改为Text / XML。
添加MIME类型设置为Text/xml的文本文件编写器
注意:这里我们使用的是Text File Writer而不是XML Writer,因为我们已经在一个属性中生成了整个XML文档,所以需要做的就是将写入器指向这个text_line_data属性。在使用数据流服务时,设置正确的MIME类型非常重要。
8.运行工作区
在将工作区发布到FME Server之前,运行工作区并在文本编辑器中检查输出,以查看您创建的内容。
XML返回到文本文件
9.将工作区发布到FME服务器
发布工作区到FME服务器文件>发布到FME服务器。创建一个新的名为XML教程的存储库,并确保勾选了“上传数据文件”。仅将工作区注册到数据流服务。
10.使用数据流服务运行工作区
打开FME服务器Web界面,在主页的“最后发布的工作空间”下找到您的工作空间。单击工作区以运行它,这将自动将XML流返回到浏览器。或者返回到运行工作区页面并显示高级部分。在这里,您可以找到Direct URL来设置一个链接,以直接使用web服务运行该工作区。
FME服务器运行工作区页面上的直接URL示例位置
注意:您还可以创建基于此数据流服务的成功或失败通知的主题。
此示例演示了如何将空间数据集写入GML格式以生成您自己的XML模式,可用于在Web服务中传输数据。
1.使用GML阅读器生成工作区
写入GML的写作比写入XML要简单得多,因为它不需要任何格式。打开FME Workbench并选择生成工作区。使用下表设置参数:
读者格式 | Autodesk MapGuide Enterprise SDF |
阅读器数据集 | < datadownloadpath > \ Transit.sdf |
读者参数 | 约束> Table列表>默认。BusRoutes |
写入格式 | GML(地理标记语言) |
编写器数据集 | C: \ Busroutes_GML.gml |
书写坐标系 | LL84 |
“生成工作区完成”对话框
2.运行工作空间
运行工作区,然后将鼠标悬停在GML编写器上,并选择“打开包含文件夹”图标
.注意,通过运行这个工作区,创建了两个文件—包含所有数据的GML文件和一个XML Schema文件。
运行工作空间创建的GML和XML Schema文件
3.更新作家使用架构
返回您的工作区并在Navigator面板下右键单击Busroutes_GML编写器,然后选择“更新编写器...”。
Navigator窗口中更新编写器
打开Parameters选项卡,在GML版本下将设置从3.1.1更改为GML应用程序模式,然后在应用程序模式中浏览到刚刚创建的.xsd文件。一旦编写器成功更新,您现在就可以将工作区发布到FME Server。
添加XML模式文件到GML编写器
4.在数据流服务下发布到FME服务器
将工作区发布到FME服务器时,请将工作区注册到数据流服务,并注意,这一次它以红色突出显示,这意味着一个或多个参数需要用户输入才能成功翻译。单击编辑,然后单击“将浏览器包括到流”旁边的椭圆,并确保已选择BusRoutes_GML文件。
编辑数据流服务属性以包含GML文件作为流写入器
5.从FME服务器运行工作区
返回到FME服务器Web界面,并选择运行工作区,或者可以在高级部分找到链接此数据流到Web服务的URL,如流XML示例。
在FME服务器中运行工作区返回的GML流片段
OGC.Web功能服务(WFS)由FME服务器支持,并能够返回具有空间几何体的功能,如本文中介绍的示例。可以找到有关如何使用FME服务器创建WFS服务的详细说明这里.
或者,您可能对流式传输其他数据格式感兴趣,在这种情况下,本文可能会感兴趣:使用FME服务器流媒体Geojson。
本文中使用的数据源自可提供的开放数据德克萨斯州奥斯汀市.它包含的数据许可在公共领域奉献许可证-奥斯汀市。
©2019 S亚搏在线afe Software Inc |合法的