Les requêtes SQL sont ré-empaquetées par le driver postgis de mapnik et là
je pense qu'il ne sait pas détecter que c'est dans "data" qu'il va trouver
"way".

Essaye en ajoutant un paramètre "geometry_table": "data" voire aussi
"geometry_field": "way"

Pour l'ensemble des paramètres qu'on peut passer, voir:
https://github.com/mapnik/mapnik/wiki/PostGIS

Je pense aussi qu'un && !bbox! quelque part sera peut être nécessaire pour
être sûr que la requête soit limitée à l'emprise à rendre...


Le jeu. 27 sept. 2018 à 07:45, Maël REBOUX <o...@breizhpositive.bzh> a
écrit :

> J’ai oublié de mettre la déclaration de la couche dans le projet :
>
>
>     {
>       "id": "places_admin_6",
>       "name": "places_admin_6",
>       "class": "",
>       "Datasource": {
>         "type": "postgis",
>         "host": "db.openstreetmap.local",
>         "user": "osm",
>         "password": "osm",
>         "dbname": "osm",
>         "table": "(
> SELECT DISTINCT way, COALESCE(tags -> 'name:br'::text) as name
> FROM planet_osm_point
> JOIN (
>         WITH c 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 c AS a JOIN c AS b
>         ON a.row = b.row-1 AND b.entry = 'admin_centre'
> ) x
> USING(osm_id)
>          ) AS data",
>         "key_field": "",
>         "geometry_field": "way",
>         "asynchronous_request": "true",
>         "max_async_connection": "4",
>         "simplify_geometries": "true",
>         "extent_cache": "auto",
>         "extent": "-1363990,3994624,1824475,9411676"
>       },
>       "geometry": "point",
>       "srs-name": "3857",
>       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0
> +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
>       "extent": [ -10, 34, 20, 70 ],
>       "advanced": {}
>     }
>
>
>
> Le 27 sept. 2018 à 00:10, Maël REBOUX <o...@breizhpositive.bzh> a écrit :
>
> 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
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr@openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
>
>
> _______________________________________________
> Talk-fr mailing list
> Talk-fr@openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
>


-- 
Christian Quest - OpenStreetMap France
_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à