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

Répondre à