SELECT ST_GeoSOTGrid(ST_GeomFromText('POINT(116.315 39.91027777777778)', 4490), 15);
SELECT ST_GeoSOTGrid(ST_GeomFromText('POINT(116.315 39.91027777777778)', 4490));
SELECT ST_GeoSOTGrid(ST_GeomFromText('POINT(116.315 39.91027777777778 12345)', 4490), 15);
SELECT count(*) FROM UNNEST(ST_GeoSOTGridAgg(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))', 4490),
21, 15));
SELECT array_length(ST_GeoSOTGridAgg(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))', 4490),
21, 20),1);
SELECT array_length(ST_GeoSOTGrid(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))'
, 4490),21),1);
SELECT array_length(ST_GeoSOTGrid(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))'
, 4490),20),1);
SELECT st_hasz(ST_GeoSOTGrid(ST_GeomFromText('POINT(116.315 39.91027777777778 100)', 4490)));
SELECT array_length(ST_GeoSOTGrid(st_makeenvelope(115.605179,39.602211,116.782204,40.494509,4490),18),1);
SELECT array_length(ST_GeoSOTGrid(st_makeenvelope(115.605179,39.602211,116.782204,40.494509,4490),22),1);
SELECT array_length(ST_GeoSOTGridAgg(st_makeenvelope(115.605179,39.602211,116.782204,40.494509,4490),22,1),1);
SELECT array_length(ST_GeoSOTGridAgg(st_makeenvelope(115.605179,39.602211,116.782204,40.494509,4490),21,1),1);
SELECT ST_GeoSOTGridZ(12345, 15);
SELECT ST_AltitudeFromGeoSOTGridZ(6, 15);
SELECT ST_GeoSOTGridFromText('G001310322-230230');
SELECT ST_GeoSOTGridFromText('G001310322-230230', '110');
SELECT ST_AsText(UNNEST(ST_GeoSOTGrid(ST_GeomFromText('POINT(116.315 39.91027777777778)', 4490), 15)));
SELECT ST_AsText(UNNEST(ST_GeoSOTGrid(ST_GeomFromText('POINT(116.315 39.91027777777778 12345)', 4490), 15)));
SELECT ST_AsText(ST_GeomFromGeoSOTGrid('074EACB000000000000F0000'::geosotgrid));
SELECT ST_AsText(ST_GeomFromGeoSOTGrid('00B21A4984C0000000000120000F0001'::geosotgrid));
SELECT ST_AsText(UNNEST(ST_GeomFromGeoSOTGrid(ST_GeoSOTGrid(ST_GeomFromText('LINESTRING(116.315 39.91027777777778, 116.315 39.95027777777778)', 4490), 15))));
SELECT ST_AsText(UNNEST(ST_GeomFromGeoSOTGrid(ST_GeoSOTGrid(ST_GeomFromText('LINESTRING(116.315 39.91027777777778 12000, 116.315 39.95027777777778 12345)', 4490), 15))));
SELECT ST_HasZ('074EACB000000000000F0000'::geosotgrid);
SELECT ST_HasZ('00B21A4984C0000000000120000F0001'::geosotgrid);
SELECT ST_GetLevel('074EACB000000000000F0000'::geosotgrid);
SELECT ST_GetLevel('00B21A4984C0000000000120000F0001'::geosotgrid);
SELECT ST_GetLevelextremum(ST_GeoSOTGridAgg(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))', 4490), 21, 20));
SELECT ST_GetLevelextremum(ST_GeoSOTGridAgg(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))', 4490), 21, 19));
SELECT ST_GetLevelextremum(ST_GeoSOTGridAgg(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))', 4490), 21, 18));
SELECT ST_GetLevelextremum(ST_GeoSOTGridAgg(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))', 4490), 21, 1));
SELECT ST_GetLevelextremum(ST_GeoSOTGrid(ST_GeomFromText('MULTIPOLYGON (((118.35949889355601 32.809604400008496, 118.3596968618916 32.80899202183754, 118.36005349666094 32.80884561755304, 118.36015229494569 32.808626677902716, 118.36024493713795 32.80773313835468, 118.35949253782682 32.80670413084837, 118.35893288492495 32.80643149145906, 118.35751703332369 32.806579511199594, 118.35615747606215 32.8060163603961, 118.35418359442757 32.804396609811384, 118.35282058834792 32.803587297409116, 118.35244144512224 32.8035175550485, 118.35090752871746 32.8023351312754, 118.35072802536008 32.80187092749049, 118.35091050036917 32.80160357415574, 118.35142165097149 32.801358943886335, 118.35366635578647 32.80135552336618, 118.35422709418016 32.80149567982458, 118.35470444942315 32.80230636119275, 118.35545532453452 32.802615191262255, 118.35656425412338 32.80133257225893, 118.35669433503853 32.799987605568575, 118.35654785736406 32.79989209844715, 118.35726091847559 32.79896504479679, 118.35937304927371 32.798323618288386, 118.35983538405011 32.79845055675622, 118.35995818220293 32.798897115870545, 118.35918005313671 32.799819137943445, 118.35883837023526 32.800667549690495, 118.35925471580393 32.80115923666334, 118.35928027231374 32.80144182485759, 118.3590032287468 32.801715756868056, 118.35840602697569 32.80192179776719, 118.35833385597145 32.80215895070426, 118.35834077483098 32.80264669159818, 118.35878019020589 32.80293776141729, 118.35914577819572 32.802777660489134, 118.35941978011473 32.802157294376414, 118.36017094645557 32.80129915643249, 118.36016261862042 32.80115785413548, 118.35958090074342 32.800839643196376, 118.35989508324036 32.80018729345609, 118.36080400435365 32.79993518769732, 118.36148851267502 32.800148397255704, 118.361991548273 32.800115721942774, 118.36249513453646 32.79952044012142, 118.36249548189984 32.80011015001076, 118.362840008422 32.80057497170332, 118.36307405655556 32.80167398906179, 118.36340833954192 32.801722408938126, 118.36314489762128 32.8026198983897, 118.36308073989748 32.80373388338926, 118.36339701668454 32.80486181835052, 118.36388741228778 32.805765535128415, 118.3638337932425 32.806526568217286, 118.36318570790408 32.80721409672573, 118.36298784687922 32.80769134074979, 118.36190120397042 32.808175750170264, 118.36152711488313 32.80799892206737, 118.36104199655972 32.80719409713123, 118.36100342856014 32.80760130112362, 118.36123355931069 32.808266922006375, 118.36072981596779 32.80925064251398, 118.36003742358405 32.80984204416404, 118.35949889355601 32.809604400008496)))', 4490), 18));
SELECT ST_Aggregate('074EACB000000000000F0000'::geosotgrid, 9);
SELECT ST_Aggregate('00B21A4984C0000000000120000F0001'::geosotgrid, 9);
SELECT ST_GeoSOTGrid(ST_MAKEENVELOPE(1, 1, 2, 2, 4490), 15) && ST_GeoSOTGrid(ST_MAKEENVELOPE(1.5, 1.5, 2.5, 2.5, 4490), 15);
SELECT ST_GeoSOTGrid(ST_MAKEENVELOPE(1, 1, 2, 2, 4490), 15) && ST_GeoSOTGrid(ST_MAKEENVELOPE(2, 2, 2.5, 2.5,4490), 15);
SELECT ST_GeoSOTGrid(ST_MAKEENVELOPE(1, 1, 2, 2, 4490), 15) @> ST_GeoSOTGrid(ST_MAKEENVELOPE(1.2, 1.2, 1.8, 1.8,4490), 15);
SELECT ST_GeoSOTGrid(ST_MAKEENVELOPE(1.5, 1.5, 2, 2, 4490), 15) @> ST_GeoSOTGrid(ST_MAKEENVELOPE(1, 1, 2, 2,4490), 15);
SELECT ST_GeoSOTGrid(ST_MAKEENVELOPE(1.5, 1.5, 2, 2, 4490), 15) <@ ST_GeoSOTGrid(ST_MAKEENVELOPE(1, 1, 2, 2,4490), 15);
SELECT ST_GeoSOTGrid(ST_MAKEENVELOPE(1, 1, 2, 2, 4490), 15) <@ ST_GeoSOTGrid(ST_MAKEENVELOPE(1.2, 1.2, 1.8, 1.8,4490), 15);
SELECT ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0, 0, 1, 1, 4490), 15, 9) && ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0.4, 0.4, 1.4, 1.4, 4490), 15, 9);
SELECT ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0, 0, 1, 1, 4490), 9, 6) @> ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0.4, 0.4, 1.0, 0.8, 4490), 15, 9);
SELECT ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0, 0, 1, 1, 4490), 15, 9) @> ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0.4, 0.4, 0.8, 0.8, 4490), 9, 6);
SELECT ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0, 0, 1, 1, 4490), 9, 6) @> ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0.4, 0.4, 1.1, 0.8, 4490), 15, 9);
SELECT ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0, 0, 1, 1, 4490), 15, 9) @> ST_GeoSOTGridAgg(ST_MAKEENVELOPE(0.4, 0.4, 1.1, 0.8, 4490), 9, 6);
with a as (select unnest(ST_GeoSOTGrid(ST_GeomFromText('POLYGON ((115.68333333333334 39.833333333333336, 115.68333333333334 39.85, 115.7 39.85, 115.7 39.833333333333336, 115.68333333333334 39.833333333333336))',4490),18)) grid)
select count(*) from a where array [ST_GeoSOTGridFromText('G001310233-321021')]&&array[a.grid] ;
with a as (select unnest(ST_GeoSOTGridAgg(ST_GeomFromText('POLYGON ((115.68333333333334 39.833333333333336, 115.68333333333334 39.85, 115.7 39.85, 115.7 39.833333333333336, 115.68333333333334 39.833333333333336))',4490),18,16)) grid)
select count(*) from a where array [ST_GeoSOTGridFromText('G001310233-321021')]&&array[a.grid] ;
CREATE or replace function testidx_grids_15_create() returns boolean
LANGUAGE 'plpgsql' AS $$
BEGIN
create table testidx_grids_15(id serial4,grid _geosotgrid);
with a as (SELECT unnest(ST_GeoSOTGrid(st_makeenvelope(115.605179,39.602211,116.782204,40.494509,4490),15)) as foo)
insert into testidx_grids_15(grid) select array[foo] as grid from a;
create index testidx_grids_15_grididx on testidx_grids_15 using gin(grid);
create table testidx_select(id serial4,grids _geosotgrid);
insert into testidx_select(grids) SELECT ST_GeoSOTGrid(st_geomfromgeosotgrid(ST_GeoSOTGridFromText('G001310233-321021')),18) ;
insert into testidx_select(grids) SELECT array[ST_GeoSOTGridFromText('G001310233-301301')];
insert into testidx_select(grids) select array_append (grids,ST_GeoSOTGridFromText('G001310233-301401') ) from testidx_select where id=2;
return true;
END;
$$;
select testidx_grids_15_create();
select count(*) from testidx_grids_15,testidx_select a where testidx_grids_15.grid &&a.grids;