span8
span4
对于这篇文章的最新版本,请参阅SQLCreator和SQLExecutor转换器教程。
如何使用SQLExecutor向FME中的PostGIS数据库发出命令?
FME有一个SQLExecutor转换器,可用于在工作空间内对数据库执行查询。这个转换器不支持几何图形,但是您可以使用@Value()函数在查询中使用非空间属性。例如,SELECT * FROM表,其中'@Value(fme_name)'这样的名称将用特性上的fme_name属性的值替换@Value(fme_name)。
我们可以利用PostGIS和FME中的OGC WKT几何支持来执行PostGIS中的空间查询。
我们可以使用GeometryExtractor以OGC众所周知的文本(OGC WKT)格式创建新属性,其中包含该特性的几何图形。这是一种简单的标准化格式,用于将几何图形表示为易于读取的文本字符串,例如POINT(0 0)。
我们可以使用带有@Value fme函数的SQLExecutor将几何图形传递到PostGIS。类似于GeometryFromText('@Value(_geometryAsText)',SRID)的东西将在PostGIS中创建一个基于先前提取的WKT几何图形的几何图形。
注意参数中的“SRID”。这将需要替换为用于fme几何坐标系统的PostGIS空间参考ID。这可以硬编码到您的查询中,或者如果您使用PostGIS和FME中的相同坐标系统,您可以通过表LIMIT 1中的SELECT SRID (geom_column)自动设置SRID。这将从第一条记录返回srid。
SQLExecutor中的查询结果作为fme列表返回。如果需要返回几何图形,可以在SELECT语句中使用asText(geom_column)来返回结果几何图形的OGC WKT表示。
如果您的查询返回一个几何图形,并且您希望在fme中使用该几何图形,那么您可以使用GeometryReplacer从PostGIS的WKT字符串创建一个fme几何图形。只需将几何编码设置为OGC众所周知的文本,并选择包含WKT的属性。这将用WKT替换该特性的任何几何形状。
如果您的查询返回多条记录来为每条记录创建特性,那么您可以使用listder来处理SQLExecutor的结果。或者,你可以,如果你想与查询的结果来代替FME要素的几何从列表中只提取单个记录。
所附的工作区表明从各FME特征的一组距离内产生从所有的几何形状的新功能。搜索半径是通过发布的参数设定,并且运行工作区时是可以改变的。我也重新投影在ST_DWithin几何从LL84到UTM,使我能够使用米作为单位,我的搜索半径。
如果有人需要这个工作区的新版本(PostGIS的已前置ST_许多它的功能),我有一个。我会在这里很快发布。我也创造了一些样本数据来检验反对。这是一个非常简单的例子,但在情感展示了如何使用SQL的FME工作台内。
©2019安全亚搏在线软件公司法律