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

_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-fr

Répondre à