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:
DROP TABLE planet_maxspeed; CREATE TABLE planet_maxspeed AS SELECT osm_id, way, maxspeed FROM planet_osm_roads WHERE maxspeed IS NOT NULL AND highway IS NOT NULL; CREATE INDEX planet_maxspeed_index ON planet_maxspeed USING gist (way); CREATE OR REPLACE FUNCTION trigger_maxspeed_insert() RETURNS trigger AS $trigger_maxspeed_insert$ BEGIN -- Check that empname and salary are given IF (OLD.highway IS NULL OR OLD.maxspeed IS NULL) AND NEW.maxspeed IS NOT NULL AND NEW.highway IS NOT NULL THEN INSERT INTO "planet_maxspeed" SELECT NEW.osm_id, NEW.maxspeed, NEW.way; RETURN NULL; END IF; IF OLD.highway IS NOT NULL AND OLD.maxspeed IS NOT NULL AND (NEW.maxspeed IS NULL OR NEW.highway IS NOT NULL) THEN DELETE FROM "planet_maxspeed" WHERE osm_id = OLD.osm_id; RETURN NULL; END IF; IF (OLD.maxspeed <> NEW.maxspeed OR OLD.osm_id <> NEW.osm_id OR OLD.way <> NEW.way) AND NEW.highway IS NOT NULL THEN UPDATE "planet_maxspeed" SET osm_id = NEW.osm_id, maxspeed=NEW.maxspeed, way=NEW.way WHERE osm_id = OLD.osm_id; END IF; RETURN NULL; END; $trigger_maxspeed_insert$ LANGUAGE plpgsql; CREATE TRIGGER trigger_maxspeed_insert AFTER INSERT OR UPDATE OR DELETE ON planet_osm_roads FOR EACH ROW EXECUTE PROCEDURE trigger_maxspeed_insert(); Le 19 juin 09 à 22:22, Emilie Laffray a écrit : > Yann Coupin wrote: >> Bon un mea-culpa est de rigueur on dirait. Je pense que mon petit >> cerveau a dû confondre vues, tables héritées et index sur les >> fonctions. Bon je crois que comme le disait Emilie dans un mail >> ultérieur à cette réponse la solution est une seconde table mise à >> jour par des trigger. Ça ralentira un peu les màj mais ça devrait >> grandement améliorer le rendu. Après, je ne sais pas si les trigger >> vont survivre à un import complet d'osm2pgsql lorsqu'il va recréer >> les >> tables "from scratch". >> > C'est pour ça que tu crées toujours un backup de tes scripts de > création > afin de les réimporter facilement :) > Tous les scripts de création de mes base de données (table, index, > trigger, etc...) sont toujours sauvegardés quelque part. Comme ça, je > suis sure de pouvoir tout restaurer facilement. > > Emilie Laffray > > _______________________________________________ > Talk-fr mailing list > Talk-fr@openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-fr _______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-fr