[Gvsig_desarrolladores] Posiciones en tiempo real

Francisco Puga fpuga en icarto.es
Jue Mar 2 09:26:09 CET 2017


Si se puede asumir como hipótesis que tienes una base de datos postgresql y
que los datos se irán actualizando en ella, no tienes necesidad de
programar nada a nivel gvSIG. A no ser que quieras algo un poco más
especial. Una opción sencilla de montarlo sería:

*Tabla base*

Una tabla donde una aplicación extenerna insertaría los datos. El valor de
"name" se usa para diferenciar distintas fuentes, por ejemplo dos coches
distintos. Y el default en la columna t hace que tengamos el instante en el
que se insertó el dato.

create table real_time (gid serial primary key, name text, geom
geometry(point, 4326), t timestamp default now());

*Vista auto-actualizada*

Creamos una vista donde para cada "name" distinto estará únicamente el
último insertado

create view real_time view as select DISTINCT ON (name) gid, name, geom, t
from real_time order by t;

*gvSIG*

Cargamos la vista real_time_view como si fuera una simple capa de gvSIG.
Cuando cambien los dato por debajo la capa debería actualizarse
automáticamente. Si no, en plan cutre, puedes usar el botón de reload o
abrir y cerrar la edición que suelen forzar una recarga de los datos, o
incluso hacer pan a otra zona y volver.

*Como prueba*

Como prueba. Crea la tabla y la vista en la base de datos. Abre gvSIG y
carga la vista. Inserta puntos poco a poco en la base de datos y mira como
cambian.

insert into real_time (name, geom) values ('coche 1',
st_setsrid(st_makepoint(-1, 38), 4326));
insert into real_time (name, geom) values ('coche 2',
st_setsrid(st_makepoint(-2, 39), 4326));

insert into real_time (name, geom) values ('coche 1',
st_setsrid(st_makepoint(-1, 39), 4326));
insert into real_time (name, geom) values ('coche 2',
st_setsrid(st_makepoint(-2, 40), 4326));

insert into real_time (name, geom) values ('coche 1',
st_setsrid(st_makepoint(-1, 40), 4326));
insert into real_time (name, geom) values ('coche 2',
st_setsrid(st_makepoint(-2, 41), 4326));


Si necesitas algo más complejo seguramente con un servicio en la nube tipo
firebase o servicios push-sub, lo puedes conseguir. O bien lo que dices tu
mediante scripting.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170302/3b9a78a4/attachment.html>


Más información sobre la lista de distribución gvSIG_desarrolladores