西班牙
斯潘4
FeatureReader、SpatialRelator和SpatialFilter Transformers是在Workbench中对数据库执行通用空间查询的好工具。它们允许您快速选择查询参数,而无需为特定于数据库的sql的语法操心。但是,如果您在非常大的数据集上执行空间查询,并且不害怕编写一点sql,那么使用sqlexecutor transformer中的本机sql语句实现空间查询的性能提高可能会使您受益匪浅。
注意:虽然这个示例主要关注PostGIS格式,但它也适用于其他数据库格式。
spatialqueries-sqlexecutor.fmwt
提取一段邻域多边形数据作为空间查询的边界框。边界框的几何图形被提取为ogc已知文本,并创建sql语句。此空间sql查询应用于postgis数据库中存储的邮政地址数据,并使用数据检查器查看结果。
完成本机空间查询工作区
下载spatialquerys-sqlexecutor.fmwt是完整的工作区。如果您想自己创建工作区,请下载vancouverneighborhoods.kml并按照以下步骤创建它。
1.源数据
选择reader>addreader并输入kml作为格式。导航到vancouverneighborhoods.kml数据集并选择它。
2.Reproject
源数据必须与数据库数据在同一坐标系中。添加一个csmapreprojector,将源坐标系保留为
3.提取边界框
提取要由函数中的st_使用的边界框。在本例中,其中一个邻居Fairview用作边界框。
4.几何编码
对于空间查询,以数据库友好格式存储几何图形非常重要。这意味着需要以适合所使用的数据库格式的方式构造几何体。例如,对于postgis数据库,ogc已知文本(wkt)适用于几何空间查询。在下面的示例工作区图像中,几何图形在传递到SQLExecutor之前,已经用几何图形提取器转换为OGC众所周知的文本(WKT)格式。
请添加几何提取器,将几何编码设置为OGC著名的文本及OGC版本(只适用于WKT/WKB)至1.2。这将把几何图形编码到适合数据库的结构中。
设置几何编码和OGC版本(仅限WKT/WKB)
5.添加一个SQL执行器转换器
在workbench中,需要将希望在空间查询中使用的基本特性连接到SQLExecutor transformer的输入端口。请将GeometryExtractor输出端口连接到SQLExecutor的输入端口。
在SQLExecutor transformer的parameters对话框中,用您希望查询的数据库的格式和连接细节填写“Reader”部分参数。
请输入以下PostGIS连接细节:
6.编写一个原生SQL语句
各种数据库在所需的空间查询语法上略有不同。最好的入门方法是阅读您正在使用的空间数据库提供的文档。
在SQLExecutor中,在“Parameters”部分下,单击旁边的3个点SQL语句参数,这将打开一个文本编辑器,允许您编写SQL语句。请输入以下SQL作为SQL语句。这条SQL语句根据工作台中创建的边界框的几何形状从PostGIS数据库查询特性:
从fmedata2015中选择*。"PostalAddress" as ap WHERE ST_Within(ap.geom,ST_GeomFromText('@Value(_geometry)',26910))=TRUE
查询返回“PostalAddress”表的行,其中ST_Within函数评估为true。
ST_Within函数有两个参数:
(1)第一个是数据库表中候选特性的几何列(ap.geom)的名称
(2)第二个是ST_GeomFromText函数生成的基本几何图形,它本身有两个参数:输入边界框特性的WKT几何图形属性的值和一个空间引用ID (SRID)。
请在数据检查器中检查输出。当查询的结果连同边界框一起发送到检查器时,我们可以看到SQLExecutor只返回框内的点特性。
以Fairview邻居为背景的SQLExecutor空间查询的结果
变压器 | CPU | 峰值内存 |
SQLExecutor | 7.9秒 | 14.0 MB |
限幅器 | 11.2秒 | 17.3 MB |
FeatureReader | 8.0秒 | 13.3 MB |
SpatialFilter | 11.6秒 | 15.9 MB |
?2019安全亚搏在线软件公司|合法的