si, termine haciendo algo como lo q decis usando un quadtree :)

suerte!

2012/3/4 Igor Iván Spiler <spi...@gmail.com>

> exactamente, le diste en el clavo, ahí está la mágia (y el valor agregado
> que comentaba que le doy a los datos) los "relations" referencian "nodos" y
> "ways", los "ways" referencian "NDs", los "nd" apuntan a los node. el truco
> es cómo almacenás la información que geográficamente es "cercana"
> contiguamente en el repositorio de manera de que al leer los datos de un
> determinado espacio geográfico tengas un snapshot con suficientes datos en
> un único bloque mapeado en memoria (en mi arquitectura el espacio de página
> máximo que tengo es de 4k) y sin perder información de los "ID" para poder
> actualizar con changesets y seguir reutilizando los nodos en los ways y etc.
>
> tengo 2 discos, el parser de XML lee a 120 MB/s, en el 2ndo disco
> escribo/updatea durante la importación, planet.osm pesa 287GB
> descomprimido, ~40 minutos lee XML, las otras 2 horas 20 se la pasa
> transformando de char a unsigned long/int/lo que corresponda y almacenando
> los structs (son todos fixed-size, tengo 1 solo archivo para data variable
> que comparten todos para guardar info de tags), es un lindo repositorio, la
> clave de todo está en el algoritmo de geocoding que le aplico a cada objeto
> para poder particionar los datos como te comentaba arriba, empecé usando
> c-squares pero lo modifiqué para que sea CPU/HD friendly
>
> originalmente lo había hecho en java pero mapear memoria del disco en java
> es una mentira, en C es otra historia, en recuperarme toda la información
> que necesito para dibujar un área (demarcada por geocoding, mis áreas son
> de promedio 35km2, esto varía según la latitud) le lleva 5ms (que es
> prácticamente el tiempo de acceso al disco), si el área usa más de un
> código usando "madvise" al kernel le indicás que vas a hacer acceso
> secuencial del archivo/dispositivo mapeado a memoria y al ser contiguos
> esto le indica al kernel hacer "read ahead" asique está optimizado dentro
> de lo razonable
>
> ahora estoy en generar gráficos lindos con cairo, por ahora dio resultados
> bastante buenos pero falta, quiero ver cuánto tarda en generar el área con
> anti-aliasing y etc, así como está generar estos 35km2 que te comentaba
> tardó:
>
> real    0m0.323s
> user    0m0.280s
> sys    0m0.040s
>
> 1752 x 1752 pixels
>
> esta parte gráfica no tienen ninguna optimización todavía, recién empecé a
> graficar con c++ el fin de semana pasado, este finde no le dediqué nada
> todavía, supongo que poner otro color en vez del que utiliza no va a
> afectar mucho la performance
>
> saludos!
>
>
>
> 2012/3/4 IgnacioZ <zigna...@gmail.com>
>
>> Bueno, es probable que lo cargues todo, pero no estoy seguro que este muy
>> optimizado, dado que guardarias los vecinos de los ways sin informacion de
>> latitud/longitud. Por lo que cuando quieras obtener esa informacion vas a
>> tener q buscarla en el disco por cada id de nodo. Acordate que de los nodos
>> tambien tenes q guardar lat y long...
>>
>> Si lo haces durante la carga, casi seguro q no se lo vas a poder hacer en
>> ese tiempo con ese RAM, aunque si lo haces, avisame como ya que me
>> interesaria :)
>>
>> saludos
>> Ignacio.
>>
>> 2012/3/4 Igor Iván Spiler <spi...@gmail.com>
>>
>>> Me quedo con mi propia herramienta, =) sin información de referencia
>>> concreta de la implementación es imposible hacer comparaciones.
>>>
>>> En la forma que lo estoy haciendo estoy seguro que en 3 horas cargo
>>> todos los datos de planet.osm (una vez descargado y descomprimido), aplicar
>>> un changeset me lleva no más de 1 o 2 minutos.
>>>
>>> Durante la carga inicial a una db tendría que cargar 1.383.935.462 de
>>> nodos solamente (según
>>> http://www.openstreetmap.org/stats/data_stats.html) en cualquier base
>>> de datos es un pequeño parto, por más que optimices la carga masiva
>>> eliminando las PK, después al definir la PK de la tabla tenés que dejar a
>>> la DB indexar todos esos nodos... te la regalo =) son más de 5GB solamente
>>> de datos (4 bytes el unsigned long en mi arquitectura) + el índice para la
>>> PK, para mi la única forma de que funcione con una base de datos es
>>> teniendo el hardware que tienen los muchachos de OSM tipo esto:
>>>
>>> http://wiki.openstreetmap.org/wiki/Servers/smaug
>>>
>>> de otra manera con los pobres 4gb de ram que tengo para una base de
>>> datos se la pasaría swapeando a disco, con el índice particionado y todo, y
>>> eso solo a la carga... después en el trabajo del equipo en el día a día no
>>> hay equipo que aguante
>>>
>>> capaz lo que estoy desarrollando es muy específico, cada proyecto tiene
>>> sus requerimientos no?
>>>
>>> saludos!
>>>
>>>
>>>
>>>
>>>
>>> 2012/3/4 IgnacioZ <zigna...@gmail.com>
>>>
>>>> Como t dije, algunas cosas las hice a mano :) y lo del camino mas corto
>>>> es parte de eso, mas que nada porque necesitaba mucha performance, en
>>>> grafos muy grandes.
>>>>
>>>> De cualquier manera hay un par de ejemplos en la pagina. Sino podes
>>>> unirte al grupo que el creador siempre responde y muy bien
>>>>
>>>> Saludos,
>>>> Ignacio.
>>>>
>>>> 2012/3/4 Igor Iván Spiler <spi...@gmail.com>
>>>>
>>>>> che, me interesa, como resolvés con sqlite el tema de insertar la
>>>>> información de los nodos de planet.osm, cuánto tiempo te llevó más o 
>>>>> menos?
>>>>>
>>>>> saludos,
>>>>>
>>>>>
>>>>> 2012/3/4 IgnacioZ <zigna...@gmail.com>
>>>>>
>>>>>> Hola Igor yo ya he caminado un poco ese camino, y a a veces es verdad
>>>>>> q esta bueno arrancar de cero.
>>>>>>
>>>>>> Te paso unos pequeños datos: la libreria sqlite y spatialite tienen
>>>>>> bastante hecho de lo que es camino mas corto. Lo mismo existe para
>>>>>> postgresql
>>>>>> Tambien hay herramientas desarrolladas por la comunidad que te dan el
>>>>>> camino mas corto, fijate en la wiki hay un par que son realmente muy
>>>>>> buenas. Hay una que es Openstreetmap Routing Machine creo.
>>>>>>
>>>>>> De cualquier manera yo tambien hice algunas cosas de cero, asi que no
>>>>>> puedo quejarme, pero esta bueno revisar un poco antes aunque sea para
>>>>>> inspirarse.
>>>>>>
>>>>>> Tambien existen varios q han trabajado con SRTM, si te fijas hay
>>>>>> varios q han hecho mapas topograficos que estan muy buenos. A futuro 
>>>>>> tenia
>>>>>> ganas de ver un poco como se hacen, parece interesante, y tengo ganas de
>>>>>> aplicarlo en un proyecto propio.
>>>>>>
>>>>>> Saludos,
>>>>>>
>>>>>> Ignacio.
>>>>>>
>>>>>> 2012/3/4 Igor Iván Spiler <spi...@gmail.com>
>>>>>>
>>>>>>>
>>>>>>> Hola Federico, en mi caso más allá de que no cuento con el hardware
>>>>>>> para hacerlo de la manera que propone OSM desarrollar herramientas desde
>>>>>>> cero me permite agregar valor al producto final y tener algo distinto al
>>>>>>> resto del mundo que descargó las herramientas, ahora por ejemplo 
>>>>>>> gracias a
>>>>>>> que almaceno la información de los nodos/ways/relations como grafos en 
>>>>>>> vez
>>>>>>> de en una base de datos relacional me permite aplicar algoritmos "del
>>>>>>> camino más corto" (creo que se traduce así). Usando el modelo 
>>>>>>> relacional de
>>>>>>> OSM y almacenado todo en una base de datos tardaría mucho más.
>>>>>>>
>>>>>>> grafos según wikipedia:
>>>>>>> http://en.wikipedia.org/wiki/Graph_%28data_structure%29
>>>>>>>
>>>>>>> algoritmos para resolver problemas de "el camino más corto":
>>>>>>> http://en.wikipedia.org/wiki/Shortest_path_problem
>>>>>>>
>>>>>>> además a futuro pienso cruzar los datos con información de altura de
>>>>>>> SRTM (shuttle radar topography mission)
>>>>>>> http://www2.jpl.nasa.gov/srtm/ me llevaría más tiempo pensar cómo
>>>>>>> agregar funciones a las herramientas existentes de OSM (que además están
>>>>>>> escritas en distintos lenguajes) que hacer algo desde cero.
>>>>>>>
>>>>>>> Los datos de OSM por suerte son libres y son muy buenos pero las
>>>>>>> herramientas que desarrollaron no tanto, pienso publicar algunas de las
>>>>>>> cosas que estoy desarrollando pero todavía están muy verdes.
>>>>>>>
>>>>>>> saludos!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> 2012/3/4 Federico Pértile <lfpert...@yahoo.com.ar>
>>>>>>>
>>>>>>>> Pregunta, por qué desarrollar algo de cero en vez de ampliar alguna
>>>>>>>> de las herramientas libres que hay.
>>>>>>>>
>>>>>>>>   ------------------------------
>>>>>>>> *De:* Fernando <cor...@fernando.com.ar>
>>>>>>>> *Para:* Igor Iván Spiler <spi...@gmail.com>
>>>>>>>> *CC:* Talk-ar@openstreetmap.org
>>>>>>>> *Enviado:* jueves, 1 de marzo de 2012 11:27
>>>>>>>> *Asunto:* Re: [Talk-ar] comunidad
>>>>>>>>
>>>>>>>>  Igor,
>>>>>>>>
>>>>>>>> Aprovecho para presentarme en la lista luego de algunos meses de
>>>>>>>> acecho :P
>>>>>>>>
>>>>>>>> Hace tiempo soy aficionado a la cartografía web y al opendata /
>>>>>>>> linkeddata, y desde hace un año mi lealtad acompaña a OSM, ya que 
>>>>>>>> luego de
>>>>>>>> tanto tiempo fue la herramienta que me permitió armar mi propio 
>>>>>>>> deployment
>>>>>>>> sin mayores dificultades. (mi experiencia anterior fue con Mapserver y 
>>>>>>>> tuve
>>>>>>>> mucha difucultad para conseguir los shapes y ni hablemos de las calles)
>>>>>>>>
>>>>>>>> Actualmente tengo en un pequeño dedicado en leaseweb un tile server
>>>>>>>> (http://tiles.sisdar.com/${z}/${x}/${y}.png), sólo de Argentina y
>>>>>>>> hasta el zoom 15.
>>>>>>>> En http://sisdar.com/mapa.php puse un slippymap con unos layers
>>>>>>>> (geoJSON) donde se aprecian las escuelas de todo el país separadas por
>>>>>>>> regiones y agrupadas con un cluster strategy (aún así en Firefox es 
>>>>>>>> algo
>>>>>>>> lerdo, en comparación con Chrome)
>>>>>>>>
>>>>>>>> Estos dias estuve experimentando con Cascadenik, mod_tiles, etc,
>>>>>>>> para hacer mapas mas lindos y acompañar el tilecache con tiles 
>>>>>>>> generados on
>>>>>>>> demand, particularmente para los zoom >15
>>>>>>>>
>>>>>>>> Me gustaría intercambiar ideas y conocimientos, algún workshop de
>>>>>>>> OSM Argentina sería delicioso, yo podría conseguir el lugar.
>>>>>>>>
>>>>>>>> Por otro lado, les agradezco infinitamente a quienes colaboran
>>>>>>>> editando los mapas de Argentina, y me gustaría introducirme pronto en 
>>>>>>>> esos
>>>>>>>> temas también.
>>>>>>>>
>>>>>>>> Es todo por ahora,
>>>>>>>> Saludos,
>>>>>>>>
>>>>>>>> Fernando Sanz
>>>>>>>> www.fernando.com.ar
>>>>>>>>
>>>>>>>>
>>>>>>>> On 29/02/12 18:45, Igor Iván Spiler wrote:
>>>>>>>>
>>>>>>>> Hola gente de talk-ar,
>>>>>>>>
>>>>>>>> hace un tiempo empecé a desarrollar una aplicación en java para
>>>>>>>> trabajar con datos geográficos, quizás hacer mapas webs, etc, la 
>>>>>>>> versión
>>>>>>>> java es demasiado lenta para el volúmen de datos de OSM asique estoy
>>>>>>>> escribiendo algunas partes de cero en C++ quizás a alguien le interese 
>>>>>>>> dar
>>>>>>>> una mano, a diferencia de cuando la programé en java esta vez estoy
>>>>>>>> publicando en un blog información de la aplicación a medida que 
>>>>>>>> progreso,
>>>>>>>> si a alguien le interesa dar una mano tirando ideas, programando,
>>>>>>>> redactando en el blog, lo que sea contáctenme!
>>>>>>>>
>>>>>>>> el blog:
>>>>>>>>
>>>>>>>> http://codeforprofit.wordpress.com/2012/02/29/diy-web-maps/
>>>>>>>>
>>>>>>>>
>>>>>>>> saludos,
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Talk-ar mailing 
>>>>>>>> listTalk-ar@openstreetmap.orghttp://lists.openstreetmap.org/listinfo/talk-ar
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Talk-ar mailing list
>>>>>>>> Talk-ar@openstreetmap.org
>>>>>>>> http://lists.openstreetmap.org/listinfo/talk-ar
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Talk-ar mailing list
>>>>>>> Talk-ar@openstreetmap.org
>>>>>>> http://lists.openstreetmap.org/listinfo/talk-ar
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
_______________________________________________
Talk-ar mailing list
Talk-ar@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-ar

Responder a