斯潘8
斯潘4
示例工作空间.zip
问题:如何公开来自kml的特性属性
我可以在GoogleEarth的描述气球中看到属性。然而,如果我试图用KML阅读器或数据检查器读取文件,我无法查看用户属性。
我需要做什么才能将属性加载到另一个文件类型,如shapefiles(shp)?
答:我们需要使用XQueryExtractor从kml文件中获取表属性。
1。让我们看看谷歌地球上的源数据。它显示一个具有属性的表。
在Google Earth中查看的源代码kml
在文本编辑器中打开kml文件,您可以看到这个属性表嵌入在标记中,并且是用HTML编写的。
2。在您的FME工作区中,添加htmltoxhtmlconverter以将html转换为xhtml。这样可以确保标记包含有效的XHTML,并且元素正确嵌套。
HTMLToxHTMLConverter参数
三。添加XQueryExtractor。输入以下XQuery表达式以分析
声明默认元素命名空间“http://www.w3.org/1999/x html”;对于$x in/html/body/table/tr/td/table/trreturn fme:set属性($x/td[1]/text(),$x/td[2]/text())
如果您要在XQuery上查找教程,请访问W3学校.
XQueryExtractor参数
4。连接到数据检查器。
工作流管亚搏在线理系统工作流
5。在数据检查器中查看功能。
结果:属性名称和属性值在检查器中公开。
6。公开属性。如果您希望稍后在工作流中使用这些属性或将它们写入目标数据集,亚搏在线你可能需要曝光它们。这可以通过在xmlxqueryextractor之后使用attributeexposer转换器来实现。或者是xmlxqueryextractor中的expose attributes参数。
谢谢,这是个很好的例子!然而,并不是所有的KML都是这样结构良好的。在我的示例中,
像这样:
传感器阿洛斯
模式FBS8
处理器JAXA
假设需要更改XQuery表达式,但是如何呢?
如果我的描述不清楚,请找到随附的KML。对于从这个kml中提取属性的一些提示和示例,我们将不胜感激。亲切的问候,克里斯。
而不是需要特定XQuery表达式的XQueryExtractor,通常,对于HTML表,可以使用特性path='tr'尝试xmlFlatner,该特性将描述的表行展平为row.column形式的组件字段。然而,我看了一下您的KML,发现数据不是存储在HTML表中,而是存储在一个大的文本字段中。因此,必须使用文本处理来提取所需的值。我会跟进你的支持案例,进一步解释这一点。
这是一个很好的例子,但出于某种原因,它对我来说不起作用,即使我的数据结构非常相似。我发现这确实有效。
声明默认元素名称空间“http://www.w3.org/1999/xhtml”;对于在//tr中存在的$x($x/td[1]),并比较($x/td[2]/text(),“))返回fme:set属性($x/td[1]/text(),$x/td[2]/text())
/tr提取行,不管之前发生了什么,这非常方便,因此您不需要真正了解结构。
由于未知原因,where(exists())部分是必需的。我在没有WHERE子句的情况下尝试的任何操作都没有返回任何结果。compare子句删除了空参数,在我的数据中被格式化为<>我不确定这是KML标准还是我的数据集特有的。
我还发现我必须暴露我想要保留的属性,并将它们添加到目的地。这样就省去了对结果字段的理解。
希望这能帮助别人…
声明默认元素命名空间“http://www.w3.org/1999/x html”;对于$x in/html/body/table/trreturn fme:set属性($x/td[1]/text(),$x/td[2]/text())
谢谢你的例子。
我还有一个与本例格式不同的kml。我尝试过XQueryExtractor和XML扁平化器,但未能提取出属性。我想知道是否有人可以帮助我获得正确的查询,从以下XML格式中提取名称和属性:
“http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
http://www.w3.org/1999/xhtml“>
V18279201018990_.jpg版
纬度:37.424416°
经度:- 82.930091°
Roll:- 15.832788°
音高:1.726352°
标题:161.467052;
高度:二百三十
GPS周秒591967.285977;0.000
?2019安全亚搏在线软件公司|合法的