osm-codes / CO_new

Colombian Hierarchical Grid
Apache License 2.0
0 stars 0 forks source link

Cobertura L0 em células 512 kim #21

Open 0e1 opened 1 year ago

0e1 commented 1 year ago

Considerando apenas parte continental:

Imagem mostrando grid, com células que compõem a cobertura em 512 kim sendo destacadas. A referencia do canto inferior esquerdo é 4200000,970000:

co_grid

Imagem mostrando a cobertura L0 exibindo o código da célula em base16h. A ordem atribuída foi de cima para baixo e da esquerda para direita:

co_grid2

Imagem mostrando as distâncias mínimas e aproximadas entre a jurisdição e os lados mais externos das células que compõem a cobertura:

co_grid3

O código utilizado para gerar view foi:

DROP SCHEMA IF EXISTS newgridco CASCADE;
CREATE SCHEMA newgridco;

DROP VIEW newgridco.jurisd;
CREATE VIEW newgridco.jurisd AS
SELECT *
FROM optim.vw01full_jurisdiction_geom g
WHERE isolabel_ext = 'CO'
;

-- matriz retangular com 3 colunas e 4 linhas.
-- referencia: canto inferior esquerdo,
-- nível: l0 524288 metros
DROP VIEW IF EXISTS newgridco.grid_co CASCADE;
CREATE VIEW newgridco.grid_co AS
  SELECT lpad((j*10+i)::text,2,'0') AS ij,
         (j*10+i) AS ij_int,
        osmc.ij_to_geom(i,j,4200000,970000,524288,9377) as geom
  FROM generate_series(0,3) as j, generate_series(0,2) as i
;

DROP VIEW IF EXISTS newgridco.L0cover_cell512km_new;
CREATE VIEW newgridco.L0cover_cell512km_new AS
SELECT gid,
       ij,
       ij_int,
       lower(vbit_to_baseh(gid::bit(4),16,0)) AS base16h,
       geom
FROM
(
  SELECT ROW_NUMBER() OVER(ORDER BY ij_int/10 DESC, ij_int%10 ASC) as gid,
         ij,
         ij_int,
         geom
  FROM newgridco.grid_co
  WHERE ST_Intersects(geom, (SELECT ST_Transform(geom,9377) FROM newgridco.jurisd WHERE isolabel_ext='CO') )
) r
;

As imagens foram geradas a partir do software QGIS. Este pequeno guia mostra como visualizar no QGIS um POSTGIS remoto. O schema utilizado para gerar essa nova cobertura foi newgridco na base dl03t_main.

Issues e wiki's relacionadas ao assunto:

0e1 commented 1 year ago

Considerando ilhas + parte continental:

Imagem mostrando grid, com células que compõem a cobertura em 512 kim sendo destacadas. A referencia do canto inferior esquerdo é 3700000,970000:

n1

Imagem mostrando a cobertura L0 exibindo o código da célula em base16h. A ordem atribuída foi de cima para baixo e da esquerda para direita:

n2

Imagem mostrando as distâncias mínimas e aproximadas entre a jurisdição e os lados mais externos das células que compõem a cobertura:

n3

O código utilizado para gerar view foi:

-- matriz retangular com 4 colunas e 5 linhas.
-- referencia: canto inferior esquerdo,
-- nível: l0 262144 metros
DROP VIEW IF EXISTS newgridco.ilha_grid_co CASCADE;
CREATE VIEW newgridco.ilha_grid_co AS
  SELECT lpad((j*10+i)::text,2,'0') AS ij,
         (j*10+i) AS ij_int,
        osmc.ij_to_geom(i,j,3700000,970000,524288,9377) as geom
  FROM generate_series(0,4) as j, generate_series(0,3) as i
;

DROP VIEW IF EXISTS newgridco.ilha_L0cover_cell512km_new;
CREATE VIEW newgridco.ilha_L0cover_cell512km_new AS
SELECT gid-1 AS gid,
       ij,
       ij_int,
       lower(vbit_to_baseh((gid-1)::bit(4),16,0)) AS base16h,
       geom
FROM
(
  SELECT ROW_NUMBER() OVER(ORDER BY ij_int/10 DESC, ij_int%10 ASC) as gid,
         ij,
         ij_int,
         geom
  FROM newgridco.ilha_grid_co
  WHERE ST_Intersects(geom, (SELECT ST_Transform(geom,9377) FROM newgridco.jurisd WHERE isolabel_ext='CO') )
) r
;
0e1 commented 1 year ago

Ver https://github.com/osm-codes/CO_new/wiki/Propuesta-3.