数据库ECQL过滤读取

使用说明

数据库ECQL查询工具将使用ECQL语言对数据库中的数据进行过滤,目的是从全量数据过滤读取出部分数据参与后续的运算。数据库ECQL查询工具目前仅支持对PostGIS和Oracle Spatial数据库中的数据进行过滤。

ECQL查询语言与SQL有很强的相似性,但是ECQL查询语言能够屏蔽数据库方言,这是优于SQL语言之处,但是ECQL只支持过滤,不能像SQL那样支持复杂统计分析能力,且ECQL支持的空间函数数量少,约十几个。

该工具的查询是直接在数据库中查询,因此,可以借助数据库索引,获得较高的查询性能。

参数说明

参数名 默认值 参数释义 参数类型
连接信息 访问数据的连接信息,目前支持访问PostGIS和Oracle Spatial数据库数据。
链接信息中需要如下参数:数据类型,连接参数,数据集名字等信息。使用’—key=value’的方式给出具体的参数及值,多个值使用’ ‘空格分隔。例如:
1. 连接PostGIS数据:
—providerType=jdbc —host=127.0.0.1 —port=5432 —schema=postgres —database=orcl —user=postgres —password=uitest@001 —dbtype=postgis —dataset=DLTB
2. 连接Oracle Spatial数据:
jdbc —host=192.168.17.26 —port=1521 —schema=testosp —database=orcl —user=testosp —password=testosp —dbtype=oracle —table=SMDTV
String
过滤数据集名 过滤数据集名称,用于在查询语句中引用该数据表。 String
ECQL过滤语句 ECQL过滤语句,用于过滤满足此条件的数据内容。下文提供了ECQL基本查询语句的示例。 String
字段过滤列表 过滤结果中保留的字段列表,该参数为使用逗号分隔的字段名称,例如:field1,field2。 String

输出结果

数据库ECQL过滤读取工具的输出结果为满足查询条件的数据,数据以数据表(DataFrame)形式存储在内存中。

ECQL查询语句示例

数据库ECQL过滤读取工具,基本支持ECQL全部的查询谓词,包括:时间谓词、空间关系谓词、数学运算符、比较操作符、逻辑关系判断等,具体参见下面的表格,ECQL查询谓词对大小写不敏感,因此谓词是不区分字母大小写的;但是,表达式中的字段名称区分大小写。

  • 逻辑关系判断
查询谓词 查询语句示例
AND Pop2014<10000 AND PopUrban2014 >5000
OR DLMC =‘水田’ OR DLMC =‘果园’
NOT NOT DLMC =‘水田’
  • 比较操作
查询谓词 查询语句示例
= DLMC =‘水田’
<> DLMC<>‘水田’
< PRES<950
<= GDP_2014<=10000
> Pop_2014>10000
>= PopUrban_2014 >=5000
  • 字符串匹配
查询谓词 查询语句示例
BETWEEN AND WND BETWEEN 40 AND 50
IN DLMC IN (‘有林地’, ‘果园’, ‘灌木林地’)
LIKE QSDWMC LIKE ‘四明村%’
  • 时间谓词
查询谓词 查询语句示例
BEFORE RTime BEFORE 2011-07-27T18:00:00Z
BEFORE OR DURING RTime BEFORE OR DURING 2011-07-27T04:00:00Z/2011-07-28T22:00:00Z
DURING RTime DURING 2011-08-07T22:00:00Z/2011-08-08T16:00:00Z
DURING OR AFTER RTime DURING OR AFTER 2011-08-06T16:00:00Z/2011-08-07T22:00:00Z
AFTER RTime AFTER 2011-08-07T14:00:00Z
  • 空间关系函数
查询谓词 查询语句示例
INTERSECTS INTERSECTS(the_geom, POLYGON((103 17,103 27,119 27,119 17,103 17)))
INTERSECTS(smgeometry, SRID=4326;POLYGON((103 17,103 27,119 27,119 17,103 17)))
DISJOINT DISJOINT(the_geom, POLYGON((103 17,103 27,119 27,119 17,103 17)))
DISJOINT(geom, SRID=4326;POLYGON((103 17,103 27,119 27,119 17,103 17)))
CONTAINS CONTAINS(geom, POINT(12032117.4943 3729511.6419))
CONTAINS(the_geom, SRID=4326;POINT(102 30))
WITHIN WITHIN(thegeom, POLYGON((103 17,103 27,119 27,119 17,103 17)))
WITHIN(the
geom, SRID=4326;POLYGON((103 17,103 27,119 27,119 17,103 17)))
TOUCHES TOUCHES(the_geom, POLYGON((135 300,208 314,122 325, 135 300)))
CROSSES CROSSES(thegeom, LINESTRING(10590100.5840 4275076.8431, 12344803.5872 2804700.7155))
CROSSES(the
geom, SRID=4326;LINESTRING(103 17,103 27))
OVERLAPS OVERLAPS(thegeom, POLYGON((103 17,103 27,119 27,119 17,103 17)))
OVERLAPS(the
geom, SRID=4326;POLYGON((103 17,103 27,119 27,119 17,103 17)))
BBOX BBOX(geom,12032117.4943,2896935.9979,12924879.3294,3729511.6419)
BBOX(the_geom,103 ,17 ,119 ,27,‘EPSG:4326’)
EQUALS EQUALS (the_geom, POLYGON((158 382,208 314,122 325, 158 382)))
RELATE RELATE(smgeometry,POLYGON((116.74072 39.58649,117.68555 40.04242,118.146697 39.23492,117.12524 38.5592,116.74072 39.58649)),T****)
DWITHIN DWITHIN(geom, POINT(10590100.5840 4275076.8431),450,kilometers)
DWITHIN(the_geom, SRID=4326;POINT(102 30),450,kilometers)
BEYOND BEYOND(geom, POINT(10590100.5840 4275076.8431),450,kilometers)
BEYOND(the_geom, SRID=4326;POINT(102 30),450,kilometers)

备注说明:以上查询语句示例中所使用的字段“the_geom”、“smgeometry”、“geom”均为空间数据的几何字段,不同数据库对于空间数据存储的几何字段名称不同,所以要根据实际数据情况填写几何字段的名称。