Archive for May 5th, 2010

OSM: Ríos, Parques y Mares

Wednesday, May 5th, 2010

Después de mucho tiempo invertido y de reescribir la clase Osm a fin de poder pintar el interior de parques, ríos y mares, y casi a punto de querer reescribir HexagonalGrid y entrar en una espiral de destrucción y muerte (por suerte Alex me hizo entrar en razón). Aquí está prácticamente resuelto el problema de rellenar figuras geométricas.

Básicamente la solución estaba en trabajar únicamente con las coordenadas (todas ellas, las que cabían dentro de mi grid y las que no) a fin de poder saber toda la información de los bordes de las figuras.

Por ejemplo, si tenía que dibujar un río pero en mi grid sólo estaba una orilla, no pasaba nada, porque Osm (muy listo él) te da más información que la que tú le pides. Aunque sólo le pidas que te de la información de un trozo de mapa, te da toda la información de los alrededores, que te harán falta para saber que margen del río tienes que pintar. Y esta información aparece reflejada en la seccion <member> al final del xml.

También he usado funciones básicas de geometría computacional, para averiguar si un punto esta dentro o no de un polígono.

Seguramente vendrá en algún lado de la documentación de OSM, pero es que a mí me gusta darme chocazos con las paredes. Y finalmente, a base de iterar sobre el error, lo conseguí. (more…)