El Miércoles, 29 de agosto de 2012, Gregorio Racero Valcárcel escribió:
> Gracias María, he estado investigando sobre lo que me comentas y la verdad
> es que veo cosas raras, mi tabla way es la siguiente : CREATE TABLE ways( 
> gid integer NOT NULL,  class_id integer,  length double precision,  "name"
> character(200),  x1 double precision,  y1 double precision,  x2 double
> precision,  y2 double precision,  reverse_cost double precision,  "rule"
> text,  to_cost double precision,  the_geom geometry,  source integer, 
> target integer,  CONSTRAINT ways_pkey PRIMARY KEY (gid),  CONSTRAINT
> enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),  CONSTRAINT
> enforce_geotype_the_geom CHECK (geometrytype(the_geom) =
> 'MULTILINESTRING'::text OR the_geom IS NULL),  CONSTRAINT
> enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326))WITH ( 
> OIDS=FALSE);ALTER TABLE ways OWNER TO postgres; -- Index: geom_idx
> -- DROP INDEX geom_idx;
> CREATE INDEX geom_idx  ON ways  USING gist  (the_geom);
> -- Index: source_idx
> -- DROP INDEX source_idx;
> CREATE INDEX source_idx  ON ways  USING btree  (source);
> -- Index: target_idx
> -- DROP INDEX target_idx;
> CREATE INDEX target_idx  ON ways  USING btree  (target);
> primero que no hay ningun atributo oneway ( no se si esto es así o no) y
> despues que en el archivo de configuracion de oms2pgrouting (mapfile.xml)
> no hay nada que haga referencia a esta tipo. Esta es la pinta de mi
> mapconfig.xml <?xml version="1.0" encoding="UTF-8"?><configuration>  <type
> name="highway" id="1">    <class name="motorway" id="101" />    <class
> name="motorway_link" id="102" />    <class name="motorway_junction"
> id="103" />    <class name="trunk" id="104" />    <class name="trunk_link"
> id="105" />        <class name="primary" id="106" />    <class
> name="primary_link" id="107" />        <class name="secondary" id="108" />
>    <class name="tertiary" id="109" />    <class name="residential"
> id="110" />    <class name="living_street" id="111" />    <class
> name="service" id="112" />    <class name="track" id="113" />    <class
> name="pedestrian" id="114" />    <class name="services" id="115" />   
> <class name="bus_guideway" id="116" />    <class name="path" id="117" />  
>  <class name="cicleway" id="118" />    <class name="footway" id="119" />  
>  <class name="bridleway" id="120" />    <class name="byway" id="121" />   
> <class name="steps" id="122" />                <class name="unclassified"
> id="100" />    <class name="road" id="100" />  </type>  <type
> name="cycleway" id="2">    <class name="lane" id="201" />    <class
> name="track" id="202" />    <class name="opposite_lane" id="203" />   
> <class name="opposite" id="204" />  </type>    <type name="tracktype"
> id="3">    <class name="grade1" id="301" />    <class name="grade2"
> id="302" />    <class name="grade3" id="303" />    <class name="grade4"
> id="304" />    <class name="grade5" id="305" />  </type>    <type
> name="junction" id="4">    <class name="roundabout" id="401" />  </type> 
> </configuration> Gracias!

Si los datos no tienen ningún atributo oneway, el algoritmo no podrá tampoco 
calcular con restricciones de dirección. 

Comprueba que en la base de datos haya atributos oneway. Si no hay ninguno, 
comprueba que los datos originales OSM tengan este atributo. Es normal que la 
gente mapee y se olvide de introducir este dato.

Si tienes localizada alguna calle concreta que sepas que esté fallando en el 
algoritmo, mirala y será más rápido.

