使用说明
数据库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(thegeom, 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(thegeom, SRID=4326;LINESTRING(103 17,103 27)) |
OVERLAPS | OVERLAPS(thegeom, POLYGON((103 17,103 27,119 27,119 17,103 17))) OVERLAPS(thegeom, 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”均为空间数据的几何字段,不同数据库对于空间数据存储的几何字段名称不同,所以要根据实际数据情况填写几何字段的名称。