Skip to content

Propuesta 1

Peter edited this page Mar 3, 2022 · 14 revisions

Cuadrícula orientada a geocódigos base32, conforme elección en curso em el formulario de votación de geocódigo (¡participar!).

Adoptamos una cobertura de 31+1 células (del nivel jerárquico L0), siendo 31 continentais e 1 celda más grande con una cuadrícula independiente para las islas.

Características de la cuadrícula de cobertura de esta propuesta

  • Sistema de referencia espacial: SRID 9377 (IGAC).

  • Caja de cuadrícula sin islas, definidas no SRID:
    xmin = 4304477; ymin = 1089833; xmax = 5685106; ymax = 2957996.

  • Características de la jerarquía y del geocódigo:

    • Relación de refinamiento: 4
      (conforme OGC es la "relación entre el número de células secundarias y las células madre").
    • Resolución del refinamento: tamaños de cuadrícula de potencias de 2. (ver tabla ilustrativa)
    • Base de la representacion numérica: opcionales base32 e base16h (ver "Hierarchical cell codes" en simulaciones).
    • Alfabeto: pendientes representantes de Colombia contestar el formulario.
  • Tamaño del lado de la celda L0: 262,144 km

  • Ilustración, por cobertura L0 con identificación secuencial decimal:

  

Las células L0 se someten a refinamiento recursivo:

L1 con 131km :

L3 con  32km:

Implementacion de la Ilustración

Implementacion en SQL PostGIS de los niveles L0 y L1.

DROP table IF EXISTS co_new_trial1_cell262km
;
CREATE TABLE co_new_trial1_L0_262km AS
 WITH grid AS ( -- Terrestrial box:
  SELECT size, (ST_SquareGrid(  size, ST_MakeEnvelope(4304477, 1089833, 5685106, 2957996, 9377)  )).*
  FROM (SELECT 262144 as size) t0
 )
  SELECT ROW_NUMBER() OVER() as gid,  geom
  FROM grid
  WHERE ST_Intersects(geom, (SELECT ST_Transform(geom,9377) FROM countries WHERE iso_a2='CO') ) 
;
DELETE FROM co_new_trial1_L0_262km WHERE gid=3   -- remove island
;
UPDATE co_new_trial1_L0_262km SET gid=n
FROM (SELECT ROW_NUMBER() OVER() AS n, gid FROM co_new_trial1_L0_262km) t
WHERE co_new_trial1_L0_262km.gid=t.gid
;
-----

DROP TABLE IF EXISTS co_new_trial1_L1_131km
;
CREATE TABLE co_new_trial1_L1_131km AS
 WITH grids AS (
   SELECT DISTINCT geom FROM (
    SELECT (ST_SquareGrid(131072,cn.geom)).*
    FROM co_new_trial1_L0_262km cn
   ) t
  )
  SELECT ROW_NUMBER() OVER() as gid, geom
  FROM grids
  WHERE ST_Intersects(geom, (SELECT ST_Transform(geom,9377) FROM countries WHERE iso_a2='CO') ) 
;

Para mas niveles, L2 y L3 por ejemplo, solo repite el mismo procedimiento:

DROP TABLE IF EXISTS co_new_trial1_L2_65km
;
CREATE TABLE co_new_trial1_L2_65km AS
 WITH grids AS (
   SELECT DISTINCT geom FROM (
    SELECT (ST_SquareGrid(65536,cn.geom)).*
    FROM co_new_trial1_L1_131km cn
   ) t
  )
  SELECT ROW_NUMBER() OVER() as gid, geom
  FROM grids
  WHERE ST_Intersects(geom, (SELECT ST_Transform(geom,9377) FROM countries WHERE iso_a2='CO') ) 
;

DROP TABLE IF EXISTS co_new_trial1_L3_32km
;
CREATE TABLE co_new_trial1_L3_32km AS
 WITH grids AS (
   SELECT DISTINCT geom FROM (
    SELECT (ST_SquareGrid(32768,cn.geom)).*
    FROM co_new_trial1_L2_65km cn
   ) t
  )
  SELECT ROW_NUMBER() OVER() as gid, geom
  FROM grids
  WHERE ST_Intersects(geom, (SELECT ST_Transform(geom,9377) FROM countries WHERE iso_a2='CO') ) 
;

Implementaciones con buena performance

Morton encode/decode:

Subgrade das ilhas

As 31 células de cobertura da Colômbia continental possuem 262,144 km de lado. A célula de cobertura Colômbia insular previsava ter mais que ~1300 km, que é a distância vertical entre a ilha mais ao norte no mar Caribe e a mais ao sul no Pacífico. Para manter a compatibilidade das células, a nova "grade insular" precisava partir de um quadrado da tabela de potencias de 2. O próximo equivale a 8x8 quadrados de 262,144 km, que é o quadrado de 2097,152 km de lado.

Item Valor
Medida do lado de uma célula de cobertura: 262144 km
Distância entre as ilhas mais distantes: ~1300000 km
Multiplos de potências de 2 do lado:
Lado vezes 2 é menor que distância: 524288 km
Lado vezes 4 é menor que distância: 1048576 km
Lado vezes 8 é maior (!) que distância: 2097152 km

O melhor encaixe que se consegue, preservando-se a compatibilidade entre tamanhos das subcéluas, é supondo uma célula de cobertura de 2097152 km para a Colômbia insular.