Ganos支持属性查询、id查询、时空范围查询等,本文介绍数据查询的方式。

配置参数 说明
URL /index/:alias/:index/features
方法 GET
URL参数 alias=[alphanumeric]表示DS名称。index=[alphanumeric]表示index名称。q=[alphanumeric]JSON表示的查询条件。
成功信息 Code: 200 Content: GeoJSON格式的要素集合。
失败信息 Code: 400,表示需要的参数未指定Content: empty。
curl\ 
'localhost:8080/geoserver/geomesa/geojson/index/:alias/:index/features' \    --get --data-urlencode 'q=JSON格式查询条件'

HBase Ganos支持的属性查询谓词:

配置参数 说明
$lt 小于
$lte 小于等于
$gt 大于
$gte 大于等于

以下分别介绍几种常用的查询方式:

(1)属性查询HBase Ganos属性查询通过谓词运算。

示例1:查询id=0的要素。
curl \ 
'localhost:8080/geoserver/geomesa/geojson/index/my_ds/test/features' \ 
--get --data-urlencode 
'q={
    "properties.id":"0"
 }'
示例2:查询name=n1的要素。
curl \ 
'localhost:8080/geoserver/geomesa/geojson/index/my_ds/test/features' \ 
--get --data-urlencode 
'q={"properties.name":"n1"}'
示例3:查询age<30的所有要素。
curl \ 
'localhost:8080/geoserver/geomesa/geojson/index/my_ds/test/features' \ 
--get --data-urlencode 
'q={"properties.age":{"$lt":30}}'

(2)空间查询

示例1:通过外包框BBOX查询。
q={ 
    "geometry" : 
    { 
        "$bbox" : [-180, -90, 180, 90] 
    }
}
示例2:空间相交(intersection)查询。
q={
    "geometry" : {
        "$intersects" : {
            "$geometry" : { 
                "type" : "Point", 
                "coordinates" : [30, 10] 
            }
        }
     }
}
示例3:空间包含(within)查询。
q={
    "geometry" : {
        "$within" : { "$geometry" : {
            "type" : "Polygon",
            "coordinates": [ [ [0,0], [3,6], [6,1], [0,0] ] ] 
        }}
     } 
}
示例4:空间包含(contains)查询。
q={
    "geometry" : {
        "$contains" : {
            "$geometry" : { 
                "type" : "Point", 
                "coordinates" : [30, 10] 
            }
        } 
    }
}

(3)时间查询

示例1:使用$during谓词指定时间区间。
curl \
'localhost:8080/geoserver/geomesa/geojson/index/myds/test/features' \ 
--get --data-urlencode 
'q={"dtg":{"$during":"2018-01-02T08:00:00Z/2018-03-02T10:00:00Z"}}'
示例2:使用$lt(),$gt$lte和$gte。
curl \ 'localhost:8080/geoserver/geomesa/geojson/index/myds/test/features' \ 
--get --data-urlencode 
'q={"dtg":{"$lt" : "2013-01-02 00:00:00"}}'

(4)组合查询

AND:创建查询条件a=5 AND b=6。
{ "a" : 5, "b" : 6 }
OR:创建查询条件a=5 OR a=6。
{ "$or" : [ { "a" : 5 }, { "b" : 6 } ] }
示例:时空查询配合属性查询。
curl /
'http://localhost:8080/geoserver/geomesa/geojson/index/tdrive_ds/tdrive_index/featu res'
--get --data-urlencode
'q={
    "geometry":{"$bbox":[116.3383,39.8291,116.3384,39.8292]}, 
    "properties.taxi_num":"1131",
    "properties.dtg":{"$gt" : "2008-02-08T08:00:00.000+0000"}, 
    "properties.dtg":{"$lt" : "2008-02-08T12:21:16.000+0000"}
}'