[Spanish] Almacenamiento y visualizacion de datos geotemporales

Iván Sánchez Ortega ivan at sanchezortega.es
Tue Mar 31 12:04:13 PDT 2015


El Martes, 31 de marzo de 2015 17:07:21 Alegre, Raquel escribió:
> [...] se me ocurrió que seria mejor hacer una entrada por recorrido de 
> barco, y que la geometría fuese una linea describiendo el recorrido, en vez 
> de guardar cada punto individualmente.Así habría muchas menos entradas, y 
> las queries serian mas rápidas (imagino).

Optimización prematura.

No soluciones un problema que todavía no tienes. Antes de ponerte a diseñar e 
implementar, haz pruebas.
 

> Un recorrido "normal" en esta base de datos tiene unos 8000 puntos, así que 
> hay 8000 entradas con los mismos datos del barco repetidos en cada entrada, 
> solo cambia el valor de la geometría y del timestamp.

Pues te creas una tabla con la info de los barcos, clave foránea a los pares 
posición-tiempo, y p'alante.

Recuerda las formas normales de BBDD, y recuerda procesar los datos para tener 
una tabla, o una vista materializada, de los datos que el cliente use en 
última instancia. A lo mejor necesitas tener una tabla (o un esquema entero) 
para datos AIS en bruto, uno intermedio donde guardas los datos logueados 
quitando aberraciones, y uno para servir datos a la interfaz. Es normal que 
con un sólo modelo de datos no puedas solucionar todos los problemas.


> [...] extensiones temporales de PostGIS, pero llevan sin actualizar anhos, 
> así que no se si son fiables, o si habra algo que la gente use normalmente 
> para este tipo de representaciones (puntos + timestamp).

Si *realmente* quieres almacenar el tiempo en la geometría, entonces puedes 
utilizar las capacidades multi-dimensionales de PostGIS. Una geometría puede 
tener dos (X,Y), tres (X,Y,Z ó X,Y,M) o cuatro (X,Y,Z,M) dimensiones para cada 
punto. Siempre puedes utilizar la M (que habitualmente se usa para una 
distancia desde un punto de origen a un punto dentro de la geometría) para 
almacenar el tiempo.

El usar la coordenada M te permite interpolar el valor a lo largo de líneas 
(se usa muuuucho para puntos kilométricos en carreteras), pero ten en cuenta 
que esto sólo te va a ser útil si tus barcos tienen velocidades y rumbos 
constantes. Necesitarás hacer un preproceso gordo si quieres usar esto, y 
recuerda que es muy posible que leaflet/openlayers trabajen con coordenada M de 
manera trivial.

( Y ponte un teclado en español, o al menos configura teclas muertas para que 
puedas componer "~" y "n" igual que compones tildes en un teclado español :-P 
)

-- 
Iván Sánchez Ortega <ivan en sanchezortega.es>


More information about the Spanish mailing list