Posts Tagged ‘Tagzania’

Tus lugares en OpenStreetMap

Jueves, Noviembre 26th, 2009

En Tagzania no queremos estar atados a un solo proveedor, es por ello que utilizamos Mapstraction, y, especialmente, OpenStreetMap (OSM). Hasta ahora, para poder ver tus lugares en OSM, debías añadir ?map=openstreetmap a la dirección URL. Acabamos de añadir un enlace a OpenStreetMap que facilitará esta labor (ver el cuadrado negro, justo debajo del mapa):

New OpenStreetMap link

La Ciudad Prohibida, Pekín, de GMaps a OSM:

http://www.tagzania-blog.com/en/2008/12/04/tagzania-and-other-maps/

Nuevos iconos en Tagzania

Miércoles, Noviembre 4th, 2009

Acabamos de añadir unos cuanto nuevos iconos en Tagzania. Ésta era una de las peticiones que nos habían hecho los usuarios por medio del sistema de feedback. Estas son las nuevas categorías que podéis utilizar:

  • Castillo
  • Escuela
  • Idioma
  • Parking
  • Policía
  • Puerto
  • Universidad

También hemos realizado algunos cambios en el proceso de añadir nuevos puntos y la selección de iconos. Creemos que había demasiadas cosas en este proceso. Ahora, después de hacer click en “Personalizar icono” (personalize your icon, en inglés):

Tagzania icon selection

verás una nueva capa con todos los iconos disponibles:

Select you icon - Tagzania

Esperamos que os guste. Recordad que este cambio surge debido a las sugerencias de los usuarios, ¡seguid así!

¡Gracias a todos vosotros!

De vuelta del Camino de Santiago

Miércoles, Octubre 28th, 2009

Ya estoy de vuelta del Camino de Santiago después de pedalear casi 800 kilometros y recoger cantidad de datos interesantes: albergues, hostales, restaurantes, iglesias, etc. Ahora empieza el trabajo duro de verdad, subir todos esos datos a OpenStreetMap.

Para empezar, he mapeado tres lugares interesantes y significativos del camino: Roncesvalles-Orreaga, donde comenzó mi camino; O Cebreiro, la entrada en Galicia; y Samos con su hermoso monasterio.

Roncesvalles – Orreaga antes del mapeo:

Orreaga OpenStreetMap

Y después (ver el mapa en OSM):

Orreaga OpenStreetMap 2009-10-28

O Cebreiro antes de mapearlo:

Cebreiro OpenStreetMap

y una vez hecho el trabajo (ver el mapa en OSM):

Cebreiro OpenStreetMap 20091028

Y, por último, Samos antes de mapearlo:

Samos OpenStreetMap

después del mapeo (ver el mapa en OSM):

Samos OpenStreetMap 20091028

La verdad es que recogí información a lo largo de todo el camino, pero necesito tiempo para subirlo a OpenStreetMap.

Mikel in Santiago de Compostela

por Mikel Lizarralde

Tagzania loves Android

Miércoles, Julio 22nd, 2009

Viernes, día 17 de julio, para algunos el día de Etxekoandroid.

Android logo

Etxekoandroid es una iniciativa que comienza por la inquietud de algunos usuarios de teléfonos Android promovida por Juanan Pereira. La primera desconferencia se realizó en la nueva sede de la Universidad del País Vasco en San Sebastian, el edificio Korta.

Tanto Tagzania como los demás participantes al evento, comprendimos la importancia que Android supondrá en nuestras formas de trabajo y ocio.

En la cita se habló sobre nuevos firmwares oficiales que tenemos en el mercado y de nuevas lineas de trabajo que la gente pretende abrir, como Jesusfreke , TheDude’s , Haykuro y otros que vendrán. Se plantearon nuevas aplicaciones y también preguntas sobre el futuro inmediato que este nuevo sistema nos puede deparar.

En Tagzania hemos abierto una linea de trabajo (Tagzania Mobile) en la que hemos decidido trabajar con Android, por las prestaciones y oportunidades que este nos presta.

Este video que os mostramos es una demo de cómo será la nueva aplicación. Pretendemos presentarla en la próxima Android Developer Challenge.

Esta nueva aplicación permitirá a nuestros usuarios todas sus geolocalizaciones y añadir nuevas donde quiera que se encuentren. Actualmente estamos tratando de integrar un tracker de GPS para poder reportar estas a Tagzania.

Iremos ampliando información y conocimientos, que adquiramos con el uso de este nuevo mundo Android.

Tagzania en la conferencia State of the Map

Miércoles, Julio 15th, 2009

