[OSM-talk-fr] kosmtik + requête PostGIS exploitant une relation = ERROR
Maël REBOUX
osm at breizhpositive.bzh
Jeu 27 Sep 05:41:21 UTC 2018
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 <osm at 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 <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 at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20180927/fdd3ff5f/attachment.htm>
Plus d'informations sur la liste de diffusion Talk-fr