Suite

"linestringZ" tue "pgr_createTopology"


J'essaie de préparer une table postgis pour le pgrouting. Quand je cours :

SELECT pgr_createTopology('network.VEJM_BR_SL', 0,001, 'geom', 'id');

J'obtiens une erreur :

"La géométrie a une dimension Z mais pas la colonne"

Cela semble lié à la colonne "geom" étant le type "LinestringZ". Je crois que cela signifie que c'est avec les valeurs Z. j'ai essayé d'utiliserST_Force2Dcomme ça:

SELECT pgr_createTopology('network.VEJM_BR_SL', 0,001, ST_Force2D('geom'), 'id');

mais ça ne marche pas. Aucune suggestion?


Malheureusement, ce paramètre doit être un nom de colonne, vous ne pouvez donc pas lui appliquer de fonction car il construit un SQL en interne. Si vous n'avez pas besoin que votre colonne ait un Z, alors je vous suggère de changer votre table.

Par

a) mettre à jour la colonne existante en utilisant

ALTER TABLE network.VEJM_BR_SL ALTER COLUMN geom TYPE geom(LINESTRING,4326) USING ST_Force2D(geom) ;

ou alors

b) Ajouter une nouvelle colonne 2D

ALTER TABLE network.VEJM_BR_SL ADD COLUMN geom_2d geometry(LINESTRING,4326); UPDATE network.VEJM_BR_SL SET geom_2d = ST_Force2D(geom);

Je devrais également ajouter que si vos tableaux sont des noms de casse mixtes, pas tous en minuscules, vous devriez probablement les changer en minuscules pour vous éviter d'avoir à toujours les citer "".

Pour ce qui précède, j'ai supposé que votre srid est 4326 - remplacez-le par le vôtre actuellement.

Si vous optez pour le plan b, transmettez 'geom_2d' pour le nom de la colonne.


SELECT pgr_createTopology('network.VEJM_BR_SL', 0,001, ST_Force2D(geom), 'id');

Essayez d'exécuter la requête sans guillemetsgéom.