Este fin de semana pasado se ha celebrado en Amsterdam la conferencia anual del State of the Map, unas jornadas entorno a OpenStreetMap. Además de participar en las jornadas con una charla, también hemos sido patrocinadores del evento.

En nuestra charla explicamos cómo utilizamos OSM en Tagzania.com, así como nuestro nuevo proyecto Mapapel.

Aquí puedes leer las impresiones del equipo de Tagzania sobre el SOTM09.

Las presentaciones y los videos de SOTM están en este wiki.

Camisetas de Tagzania

Miércoles, Julio 8th, 2009

Acabamos de recibir las primeras camisetas de Tagzania. El diseño es obra de Zaldieroa, tan genial como siempre.

Tagzania t-shirt

Tagzania kamisetak

Esperamos que os gusten. Pronto tendréis más noticias de estas camisetas.

Cambios recientes en Tagzania

Jueves, Mayo 7th, 2009

Como os podéis imaginar, poco a poco estamos realizando algunas modificaciones y mejoras en Tagzania:

  • Ahora utilizamos la herramienta de Sugerencias (Feedback) de UserVoice: En la parte izquierda de cada página encontraréis una pestaña roja con el texto “Sugerencias”. Esta es una fantástica herramienta que permitirá conocer la opinión de los usuarios. Haciendo click en ese botón podréis ver las sugerencias realizadas por otros usuarios o mandarnos las vuestras.  Otra posibilidad es avisarnos sobre algún bug que os encontréis.

Sugerencias en Tagzania

  • Mejora de “sugerencia de etiquetas”. Cuando añadimos un nuevo punto en Tagzania puede que no recordemos que etiquetas hemos utilizado anteriormente y terminemos teniendo un montón de etiquetas similares. Para no tener ese problema añadimos la funcionalidad sugerencia de etiquetas, con dos alternativas: hacer click en el enlace “Ver todas tus etiquetas” para que todas ellas aparezcan allí mimo, o escribir las tres primeras letras de las etiquetas para que la herramienta te enseñe las que coinciden.

Tag suggestion Tagzania Tag suggestion Tagzania

  • Descarga todos tus puntos, sin límites: hasta ahora había una limitación de 200 puntos como máximo para la descarga de los puntos, pero algunos usuarios tienen cargados en Tagzania una gran cantidad de lugares. Por ello, hemos puesto un botón en las páginas de usuario para que se puedan descargar todos sus puntos.

Descargar todos tus lugares en Tagzania

  • Otro cambio menor consiste en introducir dos enlaces debajo de los mapas: el primero, para que puedan contactar con nosotros, y el segundo, un permalink de la página en concreto.

Esperemos que os gusten estos cambios, y los que vendrán.

Tagzania – Postgis – GeoDjango – Nearest Neighbours Distance (III)

Lunes, Marzo 23rd, 2009

FASE 2: Problema & Solución

Los cálculos de distancia en linea y poligonos seguían siendo costosos para nuestro servidor.

Por lo que utilizamos el siguiente criterio (postgis), para que todas las busquedas fueran lo más rápidas posibles: de punto a punto.

– Un punto no tiene problema alguno.

– Una linea ==> ST_StartPoint(line)

– Un poligono ==> ST_Centroid(polygon)

** Funciones Postgis – ya que en Geodjango no existe el startpoint de lineas.

Así:

