span8
span4
XML是一种标记语言,允许用户跨web服务交换数据。在FME Server中,可以使用数据流服务发布工作区,以便轻松创建web应用程序以流处理存储为XML的空间数据。
下面的示例展示了如何创建一个工作区,该工作区接受空间数据并将其写入XML,然后将XML发布到FME服务器,以生成一个直接URL,该URL可用于在web服务中传输数据。本教程的第二部分将概述GML格式的数据流服务OGC规范在XML表示的地理数据。
按照下面的说明创建一个工作区,将写出来,然后可以使用数据流服务发布到FME Server中的XML数据。有了这个工作区中可用的完整版本,如果你想跳过步骤8。
XML文档通常至少包含两个组件:
1.创建城市名称属性
创建根元素的AttributeCreator变压器添加到一个空白工作区,并设置新的属性为“城市名称”和属性值“奥斯汀巴士路线”。这种变压器需要输入到运行,所以AttributeCreator前添加一个造物主变压器。
属性创建器参数对话框
2.添加一个SDF阅读器
在本例中,子模板将列出Austin中的总线路线的几何形状。首先,我们需要在途中阅读。自卫队的数据集。使用以下参数添加阅读器:
格式 | 在Autodesk MapGuide Enterprise SDF |
数据集 |
选择确定之前打通参数...和约束下选择下一个表列表省略号[...],然后选择Default.BusRoutes功能。
添加SDF阅读器并从表列表中选择要读入的特性类型
3.提取几何特征
添加一个GeometryExtractor转换器并将其连接到读取器输出端口,在参数中将几何编码更改为“FME XML”。这个转换器将把与每个总线路由关联的几何图形转换成XML结构。
如果你现在添加一个检查器并运行工作区,每个特性都会有一个额外的几何属性,看起来像这样:
<?XML版本= “1.0” 编码= “US_ASCII” 独立= “否”?> <几何> <多曲线> <线> <坐标X = “3097193.749875188” Y = “10035576.9999291”/> <坐标X = “3097148.4199133664”Y = “10035602.950008437”/> <坐标X = “3096944.5699273646” Y = “10035784.760012269”/> <坐标X = “3096840.9900820255” Y = “10035860.790043935”/> <坐标X = “3096824.890048608” Y = “10035902.450065598”/> 线> ....
注意<多曲线>元素,其指示由多行组成特征。
4.设置XML模板
现在您已经为最终的XML文件创建了这两个需求,我们可以使用XMLTemplater转换器将它们放在一起。当这个转换器第一次被添加到画布中时,它只有一个根输入,因此打开参数编辑器并选中子模板框并命名端口总线。
在根模板表达式中复制以下代码行:
< ?xml version = " 1.0 " encoding = " utf - 8 " ?>{fme:get-attribute("CityName")} {fme:process-features(" BusRoutes ")}
该模板声明文档为XML,并将写出在步骤1中创建的CityName属性的值。
您可以编辑此模板,以包含附加的属性数据,只要根端口正在接收该数据。
注意:Line {fme:process-features("BUSROUTES")}是一个占位符,它与我们将要创建的子模板相关联。每个总线路由将作为
在子模板表达式中添加以下代码行:
{FME:获取属性( “LINE_ID”)} LINE_ID> {FME:GET属性( “LINE_NAME”)} LINE_NAME> {FME:GET-XML属性(“_geometry”)} BusRoute>
这个子模板告诉文档在详细描述路由的几何形状之前添加总线路由ID和名称。
注意:Line {fme:get-xml-attribute("_geometry")}引入在GeometryExtractor中创建的XML几何特性。请注意,这里是一个get-xml-attribute函数,而不是通常的get-attribute函数,它告诉模板这些属性已经用XML编写好了,并且删除了除几何图形本身之外的所有内容。
注意:如果你有一个XML Schema(XSD)文件可以使用XMLSampleGenerator变压器来创建一个XML模板,可以用来作为XMLTemplater基地。
在关闭参数编辑器之前,将结果属性名更改为“text_line_data”。
5.连接数据到XML Templater
如果您还没有这样做,那么将AttributeCreator连接到根输入,将GeometryExtractor连接到BUSROUTES输入。XMLTemplater将创建一个包含整个文档的属性的特性。
6.格式化XML文件
添加一个XMLFormatter并将带有XML文本的属性更改为' text_line_data ',并对属性执行相同的操作以包含XML输出。在将数据写出来之前,我们可以使用这个转换器来清理线路和外观。
将text_line_data属性设置为带有XML文本的属性
7.添加一个文本文件编写器
XML文档现在可以导出为文本文件了。添加一个作家与以下参数:
格式 | 文本文件 |
数据集 | Busroutes.xml |
的参数…从下拉列表中将MIME类型更改为text/xml。
添加一个将MIME类型设置为Text /xml的文本文件编写器
注:在这里我们使用的是文本文件,而不是作家的XML作家,因为我们已经产生了一个单一的属性整个XML文档,使所有需要的是作家直接到这个text_line_data属性。使用数据流服务时,设置正确的MIME类型是很重要的。
8.运行工作空间
之前发布工作区到FME Server中运行的工作区,并检查在文本编辑器的输出看你有没有创造的东西。
返回到文本文件的XML
9.将工作区发布到FME服务器
发布工作区到FME Server的文件>发布到FME Server中。创建一个名为XML教程新的存储库,并确保你勾选“上传数据文件”。注册工作区只有数据流服务。
10.使用数据流服务运行工作区
打开FME Server的Web界面,并找到自己的工作区发布最后下的主页工作区。单击工作区,运行它,这将在XML流会自动返回到浏览器。或者返回到运行工作区页面,并显示在高级部分。在这里你可以找到直接URL建立一个链接直接与web服务运行这个工作空间。
直接URL示例位置在FME服务器运行工作区页面
注意:您还可以创建主题,在此基础上的数据流服务的成功或失败通知。
这个示例演示了如何将空间数据集写入GML格式,以生成您自己的XML模式,该模式可用于在web服务中传输数据。
1.使用GML reader生成工作区
写GML比写XML简单得多,因为它不需要任何格式。打开FME工作台并选择Generate Workspace。使用下表设置参数:
读者的格式 | 在Autodesk MapGuide Enterprise SDF |
读者数据集 | |
阅读器参数 | 约束>表目录> Default.BusRoutes |
作家格式 | GML(地理标记语言) |
作家数据集 | C:\ Busroutes_GML.gml |
作家坐标系统 | LL84 |
“生成工作区完成”对话框
2.运行工作区
运行工作区,然后将鼠标悬停在GML写入器上并选择Open contains文件夹图标
。请注意,通过运行这个工作区两个文件被创建 - 包含所有数据和XML架构文件的GML文件。
GML和XML Schema文件从运行工作区创建
3.更新写入器以使用模式
返回到工作区,在导航面板下右键单击BusRoutes_GML写入器并选择“Update writer…”。
在导航窗口中更新写入器
打开参数标签,并在GML版本3.1.1从更改设置以GML应用模式,然后在应用模式浏览到刚刚创建的.xsd文件。一旦作家已经成功更新您现在可以发布工作区FME Server中。
XML架构文件添加到GML作家
4.发布到FME服务器下的数据流服务
当将工作区发布到FME服务器时,将工作区注册到数据流服务,注意这一次它以红色突出显示,这意味着一个或多个参数需要用户输入才能成功转换。单击“编辑”并单击“包含要流的浏览器”旁边的椭圆,确保选中BusRoutes_GML文件。
编辑流服务属性的数据,包括GML文件作为作家流
5.从FME Server的运行工作区
返回到FME Server的Web界面,然后选择运行工作空间,或者该URL这个数据流链接到一个Web服务可以在高级部分作为流XML示例中找到。
在FME服务器中运行工作区返回的GML流片段
的一Web要素服务(WFS)是由FME Server支持的,并且能够返回具有空间几何特性的特性,如本文所述的示例。可以找到关于如何使用FME Server创建WFS服务的详细说明在这里。
或者,您可能对流式其他数据格式感兴趣,在这种情况下,本文可能会感兴趣:使用FME服务器传输GeoJSON。
本文中使用的数据来源于德克萨斯州奥斯汀市。它包含了公共领域贡献许可协议进行许可数据 - 奥斯汀市。
©2020安全亚搏在线软件公司|法律