PointおよびLineStringの地理空間クエリー

PointおよびLineStringの地理空間クエリーの実行方法。

PointおよびLineStringの地理空間クエリーを実行します。

地理空間カラムを使用したCQLテーブルの作成

地理空間フィールド型については、テーブルを作成または変更するときに単一引用符でデータ型名を囲みます。例を次に示します。
CREATE TABLE test (
id text PRIMARY KEY, 
point 'PointType', 
linestring 'LineStringType');

検索インデックスの作成

基本的な検索インデックスを作成します。地理空間型は作成したインデックスに含められ、SpatialRecursivePrefixTreeFieldTypeとしてインデックスが作成され、PolygonTypeに対して寛大なモードが不要になります。

地理空間データの挿入または更新

データベースでデータを挿入または更新するには、INSERTまたはUPDATEコマンドでgeo型を指定します。例を次に示します。
INSERT INTO test (id, point, linestring) 
VALUES ('1', 'POINT(5 50)', 'LINESTRING (30 10, 10 30, 40 40)' );
INSERT INTO test (id, point, linestring) 
VALUES ('2', 'POINT(100 100)', 'LINESTRING (50 20, 20 40, 50 50)' );

地理空間データのクエリー実行

ポイント(4, 49)から10単位半径内のポイントを検索します。
SELECT * FROM test 
WHERE solr_query= '{ "q":"*:*", "fq":"point:\"IsWithin(BUFFER(POINT(4.0 49.0), 10.0))\"" }';
id | linestring                                   | point            | solr_query
----+----------------------------------------------+------------------+------------
  1 | LINESTRING (30.0 10.0, 10.0 30.0, 40.0 40.0) | POINT (5.0 50.0) |       null

(1 rows)
ポイント(10, 30)を含むラインストリングを検索します。
SELECT * FROM test WHERE solr_query='linestring:"Intersects(POINT(10 30))"';
id | linestring                                   | point            | solr_query
----+----------------------------------------------+------------------+------------
  1 | LINESTRING (30.0 10.0, 10.0 30.0, 40.0 40.0) | POINT (5.0 50.0) |       null

(1 rows)
ラインストリング上のすべてのポイントを検索し、ヒートマップを返します。
SELECT * FROM test 
WHERE solr_query='{"q":"id:*", "facet": {"heatmap": "point"}}';
facet_heatmaps
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
    "point":{
        "gridLevel":4,
        "columns":16,
        "rows":16,
        "minX":-1000.0,
        "maxX":1000.0,
        "minY":-1000.0,
        "maxY":1000.0,
        "counts_ints2D":[
            null,
            null,
            null,
            [0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
            null,
            [0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
            [0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],
            [0,0,0,0,0,0,0,0,7,3,0,0,0,0,0,0],
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null
        ]
    }
}
以下のパラメータの完全なリストを参照してください。 https://lucene.apache.org/solr/guide/6_6/spatial-search.html#SpatialSearch-HeatmapFaceting.
地理空間型のPolygonsとMultiPolygonsのインデックス作成およびクエリーの方法の詳細については、チュートリアルを参照してください。