すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:グリッドモデル

最終更新日:Sep 24, 2024

グリッドモデルは、GeoSOTから開発された個別のマルチスケール位置識別システムです。

概要

グリッドモデルを使用すると、地球空間内のさまざまなオブジェクト (地球のコアから地球の表面まで) にグローバルに一意のコードを割り当てることができます。 オブジェクトのグローバルに一意のグリッドコードを使用して、オブジェクトと同じ場所から収集されたさまざまなデータにオブジェクトを関連付けることができます。

クイックスタート

  • エクステンションを作成します。

    CREATE EXTENSION Ganos_GeomGrid with schema public CASCADE;
  • グリッドコードでテーブルを作成します。

    CREATE TABLE t_grid(id integer,  
                        geom geometry,  -- A geometry.
                        grid1 geomgrid[], -- A grid code with a precision of 1.
                        grid2 geomgrid[], -- A grid code with a precision of 2.
                        grid3 geomgrid[] -- A grid code with a precision of 3.
                       );
  • テーブルのグリッドコードを計算します。

    --Insert data into the table.
    INSERT INTO t_grid(id, geom)
    VALUES (1, ST_GeomFromText('POINT(116.31522216796875 39.910277777777778)', 4490)),
           (2, ST_GeomFromText('POINT(116.31522217796875 39.910277776777778)', 4490)),
           (3, ST_GeomFromText('POINT(116.31522217797875 39.910277776787778)', 4490)),
           (4, ST_GeomFromText('POINT(116.31522227796875 39.910277776775778)', 4490));
             
    --Create grid codes of different precision levels.
    UPDATE t_grid
    SET grid1 = ST_AsGrid(geom, 10),
        grid2 = ST_AsGrid(geom, 15),
        grid3 = ST_AsGrid(geom, 26);
  • グリッドコードにインデックスを作成します。

    --Create GIN indexes on grid codes of different precision levels.
    CREATE INDEX idx_grid_gin1
    ON t_grid
    USING GIN(grid1);
    
    CREATE INDEX idx_grid_gin2
    ON t_grid
    USING GIN(grid2);
    
    CREATE INDEX idx_grid_gin3
    ON t_grid
    USING GIN(grid3);
  • データの照会

    --Query data that resides in a grid.
    SELECT id 
    FROM t_grid
    WHERE grid2 = ARRAY[ST_GridFromText('G001310322230230')];
    
    --Query data that intersects with a grid.
    SELECT id 
    FROM t_grid
    WHERE grid3 @> ARRAY[ST_GridFromText('G00131032223023031031033223')];
    
    --Query data that intersects with more than one grid.
    SELECT id
    FROM t_grid
    WHERE grid3 && ARRAY[ST_GridFromText('G00131032223023031031211001'), 
                             ST_GridFromText('G00131032223023031031211111')];
    
    --Query data that intersects with more than one geometry in a grid.
    SELECT id 
    FROM t_grid
    WHERE grid3 && 
    ST_AsGrid(
      ST_GeomFromText('LINESTRING(116.31522216796875 39.910277777777778, 116.31522217797875 39.910277776787778)', 4490), 26);
  • 作成した拡張子を削除します。

    DROP EXTENSION Ganos_GeomGrid CASCADE;