Hola José, para compilar el osm2pgrouting sin problemas prueba esto
modifica en src/stdafx.h: de "#include <string>" a "#include <string.h> y dale al make Saludos, ya nos dirás como te ha ido. A mí de momento me funciona genial, he probado con el OSM de Valencia y me lo carga en la base de datos de Pgrouting (postgis) y entonces uso la función SELECT assign_vertex_id('edges', 0.0001, 'the_geom', 'gid'); para crear los vértices de las intersecciones de las vías. Después ya puedo calcular mis rutas usando DROP TABLE IF EXISTS dijsktra_result; CREATE TABLE dijsktra_result(gid int4) with oids; SELECT AddGeometryColumn('dijsktra_result', 'the_geom', '4326', 'MULTILINESTRING', 2); INSERT INTO dijsktra_result(the_geom) SELECT the_geom FROM dijkstra_sp('edges', 52, 35); Donde 52 es el vértice de inicio y 35 es el vértice de llegada, son ejemplos. Finalmente para visualizar esa ruta generado uso el uDIG para conectarme directamente a la BBDD y lo representa en colores muy chulo. Saludos. Iván. 2009/2/26 José Manuel Mira Martínez <josema.m...@gmail.com> > Hola a todos, > > El 26 de febrero de 2009 0:16, Ivan Garcia <capisc...@gmail.com> escribió: > >> Hola José, dices que has probado el programa osm2pgsql y tiene ciertas >> limitaciones, > > > Matizo la frase. Tiene ciertas limitaciones para usar osm como tablas > adecuadas para calcular rutas. Por lo demás es una estupenda herramienta > para obtener de forma más o menos ordenada los datos de osm en la > geodatabase Postgres-postgis. > Para routing necesitas: > - nodos de inicio de linea y fin de línea en las intersecciones de calle > - tener bien definido el "oneway", al menos para obtener rutas que tengan > en cuenta las direcciones, que es lo que hace el algoritmo > shortest_path_shooting_star, que a su vez nos sirve para asignarle un coste > inverso (reverse_cost) a las direcciones en un único sentido (y a las > junction/roundabout) > - opcionalmente una tabla de nodos un poco más explícita, con alias para > nodos en cristiano, para que nos pueda llevar en vez del nodo 45 al 256, del > Hotel xxxx (nodo 45) al restaurante XXXXXXXX (nodo 256), que es lo que > hacemos con los navegadores de coche. > - Por otra parte, y esto es algo que deberiamos pensar todos los 'osemeros' > , pgrouting te permite asignar costes adicionales a las intersecciones, para > indicar que no se tarda lo mismo, por ejemplo, continuar recto, que girar a > la izquierda. Yo personalmente he pensado en utilizar los pocos semáforos de > osm, pero tienen que estar ubicados en la intersección.¿creo?, pero no se > como hacer para indicarle estos pesos de giro a izq. o dcha. > - osm2pgsql genera una tabla de líneas, donde se encuentran las calles > entre otras, pero también incluye los ríos y barrancos que los usuarios > hemos puesto, y que yo sepa esto no interviene en un cálculo de rutas, a no > ser que vayas en canoa. > > > >> >> >> hace poco encontré el osm2pgrouting , pero no he tenido tiempo de >> probarlo, te sirve para aplicar las funciones de cálculo de rutas de >> pgrouting? >> > > Tienes razón, existe esta utilidad, pero he intentado compilarla en mi > distro (Ubuntu 8.10) y no he podido. Me da muchos errores de compilación. > Sin embargo, en la web de osm2pgrouting, los pasos para la compilación están > ensayados en Ubuntu 8.04, por lo que no te puedo decir que hace o como. > >> >> Si es así, nos puedes ponder algunos pasitos de como hacerlo? > > > Ya te he respondido antes. No he podido compilar la utilidad. Pero te puedo > decir lo que he hecho hasta ahora, que es bastante casero, pero al menos a > mi me funciona en un 80 % para calcular rutas. > > 1. descargar zona de osm (por ej. con josm), o si nuestro proyecto es > ambicioso todo el osm de España que existe en CloudMade o otras. > 2. aplicar osm2pgsql para generar la geodatabase. Nota: PostGIS debe de > estas instalado previamente en la base de datos a utilizar > 3. normalizar la tabla <nombre>_lines: > > - añadir índices al osm_id, o mejor, renombrarlo a gid. Si no hacemos > estos no podremos ver el resultado (mapa) en programas como Qgis que exigen > un índice en la tabla geométrica. > - opcionalmente:convertir oneway en un booleano, y poner true o yes a > "true", y false o null a "false" > - crear columnas: source, target, cost, reverse_cost, x1, y1, x2, y2 > > 4. En OpenJump cargo la tabla de PostGIS y creo el grafo: Herramientas -> > Edición geométrica -> Convertir -> Crear grafo > Creará 4 tablas, y me las llevo a PostGIS > 5. En Postgres con todas esas tablas realizo los SQL necesarios (join, > updates, create table, etc) para tenerlo todo en una sólo tabla. > 6. Como me preocupa bastante el tema del coste por direcciones lo que hago > es multiplicar por un valor (*1000) el valor del lenght de todas las filas > cuyo valor oneway sea true, y lo mismo para las roundabout. En mi caso el > length que utilizo es el de la UTM, pero, como ha dicho el compañero Martín > Vales, me calentaré el coco para utilizarlo en geográficas (¡gracias Martín > por la info¡) > 7. Luego sólo tengo que aplicar las SQL necesarias para el cálculo de > coste. Os pongo unos ejemplos: > Dijkstra (sobre nodos): > SELECT * FROM shortest_path('SELECT gid as id, source, target, coste as > cost FROM alicante',518, 3418, false, false); > A* (sobre nodos): > SELECT * FROM shortest_path_astar('SELECT gid as id, source, target, > reverse_cost AS reverse_cost, x1, y1, x2, y2 FROM alicante', 518, 3418, > false, true); > Shooting star (sobre ejes): > SELECT * FROM shortest_path_shooting_star('SELECT gid as id, source, > target, coste as cost, reverse_cost,x1,y1,x2,y2, null as rule, null as > to_cost FROM alicante order by id',2571, 2634,true,true); > > En las consultas utilizo muchos "WHERE" para evitar que el cálculo lo > realice sobre river, trail, tram, etc. > > Los resultados son satisfactorios siempre que no calcules rutas que > necesiten cruzar autovías, autopistas por el problema ya comentado que el > grafo incluye nodos en estos viales. > > Sí alguien está interesado le puedo dar la tabla que he creado ("alicante") > para realizar pruebas. > > Quiero dejar claro que estas son mis experiencias, y que en ningún momento > pretenden ser la "verdad" sobre el tema del cálculo de rutas en OSM. Ya me > gustaría a mi saberlo todo. Aquí estamos para aprender. > > Un saludo a todos > > J3M > > > >> >> Gracias. >> >> 2009/2/25 José Manuel Mira Martínez <josema.m...@gmail.com> >> >> Hola, pgrouting es una extensión para PostGIS que utiliza la librería >>> libboost (que es la que realiza el cálculo de los grafos). Es una extensión >>> que se renueva con cierta asiduidad, y lo más interesante es que propone >>> formas de publicación de cartografía con el servidor de MapServer, o bien >>> utilizando OpenLayer + MapServer, o OL+PHP. >>> El llevar la cartografía de OSM a Postgres-PostGIS es bastante sencilla, >>> puesto que existe una utilidad llamada osm2pgsql que crea cuatro tablas >>> geográficas (nodos, polígonos, líneas y otra que no me acuerdo). >>> El problema es que estas tablas carecen de información de "ruteo", por lo >>> que hay que utilizar herramientas externas, aunque la librería pgrouting >>> tiene una función para crear el grafo, ésta no sirve para los datos de OSM, >>> puesto que se necesita un nodo en cada intersección. Por ej. una calle >>> cualquiera, que tenga 3 intersecciones, sólo tiene un nodo de inicio y otro >>> final, cuando debe haber 2 tramos, cada uno con su par de nodo inicio-final. >>> Además hay que corregir muchas cosas: >>> - normalizar "oneway" >>> - asignar costes: no sirve st_length(the_geom), puesto que calcula la >>> longitud sobre la base de la SRID 4326 (geográfica), y a nosotros nos >>> interesa en metros (23030 o 25830 por ejemplo). Yo utilizo la función >>> anidada st_length(st_transform(the_geom, 23030)). >>> >>> Últimamente he hecho unos cuantos pinitos creando el grafo con OpenJump, >>> que tiene una herramienta excelente para generar intersecciones, crear nodos >>> e indexarlos. Ahora bien, intersecta todo lo que encuentra, y eso a nosotros >>> no nos interesa, por que por ejemplo no debe de generar un nodo en una ctra. >>> que va por encima de una autopista, a distintos niveles. >>> >>> En fin, este tema me apasiona, por lo que cualquier comentario será >>> agradecido. >>> >>> Un saludo a todos >>> >>> j3m >>> >>> 2009/2/25 Martín Vales <mar...@opengeomap.org> >>> >>> hi! >>>> >>>> ¿Alguien ha probado esta extension de postgis para calcular rutas con >>>> datos masivos? >>>> http://pgrouting.postlbs.org/ >>>> En las demos que ponen parece que va bien pero es muy poca cartografía. >>>> >>>> Internamente usa el famoso codigo fuente de los carteros que se comento >>>> por aqui por lo que he podido ver en lso fuentes. >>>> >>>> >>>> Un saludo. >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> Talk-es mailing list >>>> Talk-es@openstreetmap.org >>>> http://lists.openstreetmap.org/listinfo/talk-es >>>> >>> >>> >>> _______________________________________________ >>> Talk-es mailing list >>> Talk-es@openstreetmap.org >>> http://lists.openstreetmap.org/listinfo/talk-es >>> >>> >> >> _______________________________________________ >> Talk-es mailing list >> Talk-es@openstreetmap.org >> http://lists.openstreetmap.org/listinfo/talk-es >> >> > > _______________________________________________ > Talk-es mailing list > Talk-es@openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-es > >
_______________________________________________ Talk-es mailing list Talk-es@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-es