[Spanish] Almacenamiento y visualizacion de datos geotemporales

Iván Sánchez Ortega ivan at sanchezortega.es
Wed Apr 1 00:53:38 PDT 2015


El Miércoles 1. abril 2015 09.39.35 Wladimir Szczerban escribió:
> Hola Raquel,
> 
> Yo contactaría con la gente de CartoDB que han hecho cosas parecidas y que
> trabajan con gran cantidad de datos. Si no me equivoco también tienen
> fichado al Sr. PostGIS así que seguro te podrán ayudar.
> 
> Aquí puedes ver un ejemplo de lo que te digo
> http://cartodb.com/case-studies/wwi-royal-navy/

Y viendo las peticiones que hace eso por dentro se pueden sacar varias 
conclusiones. Si capturas una de las peticiones a datos te sale:

WITH 
  hgrid AS ( 
    SELECT CDB_RectangleGrid(  
      CDB_XYZ_Extent(1, 1, 2),  
      CDB_XYZ_Resolution(2) * 2,   
     CDB_XYZ_Resolution(2) * 2  
   ) as cell  ) 
 SELECT      x, y, array_agg(c) vals, array_agg(d) dates  FROM (  
   SELECT     
     round(CAST (st_xmax(hgrid.cell) AS numeric),4) x,
     round(CAST (st_ymax(hgrid.cell) AS numeric),4) y,    
     count(i.cartodb_id) c, 
     floor((date_part('epoch',date)- -1796072400)/508305) d    
   FROM   
      hgrid, ow i   
   WHERE 
      ST_Intersects(i.the_geom_webmercator, hgrid.cell)  
   GROUP BY         hgrid.cell, floor((date_part('epoch',date)- 
-1796072400)/508305) 
) f GROUP BY x, y


Lo cual te dice:
* Estos tíos de CartoDB saben escribir SQL
* Saben escribir sus propias funciones y extensiones a PostgreSQL (véase 
https://github.com/CartoDB/cartodb-postgresql/wiki )
* Tienen los datos organizados en una pirámide de tiles (por la estructura de 
las llamadas a CDB_XYZ_Extent y CDB_XYZ_Resolution, lo cual implica que
  * Esa es la BDD de explotación, donde tienen los datos desnormalizados y 
reproyectados para que el cliente tenga que pensar lo menos posible, lo cual 
implica que
    * No se envían al cliente datos innecesarios
* Filtran las cosas por celda de la pirámide, usando índices espaciales

Véase también
https://gijs.github.io/images/cartodb_datacubes.pdf

Para la visualización, D3 o algo propio con WebGL/Canvas, o mucha magia para 
leaflet/openlayers. El mostrar millones de filas con javascript y que el 
navegador no se despeine es... un arte :-)

-- 
Iván Sánchez Ortega <ivan en sanchezortega.es> <ivan en geonerd.org> 
<ivan en mazemap.no>


More information about the Spanish mailing list