[OSM-talk-fr] kosmtik + requête PostGIS exploitant une relation = ERROR

Maël REBOUX osm at breizhpositive.bzh
Mer 26 Sep 22:10:45 UTC 2018


Bonjour tous,

Je cherche à faire apparaître sur une carte en ligne les préfectures et leur nom en breton.

La façon d’y arriver est « connue » : il faut faire une jointure entre la table planet_osm_point (qui contient le point et le nom) et la table planet_osm_rels (qui elle contient l’info admin_level).

Cela donne une requête qui s’exécute très bien en temps normal (pgAdmin ou dans une vue ou une requête d’insertion de données / create table) :

SELECT DISTINCT way, COALESCE(tags -> 'name:br'::text) as name
FROM planet_osm_point
JOIN (
        WITH numbered AS(
            SELECT row_number() OVER() AS row, entry
            FROM(
                SELECT unnest(members) AS entry
                FROM planet_osm_rels
                WHERE ARRAY['boundary','administrative']<@tags AND ARRAY['admin_level','6']<@tags) AS mylist)
        SELECT ltrim(a.entry,'n')::bigint AS osm_id
        FROM numbered AS a JOIN numbered AS b
        ON a.row = b.row-1 AND b.entry = 'admin_centre'
) x
USING(osm_id);

source : https://dba.stackexchange.com/questions/104943/osm2pgsql-select-relation-member-by-role


Mais si je mets cette requête dans une déclaration de couche pour un projet mml servi par kosmtik j’obtiens une erreur dans kosmtik :

Postgis Plugin: ERROR: relation "numbered" does not exist LINE 1: SELECT ST_SRID("way") AS srid FROM numbered WHERE "way" IS N... ^ in executeQuery Full sql was: 'SELECT ST_SRID("way") AS srid FROM numbered WHERE "way" IS NOT NULL LIMIT 1;' encountered during parsing of layer 'places_admin_6' in Layer

En loggant l’erreur dans PostgreSQL :

2018-09-26 23:24:56.797 CEST [32589] STATEMENT:  SELECT ST_SRID("way") AS srid FROM numbered WHERE "way" IS NOT NULL LIMIT 1;
2018-09-26 23:24:56.798 CEST [32590] LOG:  statement: SELECT ST_SRID("way") AS srid FROM numbered WHERE "way" IS NOT NULL LIMIT 1;
2018-09-26 23:24:56.798 CEST [32590] ERROR:  relation "numbered" does not exist at character 36

Je n’arrive pas à cerner le problème. Bien sûr si on change le nom « numbered » par autre chose, le message d’erreur fera référence à ce nouveau nom.
J’ai pas testé directement sur un serveur de tuiles mais je vois pas pourquoi ça passerait.
Si quelqu’un a une piste… 

Cdt,    Maël  evit osm-bzh












-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20180927/12b39109/attachment.htm>


Plus d'informations sur la liste de diffusion Talk-fr