Hola José, he probado el OpenJump y me gusta más que el uDig, que al estar basado en Eclipse me va más lento, tiene fallos de renderización,etc.
Lo único que no he podido conseguir hacer es poder modificar/grabar los datos de mi Postgis directamente desde el OpenJump, puedo editarlos, pero no sé como grabarlos, ya que cuando le doy a "Guardar datos seleccionados" me da un error de SaveDatasetsPlugIn Exception:java.lang.NullPointerException Saludos. Iván. 2009/2/26 José Manuel Mira Martínez <josema.m...@gmail.com> > > > El 26 de febrero de 2009 17:02, Ivan Garcia <capisc...@gmail.com>escribió: > >> 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 >> > > Muchas gracias por la información. He realizado el cambio y ha compilado a > la primera. Ahora sólo me queda probarlo. > >> >> 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. > > > Me gusta mucho como trabaja esta utilidad. Ahora las intersecciones si que > son generadas perfectamente, sin tener que recurrir a herramientas externas > (ej. OpenJump, GRASS, ArcInfo). El resultado es muy notable, y tiene en > cuenta los pasos a distintos nivel, > no computa elementos lineales no "rutables" (ríos, barrancos, ffcc,tram). > (ej:http://www.openstreetmap.org/?lat=38.37951&lon=-0.45314&zoom=16&layers=B000FTF > ) > , asigna el coste en función de la dirección, lo mismo para el > reverse_cost, genera los x1,y1,x2,y2 sólo. Vamos, que preparado para > realizar cálculos de rutas optimas a la primera. > > Sólo le veo una mini-pega, es que desaparece la columna del tipo de vía, > que es sustituida por class_id, que viene definida en el fichero de > configuración xml (mapconfig.xml). > >> >> >> 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. > > > Sí en uDig te parece chulo, te aseguro que con OpenJump, con la opción Capa > -> Ejecutar consulta de almacén de datos -> tu query sql donde debes de > formatear la columna geometria por st_aseWkb(<tu columna geométrica>) el > resultado es sensacional. Reconozco que tengo debilidad por OpenJump, es muy > didáctico. > > En fin, que muchas gracias por la información. > > Por último, he pensado realizar un mini-manual sobre este tema y colgarlo > en la wiki de OSM para que todos tengamos un punto de partida. y mejorarlo y > ampliarlo al gusto de todos. Cuando lo tenga lo comunicaré a la comunidad. > Creo que ya sólo queda realizar salidas por internet con OpenLayer o > MapServer. > > Un saludo a todos. > > J3M > >> >> >> 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 >> >> > > _______________________________________________ > 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