SELECT a.* FROM items AS a WHERE a.id != %s
ORDER BY (
CASE WHEN a.item_type='POINT' THEN ST_Distance(
(SELECT CASE b.item_type WHEN 'POINT' THEN b.point
WHEN 'POLYLINE' THEN ST_StartPoint(b.geometry)
ELSE ST_Centroid(b.geometry)END FROM items AS b WHERE b.id= %s), a.point)
WHEN a.item_type='POLYLINE' THEN ST_Distance(
(SELECT CASE c.item_type WHEN 'POINT' THEN c.point
WHEN 'POLYLINE' THEN ST_StartPoint(b.geometry)
ELSE ST_Centroid(b.geometry)END FROM items AS c WHERE c.id= %s), ST_StartPoint(a.geometry)
WHEN a.item_type='POLYGON' THEN ST_Distance(
(SELECT CASE c.item_type WHEN 'POINT' THEN c.point
WHEN 'POLYLINE' THEN ST_StartPoint(b.geometry)
ELSE ST_Centroid(b.geometry)END FROM items AS c WHERE c.id= %s), ST_Centroid(a.geometry)
) END) LIMIT %s;

Pero el precálculo de StartPoint y Centroid por cada vez que se acceda a esta consulta seguía siendo costoso para el sistema.

Solución: Tomamos la decisión de crear un punto central (center_point) por cada elemento (POI), y así facilitar la operación de cálculo de distancias.

center_point = models.PointField(blank=True, null = True)
POINT =>> center_point = self.point
LINE =>> center_point = fromstr('POINT(' + line_coords[0]+ ')')
POLYGON =>> center_point = self.polygon.centroid

Con lo que ademas conseguiamos que geodjango aplicase directamente su función de distancia:

tzp = get_object_or_404(items, id = ***)

near_items = Items.objects.distance(tzp.center_point).order_by(’distance’)

RESUMIENDO:

Cada vez que insertemos una geometría, debemos realizar estos precálculos para que las consultas sean más agiles a la hora de buscar los puntos mas cercanos a este que estamos insertando.

1.- Simplificar tanto lineas(polyline) como los poligonos(polygon). SIMPLIFY()

2.- Crear un punto central por cada geometría. (center_point)

De esta manera conseguimos que la busqueda sea más ágil, aunque después, estas geometrías sean muy complicadas en cuanto a cantidad de intersecciones, … pero esto ya pasa a manos del navegador.

¡Nuestro servidor respira!

Sugerencia de etiquetas

Martes, Marzo 17th, 2009

Hace unas semanas pusimos en marcha una encuesta para conocer vuestra opinión sobre Tagzania. Nuestro objetivo es ir mejorando el servicio que prestamos gracias a vuestras opiniones.

Una de los puntos a mejorar que recibimos es que cuando un usuario tiene muchos puntos y etiquetas resulta complicado gestionarlas a la hora de añadir nuevos lugares. Es decir, cuando voy a añadir un nuevo lugar, puede que no recuerde qué etiquetas he utilizado anteriormente.

Hoy hemos puesto en marcha un servicio de sugerencia de etiquetas. De este modo, cuando estemos añadiendo un nuevo lugar y tengamos que escribir las etiquetas, Tagzania nos dirá qué etiquetas hemos utilizado anteriormente. Para ello, es necesario introducir las tres primeras letras de la etiqueta. Sirva de ejemplo esta captura donde estoy añadiendo la Torre de Tokyo, a la hora de etiquetarlo, con poner las tres primeras letras, “tok”, Tagzania me avisa que ya he utilizado anteriormente la etiqueta “tokyo“.

Tagzania tag suggestion

Tagzania – Postgis – GeoDjango – Nearest Neighbours Distance (II)

Martes, Marzo 17th, 2009

FASE 1: Problema & Solución

En los comienzos se realizaban consultas SQL sobre diferentes geometrías. Algo así:

SELECT a.* FROM items AS a WHERE a.id != %s
ORDER BY (
CASE WHEN a.item_type='POINT' THEN ST_Distance(
(SELECT CASE b.item_type WHEN 'POINT' THEN b.point  ELSE b.geometry END
FROM items AS b WHERE b.id= %s), a.point)
    WHEN a.item_type='POLYLINE' THEN ST_Distance(
(SELECT CASE c.item_type WHEN 'POINT' THEN c.point ELSE b.geometry END
FROM items AS c WHERE c.id= %s), ST_StartPoint(a.geometry)
    WHEN a.item_type='POLYGON' THEN ST_Distance(
(SELECT CASE c.item_type WHEN 'POINT' THEN c.point ELSE b.geometry END
FROM items AS c WHERE c.id= %s), ST_Centroid(a.geometry)
) END) LIMIT %s;

Nos dimos cuenta que teniamos lineas de mas de 5000 intersecciones/puntos, por lo que realizar el cálculo de distancia sobre cada intersección/punto de esa linea, era demasiado costoso para el servidor. Y a la hora de visualizarlo en el mapa, tardaba demasiado en dibujarlo.

Solución: Decidimos guardar la versión simplificada ( geodjango – simplify() ) de cada geometría. Crear un elemento neutro, en caso de lineas y poligonos, de modo simplificado. Utilizando diferentes criterios de tolerancia, a cuanto más puntos más tolerancia, menos intersecciones/puntos.

simple_line = models.LineStringField(blank=True, null=True)
simple_polyline = models.PolygonField(blank=True, null=True)

if len(self.line.array) > 1000:
self.simple_line = self.line.simplify(tolerance = 0.0013)
else:
if len(self.line.array) > 400:
tzp.simple_line = self.line.simplify(tolerance = 0.0011)
else:
self.simple_line = self.line.simplify(tolerance = 0.0002)

Pero esto tampoco terminaba de ir del todo bien …

Segiamos mejorando ….

Próximamente la parte (III)