> 
> > From: mar...@emergya.com
> > To: gregorac...@hotmail.com
> > Subject: Re: [Talk-es] osm2pgrouting oneway
> > Date: Wed, 29 Aug 2012 08:56:18 +0200
> > 
> > El Miércoles, 29 de agosto de 2012, Gregorio Racero Valcárcel escribió:
> > > Hola María, antetodo gracias por responder, en cuanto a la funcion de
> > > sql que ejecuto sobre la base de datos es la siguiente: en primer
> > > lugar utilizo esta funcion para saber cual es el tramos mas cercano.
> > > $sql = "SELECT gid, source, target, the_geom,                      
> > > distance(the_geom, GeometryFromText(                        
> > > 'POINT(".$lonlat[0]."
> > > ".$lonlat[1].")', 4326)) AS dist               FROM ".TABLE."
> > > 
> > >   WHERE the_geom && 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"; y después ejecuto
> > > $sql = "SELECT rt.gid, ST_AsGeoJSON(rt.the_geom) AS geojson,
> > > 
> > >      length(rt.the_geom) AS length, ".TABLE.".gid                         
> > > FROM
> > > 
> > > ".TABLE.",                            (SELECT gid, the_geom
> > > 
> > >     FROM shootingstar_sp(                             '".TABLE."',
> > >     
> > >                     ".$startEdge['gid'].",
> > > 
> > > ".$endEdge['gid'].",                                  0.1, 'length', 
true,
> > > true)                          ) as rt                    WHERE
> > > ".TABLE.".gid=rt.gid;"; que no tengo mal entendido es el algoritmo de
> > > Shortest Path Shooting*, Muchisimas gracias!
> > 
> > Hola Gregorio,
> > 
> > En principio parece que la función para calcular el enrutado está bien y
> > debería estar funcionando.
> > 
> > ¿Has comprobado los datos, que tengan oneway correctamente definido (a
> > veces tienen el atributo pero el valor del atributo no es el correcto)?
> > ¿Has probado con un ejemplo más sencillo no vaya a ser un bug de la
> > versión que estás usando? Es decir, meter cuatro o cinco ways en una
> > tabla y asegurarte de que tu sql funciona correctamente.
> > 
> > > > From: mar...@emergya.com
> > > > To: talk-es@openstreetmap.org
> > > > Subject: Re: [Talk-es] osm2pgrouting oneway
> > > > Date: Wed, 29 Aug 2012 08:21:43 +0200
> > > > CC: gregorac...@hotmail.com
> > > > 
> > > > El Martes, 28 de agosto de 2012, Gregorio Racero Valcárcel escribió:
> > > > > Buenas, estoy intentando montar una pequeña aplicacion con
> > > > > OpenLayers y pgrouting con la cartografía de OSM, para poder hacer
> > > > > calculos de rutas en vehiculos, he seguido los pasos del workshop
> > > > > de la página de pgrouting, todo sale bien aparentemente, hasta que
> > > > > me di cuenta de que las rutas que mostraba no tenia en cuenta la
> > > > > direccion de las calles, básicamente los pasos que seguí para
> > > > > insertar la cartografía en la base de datos, fueron: 1. me
> > > > > descargue el .osm2. instalé osm2pgrouting en mi SO (Ubuntu
> > > > > 11.10)3. ejecuté la sentencia osm2pgrouting -file
> > > > > "/home/user/Descargas/archivo.osm"   -conf
> > > > > "/usr/share/osm2pgrouting/mapconfig.xml"  -dbname nombre_bd   
> > > > > -user postgres   -clean entonces esto me crea 5 tablas nuesvas,
> > > > > classes, nodes, types, vertices_tmp y ways, y el calculo de rutas
> > > > > se centra sobre la tabla ways, pero ésta me he dado cuenta de que
> > > > > no contempla los tipos de "oneway". Esto es todo, sabe alguien
> > > > > como puedo incluir los oneway para que me proporcione una ruta que
> > > > > contemple las direcciones?? Gracias amigos!
> > > > 
> > > > Hola Gregorio,
> > > > 
> > > > ¿Cual es la función que estás utilizando para calcular la ruta? La
> > > > instrucción sql exacta.
> > > > 
> > > > Un saludo.


-- 
María Arias de Reyna Domínguez
Consultora GIS
Área de Operaciones

Emergya Consultoría 
Tfno: +34 954 51 75 77 / +34 670 41 98 62
Fax: +34 954 51 64 73 
www.emergya.com

_______________________________________________
Talk-es mailing list
Talk-es@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-es

Responder a