rsql
構文
RSQL は RESTful API のクエリー言語です。 URI に適した構文を使用しており、安全でない文字はないため、 URL のエンコードは必要ありません。 一部の論理演算子および比較演算子をサポートしており、カスタム演算子で簡単に拡張できます。
RSQL の詳細については 、 https://github.com/jirutka/rsql-parserを参照してください。
使用可能な演算子
データ クライアント ライブラリでは、次のようなすべての標準 RSQL 演算子がサポートされています。
演算子 | 代替構文 | 意味 | 例 |
== | | 等しい | tileId==91717 |
!= | | 等しくありません | tileId!=91717 |
< | =lt= | より小さい | limit<100 または limit=lt=100 |
<= | =le= | 以下 | limit<=100 または limit=le=100 |
> | =gt= | より大きい演算子 | limit>100 または limit=gt=100 |
>= | =ge= | 以上 | limit>=100 または limit=ge=100 |
=in= | =IN= | インチ | tileId=in=(91717,91718) |
=out= | | にありません | tileId=out=(91717,91718) |
データ クライアント ライブラリでは、レイヤータイプに応じて標準or
およびand
RSQL 演算子がサポートされます ( 以下を参照 ) 。
演算子 | 意味 | 例 |
or | 論理和 | tileId==91717 or limit<100 |
and | 論理積 | tileId!=91717 and limit<100 |
さらに、データ クライアント ライブラリでは次の カスタム 演算子がサポートされています。
注 : 大文字 のカスタム 演算子を使用できますが、 RSQL ガイドでは小文字の演算子を推奨しています。
演算子 | 代替構文 | 意味 | 例 |
=inboundingbox= | =INBOUNDINGBOX= | バウンディング ボックスによって記述された領域 | =inboundingbox=(northLatitude, southLatitude, eastLongitude, westLongitude) たとえば、ミュンヘン =inboundingbox=(48.2292, 48.0417, 11.7490, 11.3771) の座標は小数度です |
=incircle= | =INCIRCLE= | 円で記述された領域 | =circle=(centerLatitude, centerLongitude, radiusInMeters) たとえば、ミュンヘン空港 =circle=(48.3536621, 11.7750279, 5000) の座標をカバーする円は、 10 進法の度数で表されます |
=inpolygon= | =INPOLYGON= | 多角形で記述された領域 | =inpolygon=(long1,lat1,long2,lat2,...) 座標は小数度で指定します |
=changes= | =CHANGES= | バージョンの範囲は、最小バージョンから最大バージョンまでです | =changes=(minVer,maxVer) 例 =changes=(100,200) |
=contains= | =CONTAINS= | フィールドにストリングが含まれているかどうかを確認します | =contains=(string) 例 =contains=(food) |
レイヤータイプごとにサポートされている演算子
データ クライアント ライブラリでは、 RSQL を使用して特定のデータのクエリまたは選択を行います。 異なるレイヤータイプに保存されているデータの構造が異なるため、レイヤータイプごとに異なる演算子をサポートします。
次の章では、レイヤータイプごとに使用可能なすべての演算子と属性について説明します。 参照しやすいように、代替案はサポートされていますが、 HERE の一覧には表示されていません。
インデックス レイヤー
サポートされる演算子 :
- すべての標準演算子
-
and
AND or
演算子 =inboundingbox=
=incircle=
=inpolygon=
サポートされている属性 :
tileId
timestamp
timewindow
注 :
timeStamp
属性または timewindow
タイプのフィールドを使用する場合、時間はエポック( 1970 年 1 月 1 日 00:00 UTC )以降の UTC ミリ秒数になります。 別のタイムゾーンでアプリケーションを実行する場合は、データのクエリまたはアップロードを行う前に、タイムスタンプが UTC に変換されていることを確認してください。 Java または Scala では、次の関数呼び出しを使用して変換を実行できます。 Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTimeInMillis()
制限事項 :
- 空間クエリによって返されるタイルの最大数は 2000 を超えることはできません。
- クエリのパフォーマンスを最適化
timewindow
するには、インデックス属性を使用します。 timestamp
と timewindow
インデックス付けの属性は、同じクエリでは使用できません。
注 : timewindow
属性は名前と期間で構成 ingestionTime
されているため、クエリーで直接使用することはできません。たとえば、名前と期間は 60 (分)などです。 この場合、クエリーではが使用 ingestionTime
されます。
例 :
tileId==91717
-
tileId=in=(91717,91718)
( これらの 2 つのパーティションを返します ) -
tileId=inboundingbox=(48.2292, 48.0417, 11.7490, 11.3771)
( レイヤー設定で定義されているズーム レベルのミュンヘンのすべてのパーティションを返します ) -
tileId=in=(FOO,BAR)
( HERE タイリングスキーマは使用しないが、スキーマを汎用的にタイリングして FOO
いるレイヤーから 2 つのパーティションを返します。パーティションの名前はおよび BAR
です) -
timestamp==1552383031000
(エポックからのミリ秒数、 2019 年 3 月 12 日 09:30:31 GMT ) -
ingestionTime>1552382100000;ingestionTime<1552385700000
( 2019 年 3 月 12 日 9 時 15 分、 2019 年 3 月 12 日 10 時 15 分未満)
インデックス レイヤーデータのクエリの詳細について は、「 Data API 開発者ガイド」の「インデックス レイヤーからデータを取得」セクションを参照してください。
バージョン付レイヤー
サポートされている属性 :
属性ごとにサポートされている演算子 :
-
mt_partition
-
mt_version
-
and
演算子
制限事項 :
- 属性
mt_partition
と mt_version
条件は and
、演算子と組み合わせることができます。 OR 演算子を使用した結合はサポートされていません。 - 最大値にすることができます 2 つの比較演算子。
-
=changes=
演算子はに mt_version
のみ適用されます。 =changes=
演算子の場合、最小バージョンは最大バージョン以下である必要があります。 最小バージョンは排他的です。 指定したバージョンが削除された場合は、既存の最も古いバージョンが使用されます。 最大バージョンが含まれています。 最小バージョンよりも大きい値にする必要があります。 -
==
を持つ演算子 mt_version
は、 LATEST
明示的に定義せずに最新バージョンを照会する特殊なキーワードを使用できます。
例 :
mt_version==100
mt_version==LATEST
mt_version=changes=(100,200)
-
mt_partition==91717
( 最新バージョンを暗黙的に使用 ) mt_partition==91717 and mt_version==100
-
mt_partition=in=(91717,91718)
( これら 2 つのパーティションの最新バージョンを返します ) -
mt_partition=inboundingbox=(48.2292, 48.0417, 11.7490, 11.3771)
( ミュンヘンのすべてのパーティションの最新バージョンを返します ) -
mt_partition=in=(FOO,BAR)
( HERE タイリングスキーマは使用していませんが、スキーマを汎用的にタイリングしているレイヤーから、 FOO
およびという名前のパーティションがあるこれら 2 つのパーティションの最新バージョンを返し BAR
ます)
ボラタイル レイヤー
サポートされている属性 :
mt_partition
mt_timestamp
属性ごとにサポートされている演算子 :
-
mt_partition
-
mt_timestamp
-
=ge=
( since
揮発性パーティションのフィルタの属性に変換 )
-
and
演算子
制限事項 :
- 属性
mt_partition
と mt_timestamp
条件は and
、演算子と組み合わせることができます。 OR 演算子を使用した結合はサポートされていません。 - 最大値にすることができます 2 つの比較演算子。
-
=ge=
演算子はに mt_timestamp
のみ適用されます。
例 :
-
mt_partition==91717
(パーティションの期限が切れている場合、パーティションは暗黙的に無視されます -
mt_partition==91717 and mt_timestamp=ge=1552383031000
(エポックからのミリ秒数、 2019 年 3 月 12 日 09:30:31 GMT ) -
mt_partition=in=(91717,91718)
( 有効期限が切れていない場合は、これらの 2 つのパーティションを戻し -
mt_partition=inboundingbox=(48.2292, 48.0417, 11.7490, 11.3771)
( 有効期限が切れていない場合は、ミュンヘンのすべてのパーティションを返します ) -
mt_timestamp=ge=1552383031000
(エポックからミリ秒後に更新されたすべてのパーティションを返します。 2019 年 3 月 12 日 09:30:31 GMT )
Interactive マップ レイヤー
サポートされている属性 :
mt_quadkeys
mt_geometry
mt_id
mt_property
mt_selection
属性ごとにサポートされている演算子 :
-
mt_quadkeys
-
mt_id
-
mt_geometry
=inboundingbox=
=inpolygon=
-
mt_selection
この属性は、オブジェクト内のプロパティの投影法を作成します。たとえば、 mt_selection==pfoo は、プロパティ foo のみを返します -
f|p.*
f.
またはで始まる任意の属性 p.
。 p.
機能のプロパティでフィールドを選択するためのもので f.
、機能のルートレベルでフィールドを選択するためのものです ==
!=
>
>=
<
<=
-
=contains=
この操作では、フィールドに文字列が含まれているかどうかが確認されます
-
and
演算子
制限事項 :
- クエリは空であるか、または 1 つ以上の
mt_quadkey
mt_id
mt_geometry
クエリを含める必要 があります。 - バウンディング ボックスまたはポリゴンは境界の内側にある必要があります。
- 経度:
[-180, 180]
- 緯度:
[-85.05112878, 85.05112878]
- バウンディング ボックスの北緯度は南緯度よりも大きい値にする必要があります。
- 削除クエリのみがサポート
mt_id
されています。 つまり、 ID によってのみオブジェクトを削除できます。
注意 : 空 の RSQL 削除 クエリによって、すべてが削除されます。
例 :
mt_quadkeys==012313
-
mt_quadkeys==012313 and f.timestamp>1552383031000
(タイムスタンプ 012313 のすべてのオブジェクトに、エポックからの経過時間がミリ秒の quadkey プロパティが設定されています。 2019 年 3 月 12 日 09:30:31 GMT ) -
mt_quadkeys=in=(012313,012312)
( これらの 2 つの四角形のキーを返します ) -
mt_geometry=inboundingbox=(48.2292, 48.0417, 11.7490, 11.3771)
( ミュンヘンのすべてのオブジェクトを返します ) -
mt_geometry=inboundingbox=(48.2292, 48.0417, 11.7490, 11.3771) and mt.selection==p.foo
( ミュンヘンのすべてのオブジェクトのプロパティ foo のみを返します ) -
mt_geometry=inboundingbox=(48.2292, 48.0417, 11.7490, 11.3771) and p.foo=contains=bar
( プロパティに foo というフィールドを持つミュンヘンのすべてのオブジェクトを返します。このフィールドには、 bar
bar 、 123bar 、 mybarfirst などの文字列が含まれています )