-
Notifications
You must be signed in to change notification settings - Fork 0
Propuesta 1
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.

-
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
ebase16h
(ver "Hierarchical cell codes" en simulaciones). - Alfabeto: pendientes representantes de Colombia contestar el formulario.
- Relación de refinamiento:
-
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:
-
SRID inserido por
pubLib05pgis-extraSRID.sql
. -
Caja definida por Luis, implementada con
ST_MakeEnvelope(4304477, 1089833, 5685106, 2957996, 9377)
. -
Cobertura de evaluación: según algoritmo ST_SquareGrid, parametrizado por tamaño de 262144 metros.
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') )
;
Morton encode/decode:
- Go lang https://mmcloughlin.com/posts/geohash-assembly
- C++ lang https://github.com/Forceflow/libmorton
- ...
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.