Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 08 May 2012 12:20

r@fou
Juste Inscrit !
Date d'inscription: 8 May 2012
Messages: 6

porblème avec pgrouting

Bonjour à tous,

j'essaye d'utiliser pgrouting pour créer un graphe et j'ai deux questions :

Est-ce que c'est possible d'utiliser une géométrie de type POLYGON dans la fonction assign_vertex_id()?  Lorsque j'essaie j'obtien l'erreur suivante :


psql (9.0.3)
Type "help" for help.

bpi=# SELECT assign_vertex_id('rangee', 0.00001, 'geometrie', 'id');

NOTICE:  CREATE TABLE will create implicit sequence "vertices_tmp_id_seq" for serial column "vertices_tmp.id"
CONTEXT:  SQL statement "CREATE TABLE vertices_tmp (id serial)"
PL/pgSQL function "assign_vertex_id" line 14 at EXECUTE statement
ERROR:  query string argument of EXECUTE is null
CONTEXT:  PL/pgSQL function "assign_vertex_id" line 31 at EXECUTE statement

La table rangee est la suivante :

bpi=# \d rangee
              Table "public.rangee"
   Column    |         Type          | Modifiers
-------------+-----------------------+-----------
id          | integer               | not null
zone_id     | integer               |
geometrie   | geometry              |
description | character varying(50) |
source      | integer               |
target      | integer               |
Indexes:
    "rangee_pkey" PRIMARY KEY, btree (id)
    "rangee_spatial" gist (geometrie)
Triggers:
    rangee_geom_srid BEFORE INSERT OR UPDATE ON rangee FOR EACH ROW EXECUTE PROCEDURE geometrie_srid()

Ma deuxième question est à propos de pgrouting. Est ce que c'est possible de créer le dual d'un graohe avec pgrouting?

Merci d'avance smile

Hors ligne

 

#2 Tue 08 May 2012 14:26

r@fou
Juste Inscrit !
Date d'inscription: 8 May 2012
Messages: 6

Re: porblème avec pgrouting

Peut être que le problème est que une geometry de type POLYGON est à deux dimensions? Est ce que ça peut être la cause de l'erreur?

Hors ligne

 

#3 Tue 08 May 2012 14:50

r@fou
Juste Inscrit !
Date d'inscription: 8 May 2012
Messages: 6

Re: porblème avec pgrouting

J'ai trouvé le problème en fait ST_StartPoint ne marche qu'avec une ligne. J'ai utilisé la fonction ST_ExteriorRing pour transformer mon polygone en ligne et ça fonctionne smile

Hors ligne

 

#4 Tue 08 May 2012 15:01

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1537

Re: porblème avec pgrouting

PgRouting sert a du calcul d'itinéraire sur du réseau linéaire.
Que représentent ces polygones pour vouloir router dessus ?

Faites attention en utilisant st_exteriorRing: vous perdez les trous des polygones, si ceux-ci en ont.
Il faudrait mieux construire un réseau propre a partir de ces polygones:

st_dumpRings pour recuperer tous les contours des polygones.
st_union pour forcer la fabrication de noeud (optionnel, pgRouting fait pareil a la creation du graphe)
fabrication du graphe.

Nicolas

Hors ligne

 

#5 Tue 08 May 2012 15:26

r@fou
Juste Inscrit !
Date d'inscription: 8 May 2012
Messages: 6

Re: porblème avec pgrouting

J'ai une base de données représentant une bibliothèque contenant des étagères et je dois construire un itinéraire entre ces étagères.

Ma première idée était de constuire un graphe à partir des étagères et prendre le dual de ce graphe mais apparament  je ne peux pas utiliser pgrouting comme ça.

Je suis un peu à court d'idée il faut que je réfléchisse à ce problème.

Merci de votre aide smile

raphaël

Hors ligne

 

#6 Tue 08 May 2012 19:06

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1537

Re: porblème avec pgrouting

Si les etageres sont regulieres, il y a peut etre moyen de creer un reseau en joignant les centroids des polygones les representant.
Ou peut etre de definir un "chemin" entre les polygones ?

Le routing que vous voulez est basé sur le plus court chemin, ou il y a d'autres criteres ?

Nicolas

Hors ligne

 

#7 Wed 09 May 2012 08:36

r@fou
Juste Inscrit !
Date d'inscription: 8 May 2012
Messages: 6

Re: porblème avec pgrouting

Je considère les étagères comme étant régulière (quitte à les modfier par la suite pour les faire devenir régulière)

Je ne pense pas que définir un chemin entre les polygones soit réalisable car les étagèes doivent pouvoir être déplacées, du coup il faudrait définir ce chemin dynamiquement et compte tenu de mes connaissances je ne pense pas y arriver.

Dans un premier temps le routing sera basé sur le plus court chemin, mais à terme il faudrait qu'il y ait possibilité de définir d'autres contraites. (Cette biliothèque est située sur plusieurs niveaux et il faudrait pouvoir définir un itinéraire spécifique pour les personnes à mobilité réduite. Mais compte tenu de l'avancement de l'année scolaire je ne pense pas réaliser cette partie.)

Lorsque je génère mon graphe avec pgrouting je n'obtiens que des arcs allant d'un noeud vers lui même et je n'arrive pas à derterminer où sont stockées ces informations dans la base.

Merci encore pour votre aide.

Raphaël

Dernière modification par r@fou (Wed 09 May 2012 08:39)

Hors ligne

 

#8 Tue 15 May 2012 08:13

r@fou
Juste Inscrit !
Date d'inscription: 8 May 2012
Messages: 6

Re: porblème avec pgrouting

La solution que l'on m'a proposé est de créer une table grille dans la bd contenant des points sur toute la bd sauf sur les étagères. Ca a l'air de marché ^^

Hors ligne

 

Pied de page des forums

Powered by FluxBB