Olá Duarte,
Os projetos em base de dados têm que ter um tratamento ligeiramente diferente. Porquê? Porque não há o mecanismo de inotify quando um projeto é alterado. Ou seja, o QGIS Server sabe, para os projetos em ficheiro, quando o mesmo é alterado. Nestes casos, o QGIS Server pode reler o projeto e atualizar a cache do projeto.
Com os projetos em base de dados o QGIS Server não é notificado quando são alterados. Por isso, uma forma de o QGIS Server reler o projeto é, como fizeste, fazer o restart ao Apache manualmente.
Eu sou fã de guardar os projetos em base de dados, em ambientes empresariais/multi-utilizador. Nestes casos, o que faço, é por um trigger na(s) tabela(s) dos projetos QGIS que me envia uma notificação sempre que um projeto é criado, alterado ou removido. Em Python, recebo essa notificação e faço as ações decorrentes de cada uma destas coisas.
O trigger em si, é simples e pode ser algo do género:
create trigger project_change_qgis_projects
after insert or delete or update on public.qgis_projects
for each row
execute procedure project_change();
A função que é executado é que envia a notificação:
CREATE OR REPLACE FUNCTION public.project_change() RETURNS trigger LANGUAGE plpgsql AS $$
declare
pname varchar;
rec record;
begin
if (TG_OP = ‘DELETE’) then
pname = old.name;
rec = old;
else
pname = new.name;
rec = new;
end if;
perform pg_notify(‘qgis’, FORMAT(‘{ “project”: “%s”, “operation”: “%s”, “database”: “%s”, “schema”: “%s”, “username”: “%s”, “when”: “%s” }’, pname, TG_OP, current_database(), current_schema(), current_user, now() ) );
return rec;
end
$$;
Depois, crio um processo que escuta as notificações ‘qgis’ e recebe os parâmetros em JSON. No mínimo podes fazer um reload do Apache e assim garantes que o projeto é relido pelo QGIS Server sempre que é alterado.
Espero que ajude.
Abraço e bom trabalho,
Jorge Gustavo
···
On 16/06/20 17:45, duartecarreira wrote:
Olá mais uma vez pessoal!
Ando aqui às voltas com o qgis server e estou muito bem impressionado!!
A dúvida é: tendo um projecto em pgsql servido pelo qgis server, estou a ver
sempre o mesmo mapa, mesmo quando altero o projecto e volto a gravar.
Parece haver aqui uma cache no meio... para ver o mapa uso o browser
diretamente, com um url getmap construído à mão. A cache do browser está
off. É enviado o header Cache-Control: no-cache.
Sabem o que se pode estar a passar? O cap doc tb não é actualizado... Posso
adicionar um layer novo, gravar o projecto, e o cap docs não o vai incluir
num request novo.
Se fizer reload ao apache (estou a usar mod_fcgi), já aparece o projecto
correctamente...
Eu li algures que o qgis ou o qgis server fazem cache do cap doc. Se o qgis
server faz isto tb, não vejo como possa ultrapassar este problema... a não
ser desistir de projectos em bd.
Abr,
Duarte
--
Sent from: [http://osgeo-org.1560.x6.nabble.com/QGIS-pt-f5128248.html](http://osgeo-org.1560.x6.nabble.com/QGIS-pt-f5128248.html)
_______________________________________________
QGIS-pt mailing list
[QGIS-pt@lists.osgeo.org](mailto:QGIS-pt@lists.osgeo.org)
[https://lists.osgeo.org/mailman/listinfo/qgis-pt](https://lists.osgeo.org/mailman/listinfo/qgis-pt)
–
Geomaster
Jorge Gustavo Rocha | Software Engineer
e: jgr@geomaster.pt | m: +351 910 333 888
g: 41.54094,-8.40490 | v: 510 906 109
a: Rua António Cândido Pinto, 67, 4715-400 Braga