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
