全部产品
Search
文档中心

AnalyticDB:Model grid

更新时间:Jul 02, 2025

Model grid adalah sistem identifikasi lokasi multi-skala diskrit yang dikembangkan dari GeoSOT.

Ikhtisar

Model grid memungkinkan pemberian kode unik global untuk berbagai objek dalam ruang bumi, mulai dari inti hingga permukaan. Kode grid unik global suatu objek dapat digunakan untuk mengaitkan objek tersebut dengan berbagai data yang dikumpulkan dari lokasi yang sama.

Pengenalan cepat

  • Buat ekstensi.

    CREATE EXTENSION Ganos_GeomGrid with schema public CASCADE;
  • Buat tabel dengan kode grid.

    CREATE TABLE t_grid(id integer,  
                        geom geometry,  -- Sebuah geometri.
                        grid1 geomgrid[], -- Kode grid dengan presisi 1.
                        grid2 geomgrid[], -- Kode grid dengan presisi 2.
                        grid3 geomgrid[] -- Kode grid dengan presisi 3.
                       );
  • Hitung kode grid tabel.

    --Masukkan data ke dalam tabel.
    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));
             
    --Buat kode grid dengan tingkat presisi yang berbeda.
    UPDATE t_grid
    SET grid1 = ST_AsGrid(geom, 10),
        grid2 = ST_AsGrid(geom, 15),
        grid3 = ST_AsGrid(geom, 26);
  • Buat indeks pada kode grid.

    --Buat indeks GIN pada kode grid dengan tingkat presisi yang berbeda.
    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);
  • Kueri data.

    --Kueri data yang berada di dalam grid.
    SELECT id 
    FROM t_grid
    WHERE grid2 = ARRAY[ST_GridFromText('G001310322230230')];
    
    --Kueri data yang berpotongan dengan grid.
    SELECT id 
    FROM t_grid
    WHERE grid3 @> ARRAY[ST_GridFromText('G00131032223023031031033223')];
    
    --Kueri data yang berpotongan dengan lebih dari satu grid.
    SELECT id
    FROM t_grid
    WHERE grid3 && ARRAY[ST_GridFromText('G00131032223023031031211001'), 
                             ST_GridFromText('G00131032223023031031211111')];
    
    --Kueri data yang berpotongan dengan lebih dari satu geometri dalam grid.
    SELECT id 
    FROM t_grid
    WHERE grid3 && 
    ST_AsGrid(
      ST_GeomFromText('LINESTRING(116.31522216796875 39.910277777777778, 116.31522217797875 39.910277776787778)', 4490), 26);
  • Hapus ekstensi yang telah dibuat.

    DROP EXTENSION Ganos_GeomGrid CASCADE;