Obrigado pela dica Tiago, a consulta funciona muito melhor com essa dica.

Ficou assim:
*SELECT DISTINCT ON (f.ficheiro) *
*       f.ficheiro,*
*       (f.photo_datetimeoriginal - '00:03:22'::interval) - (p."time" +
'02:00:00'::interval) AS dif_ts, *
*       ST_X(p.geom) AS x, *
*       ST_Y(p.geom) AS y *
*FROM sch_forestal.fotos AS f, *
*          sch_forestal.gps_track_points AS p*
*WHERE (p."time" + '02:00:00'::interval) *
*      BETWEEN (f.photo_datetimeoriginal - '00:03:22'::interval -
'00:00:05'::interval) *
*      AND (f.photo_datetimeoriginal - '00:03:22'::interval +
'00:00:05'::interval)*
*ORDER BY f.ficheiro;*

Agora vejo que testando com diferentes margens de erro obtenho diferentes
resultados.
Nao existe uma maneira de que me devolva a diferença minima existente estre
os dois timestamps?

-- '00:00:*10*'::interval
ficheiro;dif_ts;x;y
"2012-07-17-11-13-06.jpg";"*00:00:04*";718135.21515306;4380177.22342103
"2012-07-17-11-13-15.jpg";"*-00:00:02*";717996.344046553;4380255.12938927
"2012-07-17-11-22-21.jpg";"*-00:00:04*";708842.044380715;4388544.55736434

-- '00:00:*30*'::interval
ficheiro;dif_ts;x;y
"2012-07-17-11-13-06.jpg";"*-00:00:15*";717947.652491031;4380279.53855042
"2012-07-17-11-13-15.jpg";"*-00:00:08*";717922.784056217;4380296.11437229
"2012-07-17-11-22-21.jpg";"*00:00:30*";709698.090967436;4388139.22602785

Obrigado pela ajuda,

Eloi Ribeiro
GIS Analyst
39,45º -0,40º
flavors.me/eloiribeiro


No dia 27 de Julho de 2012 19:20, Tiago Adami <[email protected]> escreveu:

> Em 27 de julho de 2012 12:50, Eloi Ribeiro <[email protected]>
> escreveu:
> > A primeira ideia era que fosse um producto cartesiano mas pensando melhor
> > poderia utilizar a data(ano-mes-dia) para restringir e acelarar um pouco
> a
> > consulta.
> >
> > Em defenitiva a ideia e encontrar o ponto com o timestamp mais proximo
> para
> > cada timestamp de cada foto.
>
> Olá Eloi,
>
> Na exatidão da matemática não há uma noção de próximo ou longínquo, as
> grandezas precisam ser definidas. Dito isto, qual seriam os seus
> limites de "próximo"?
>
> Acredito que neste caso você queira manter uma margem de erro para
> baixo e para cima para encontrar seus registros.
>
> Se você definir esta margem, poderá fazer uma consulta de todos os
> pontos que se enquadram nesta "proximidade" relativa com o predicado -
> usando como exemplo margem de erro de 02:00:00:
>
> (...)
> p.ponto_ts BETWEEN (f.foto_ts - '02:00:0'::interval) AND (f.foto_ts +
> '02:00:0'::interval)
>
> * pode ser que o código não funcione, não tenho como testar agora.
>
> --
> TIAGO J. ADAMI
> http://www.adamiworks.com
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a