#1 Thu 18 April 2013 12:25
- Achref_geo
- Participant actif
- Date d'inscription: 19 Feb 2012
- Messages: 107
Pgrouting et SRID pour les données OSM
Salut tout le monde,
J'ai besoin de votre aide pour pouvoir résoudre mon problème, j'ai utilisé une version en Java de l'outil osm2pgrouting qui permet de travailler sous Windows, j'ai réussi à importer ma couche routière dans la base de données et je vous joint une capture d’écran de ma table "route" (remarque: j'ai minimisé la largeur de plusieurs colonnes pour pouvoir capturer la table entière).
En suivant le Workshop de pgrouting http://workshop.pgrouting.org/ , je veux maintenant à travers un script PHP (y compris des requêtes de routage) faire appel à ma couche routière pour l'afficher avec OpenLayers.
Le script PHP est le suivant:
Code PHP:
Code:
<?php // Database connection settings define("PG_DB" , "routing"); define("PG_HOST", "localhost"); define("PG_USER", "postgres"); define("PG_PORT", "5432"); define("TABLE", "route"); // Retrieve start point $start = split(' ',$_REQUEST['startpoint']); $startPoint = array($start[0], $start[1]); // Retrieve end point $end = split(' ',$_REQUEST['finalpoint']); $endPoint = array($end[0], $end[1]); ?> <?php // Find the nearest edge $startEdge = findNearestEdge($startPoint); $endEdge = findNearestEdge($endPoint); // FUNCTION findNearestEdge function findNearestEdge($lonlat) { // Connect to database $con = pg_connect("host=localhost dbname=adel user=postgres password=21952339"); $sql = "SELECT gid, source, target, geom_way, ST_Distance(geom_way, ST_GeometryFromText( 'POINT(".$lonlat[0]." ".$lonlat[1].")', 4326)) AS dist FROM ".route." WHERE geom_way && setsrid( 'BOX3D(".($lonlat[0]-0.1)." ".($lonlat[1]-0.1).", ".($lonlat[0]+0.1)." ".($lonlat[1]+0.1).")'::box3d, 4326) ORDER BY dist LIMIT 1"; $query = pg_query($con,$sql); $edge['gid'] = pg_fetch_result($query, 0, 0); $edge['source'] = pg_fetch_result($query, 0, 1); $edge['target'] = pg_fetch_result($query, 0, 2); $edge['geom_way'] = pg_fetch_result($query, 0, 3); // Close database connection pg_close($con); return $edge; } ?>
En exécutant le code j'obtient le message d'erreur suivant:
Code:
Code:
Warning: pg_query() [function.pg-query]: Query failed: ERREUR: Invalid OGC WKT (too short) in C:\OSGeo4W\apache\htdocs\web\php\pgrouting.php on line 43 Warning: pg_fetch_result(): supplied argument is not a valid PostgreSQL result resource in C:\OSGeo4W\apache\htdocs\web\php\pgrouting.php on line 45
J'ai compris qu'il s'agit d'un problème de projection et que je dois travailler avec l'EPSG : 900913, tout d'abord est ce que j'ai bien compris ??
Maintenant j'essai de changer le SRID dans la colonne "geom_way" et je n'arrive pas, voici la requête update que j'utilise:
Code:
Code:
UPDATE route SET geom_way = ST_SetSRID(geom_way, 900913);
Et voici le message d'erreur :
Code:
Code:
[WARNING ] UPDATE route SET geom_way = ST_SetSRID(geom_way, 900913) ERREUR: la nouvelle ligne viole la contrainte de vérification « route » de la relation « enforce_srid_geom_way »
j'ai posté dans Forum SIG mais je n'ai pas eu de réponse, j'espère que vous pourriez m'aider
Merci beaucoup
Hors ligne
#2 Thu 18 April 2013 14:17
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Pgrouting et SRID pour les données OSM
Bonjour,
Pour changer le srid de votre table, vous devez d'abord supprimer la contrainte sur le SRID, puis mettre a jour, puis remettre la contrainte:
Code:
alter table route drop constraint enforce_srid_geom_way; update route set geom = ... alter table route add constraint enforce_srid_geom_way (CHECK (st_srid(geom) = 900913));
Nicolas
Hors ligne
#3 Thu 18 April 2013 15:41
- Achref_geo
- Participant actif
- Date d'inscription: 19 Feb 2012
- Messages: 107
Re: Pgrouting et SRID pour les données OSM
Bonjour Nicolas et merci pour ta réponse,
J'ai fait ce qu'il faut, j'ai supprimé la contrainte sur le SRID, je l'ai mis à jour et ensuite j'ai remis la nouvelle contrainte "900913" mais ça n'a rien changé, le message d'erreur reste le même. Faut-t-il que les valeurs de x1 y1 x2 y2 changent du géographique en métriques ?? c'est ce que j'ai vu dans ce poste http://download.osgeo.org/pgrouting/for … c/251.html en comparant les deux captures de la table:
- "dbase.jpg" : avant la mise à jour du champ géométrique
et
- "dbase900913.jpg" : après mise à jour du champ géométrique
Est ce que ça peut avoir une influence ?
Merci
Dernière modification par Achref_geo (Thu 18 April 2013 15:42)
Hors ligne
#4 Fri 19 April 2013 22:19
- cherubin12
- Juste Inscrit !
- Date d'inscription: 19 Apr 2013
- Messages: 1
Re: Pgrouting et SRID pour les données OSM
salut à tous, j'ai besoin de votre aide. je suis en PFE pour la creation d'un sig pour le cadastre. et j'ai des dificukté de creer un champs media qui me peemettra d'attribuer une image sur chaque parcell.
Hors ligne