[OSM-talk-fr] [Technic] Serveurs
sylvain letuffe
sylvain at letuffe.org
Dim 21 Juin 13:17:23 UTC 2009
Le samedi 20 juin 2009 17:37, Yann Coupin a écrit :
> Bon j'avais commencé à jouer avec mapnik et du coup j'ai voulu tester
> la création d'une table spécifique pour une surcouche, ça aide pas mal
> en fait, dans ton cas ça risque d'être encore plus intéressant. Voilà
> mon "code" SQL:
Avec un mix de ton exemple, de la doc, et l'aide de François, j'arrive à faire
marcher le tout. Le rajout lors des minutes diff est négligeable par contre
le résultat sur du temps réél ne l'est pas !
(En utilisant les géométries pré-simplifiées)
$ time ./nik2img.py -m communes.xml -i png -o c1.png -s
1000,1000 -e -5,41,9,51.5
real 0m7.226s
(sans)
time ./nik2img.py -m communes2.xml -i png -o c2.png -s
1000,1000 -e -5,41,9,51.5
real 1m49.012s
On divise par 15 le temps de calcul pour la france entière, et ça se confirme,
c'est en gros le rapport qui existe entre les tailles de données à lire. Le
rendu temps réél avec postgres c'est pour beaucoup un problème d'IO
PS a titre d'archives :
ALTER TABLE planet_osm_polygon drop column simplified_way;
ALTER TABLE planet_osm_polygon add column simplified_way GEOMETRY;
-- Add an index to the simplified column
CREATE INDEX planet_osm_polygon_simplified_way ON planet_osm_polygon USING
gist (simplified_way);
CREATE OR REPLACE FUNCTION simplify() RETURNS trigger
AS $simplify$
BEGIN
IF NEW.boundary = 'administrative' THEN
UPDATE "planet_osm_polygon" SET simplified_way=st_simplify(way,200) WHERE
osm_id = NEW.osm_id;
RAISE NOTICE 'mise a jour';
RETURN NEW;
END IF;
RAISE NOTICE 'rien';
RETURN NEW;
END;
$simplify$ LANGUAGE plpgsql;
DROP TRIGGER simplify ON planet_osm_polygon;
CREATE TRIGGER simplify AFTER INSERT ON planet_osm_polygon
FOR EACH ROW EXECUTE PROCEDURE simplify();
/*
On notera que le trigger n'est activé que lors des inserts et pas des updates
(ce que osm2pgsql ne fait de toute façon pas) car sinon, on part dans une
boucle infinie car la fonction fait elle-même un update qui déclenche le
trigger
*/
--
sly
Plus d'informations sur la liste de diffusion Talk-fr