<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
hi!
<blockquote
cite="mid:1dc5fb1f0902260118n6b5505ev87040ba893a8ef3e@mail.gmail.com"
type="cite">Hola a todos,<br>
<br>
<div class="gmail_quote">El 26 de febrero de 2009 0:16, Ivan Garcia <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:capiscuas@gmail.com" target="_blank">capiscuas@gmail.com</a>></span>
escribió:<br>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hola
José, dices que has probado el programa osm2pgsql y tiene ciertas
limitaciones,</blockquote>
<div><br>
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.<br>
Para routing necesitas:<br>
- nodos de inicio de linea y fin de línea en las intersecciones de calle<br>
- 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)<br>
- 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.<br>
</div>
</div>
</blockquote>
yo creo que se podría trabajar con dos tablas (o grupos de ficheros <span
class="moz-smiley-s5"><span> :-D </span></span>):<br>
- una de callejero<br>
- una de geometria.<br>
<br>
se puede pasar de una a otra por un identificador entre ambas.<br>
Los puntos caracteristicos como hoteles los pondría en una tabla (o
grupo de ficheros) solo para eso con sus coordenadas. Al buscar un
hotel tienes unas coordenadas que te podrian llevar al callejero.<br>
<br>
<blockquote
cite="mid:1dc5fb1f0902260118n6b5505ev87040ba893a8ef3e@mail.gmail.com"
type="cite">
<div class="gmail_quote">
<div>- 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.<br>
- 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.<br>
</div>
</div>
</blockquote>
<span class="moz-smiley-s5"><span> :-D </span></span><br>
<blockquote
cite="mid:1dc5fb1f0902260118n6b5505ev87040ba893a8ef3e@mail.gmail.com"
type="cite">
<div class="gmail_quote">
<div><br>
<br>
</div>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
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? <br>
</blockquote>
<div><br>
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.<br>
</div>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
Si es así, nos puedes ponder algunos pasitos de como hacerlo? </blockquote>
<div><br>
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.<br>
<br>
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.<br>
2. aplicar osm2pgsql para generar la geodatabase. Nota: PostGIS debe de
estas instalado previamente en la base de datos a utilizar<br>
3. normalizar la tabla <nombre>_lines:<br>
<ul>
<li>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.<br>
</li>
<li>opcionalmente:convertir oneway en un booleano, y poner true o
yes a "true", y false o null a "false"<br>
</li>
<li>crear columnas: source, target, cost, reverse_cost, x1, y1, x2,
y2</li>
</ul>
4. En OpenJump cargo la tabla de PostGIS y creo el grafo: Herramientas
-> Edición geométrica -> Convertir -> Crear grafo<br>
Creará 4 tablas, y me las llevo a PostGIS<br>
5. En Postgres con todas esas tablas realizo los SQL necesarios (join,
updates, create table, etc) para tenerlo todo en una sólo tabla.<br>
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¡)<br>
</div>
</div>
</blockquote>
Esto es codigo c#, Java del Método de Vincenty:<br>
<a
href="http://www.gavaghan.org/blog/free-source-code/geodesy-library-vincentys-formula/">http://www.gavaghan.org/blog/free-source-code/geodesy-library-vincentys-formula/</a><br>
<a
href="http://www.gavaghan.org/blog/free-source-code/geodesy-library-vincentys-formula-java/">http://www.gavaghan.org/blog/free-source-code/geodesy-library-vincentys-formula-java/</a><br>
Yo tendría cacheadas las distancias previamente en la tabla.<br>
No el codigo de java no lo he probado pero se podría ver muy facil que
esta bien.<br>
<br>
Saludos.<br>
<br>
</body>
</html>