#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
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
Hors ligne
#4 Tue 08 May 2012 15:01
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
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
raphaël
Hors ligne
#6 Tue 08 May 2012 19:06
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
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