domingo, 6 de julio de 2008

GMDT: Mapas y rutas a la carta sin wifi

EXCELENTE GUIA PARA AGREGAR MAPAS A LA APLICACION DE MAPAS OFFLINE

FUENTE: http://esp.theliels.es/

EN MI CASO CARGUE EL MAPA DE TODA LA CAPITAL FEDERAL USANDO COMO FUENTE LOS MAPAS DE MICROSOFT PORQUE ME PARECIAN MEJOR QUE LOS DE GOOGLE LA VERSION DE CALLES, ME QUEDO UNA ESPECIE DE GUIA T :p



"Hace tiempo dijimos la gran utilidad que puede tener Maps Offline. Pero evidentemente sin un sistema para poder descargar mapas a la carta y poder incluirlos posteriormente a nuestro dispositivo es un poco inutil.

Hace tiempo dije que colgaría un video mostrando el proceso de creación de un mapa de una ciudad completa, pero por tiempo y por ganas pues no ha sido así. No obstante creo que es algo bastante util para la mayoría, así que aunque sea en plan manual lo voy a explicar paso a paso.

La utilidad es doble. Por un lado podremos como he dicho meter un mapa completo de una región, y por medio de maps offile poder verlo y acceder a él sin necesidad de tener conexión. La segunda gran utilidad que muchos van a encontrar de interés, es la posibilidad de cargar mapas que no están en el servidor de google, pero que sí lo están en otros servidores. Luego aquellos que se encuentren en regiones por ahora discriminadas por google podrán tener sus mapitas.

Esto se puede combinar perfectamente con rutas personalizadas como las que crea la aplicación maps, y de este modo podemos tener en nuestro dispositivo mapas propios con sus rutas y consultarlas cuando queramos, hacer zoom... todo como si estuviesemos online. En el caso del iPhone sería posible usar también el posicionamiento por GSM, aunque no por WIFI en el caso del iPod Touch, esto es de cajon.

Sobre la opción del GPS en el iphone este método serviría solo a medias. El siguiente paso lógico sería preguntar: Pues cuando el iPhone 3G salga y fuera posible el JB, con estas aplicaciones podríamos tener los mapas de las zonas que quisiésemos y tener activado el GPS para una localización perfecta sin necesidad de comprar TomTom o similar. Si y no. Un GPS los únicos datos que recive son coordenadas geográficas de los satélites. Son los mapas que tenemos dentro de nuestro dispositivos los que a su vez tendrían que estar diseccionados por así decirlo en sus propias coordeadas. Este tipo de datos se llaman GeoData. El problema en españa es que los GeoData de españa no son públicos, y tener acceso a ellos requiere pagar. En EEUU por ejemplo no es así, y puedes descargar gratuitamente y sin problema los GeoData de todo el país. Con los mapas y los GeoData tendríamos un sistema GPS perfecto.

Quizás sea posible obtener los GeoData de otro modo, peto como digo, creo que ahora mismo en españa esto no es posible, que no quita que para muchos otros paises si que estén disponibles!!

Bueno, ya hemos explicado un poco todo esto y como vamos a trabajar. Así que lo que necesitamos antes que nada es una aplicación que nos permita tener acceso a una gran colección de mapas. Y por un casual la tenemos!! Vamos a usar Global Map Downlad Tool. Es una magnífica utilidad para descargar mapas de varios servidores y además nos permitirá convertirlos posteriormente para el iPhone e iPod Touch.

Es una aplicación creada para .NET con lo que será necesario tener instalado .NET Framework para poder usarla correctamente, yo aconsejaría tener instalado todas las versiones de .NET pero supongo que con la 2.0 sería suficiente.

Existe un pequeño problema de compatibilidad con Vista. Vista usa por defecto .NET Framework 3.5 y la aplicación no está compilada para 3.5, luego es posible que podamos observar algunos problemas con la aplicación.

Para descargar .Net Framework ->

3.0

http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=es

2.0

http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5

1.1

http://www.microsoft.com/downloads/details.aspx?familyid=262D25E3-F589-4842-8157-034D1E7CF3A3&displaylang=es


Personalmente en una máquina XP SP3 instalaría todos. Hay que tener en cuenta que uno no sobreescribe otro, sino que son complementarios.


Una vez estemos seguros de que tenemos .net framework instalado podemos instalar la aplicación:

http://theliels.es/repo/GMDT.7z

La aplicación la descomprimiremos en cualquier carpeta de trabajo y listo.

Una vez descomprimida ejecutamos Global Map Download Tool y nos encontraremos con algo como lo que tenemos al inicio de esta entrada. (Pulsar en la entrada si se desea ampliar)

Pese a lo complicado de la interfaz, en realidad es relativamente simple esta aplicación y con unos muy pocos pasos tendremos todo preparado.

1º. Lo primero será siempre seleccionar la base de datos de origen. A la izquierda del todo podemos observar que tenemos varias posibilidades:

a) Google Map: Terrain, Satellite o Hybrid. Lo cual se entiende perfectamente.
b) Micro$oft VirtualEarth: Sí, ya sabemos todos que MS tan solo se dedica a copiar ideas (al menos desde mi opinión) y no investiga ni innova nada. Pero bueno, es uan vuena alternativa allí donde Google no llega aun o algunas partes en las que las fotos satélite de MS son mejores.
c) USGS: Pertenece al ministerio de interior de EEUU. Puede ser una buena alternativa, sobre todo para EEUU.
d) ...

Bueno, no voy a ir describiendo cada una, todos los podeis ver en el panel de la izquierda.
La elección de uno a otro es importante. Primero porque muchas veces un proveedor no tiene los mapas que necesitamos, otras veces porque un proveedor particular ofrece mucha más calidad para una zona en concreto. Otras veces podemos encontrar también limitaciones en cuanto a descargas (más tarde hablaremos de esto). Lo mejor es jugar cada cual un poco con el programa y ver que tal. Personalmente los mejores resultados son evidentemente con Google Map y acudir a otro para zonas no cubiertas. Por principios no uso los de M$, pero esto es tan solo a modo personal.


2º. Una vez seleccionada la base de datos a usar, la página inicial nos cambiará y pasaremos a una especie de explorador incrustado en la misma aplicación. Es la forma de funcionar del programa para poder localizar facilmente la región a sacar. En mi caso como he dicho he usado Google Map, luego en mi pantalla tengo algo muy muy similar a la interfaz que tendría si acudiera a maps.google.com. Lo único que tengo que hacer es realizar una búsqueda normal y corriente. En mi caso tecleo: "Sevilla Spain" y enter. Inmediatamente el explorador incrustado me lleva al punto exacto:




3º. Ya tendremos más o menos localiza la zona que deseamos extraer, pero quizás no sea exactamente esa. Usando el botón Preview 1x podremos ir viendo si la zona es exactamente la que deseamos. Si no es exactamente la que queramos, cerramos la preview y con el pan (la manita) centramos un poco mejor la zona. De nuevo le damos a preview a ver si ahora es la que deseamos. Muchas veces esto es un poco impreciso, ya que el preview no se ajusta exactamente a lo que tenemos en pantalla. La preview es la que tenemos que atender siempre. En mi caso tambien he seleccionado la opción Hibrid para que al extraer los mapas tambien me saque el callejero. Ojo que esta opción NO me permitirá conmutar una una vez en la aplicación map entre calles o solo satélite!! esto es posible hacerlo tambien (luego lo explicaré), pero para ahorrarme consumo en Megas, prefiero sacar tan solo un mapa con el callejero integrado. Yo he delimitado la zona para sevilla, de tal forma que tambien se incluyan algunos alrededores, y por supuesto mi localidad, DH. Recordar que en el mapa podemos hacer tambien zoom a una zona más concreta si así lo deseamos y el mapa será mucho menor en tamaño, mucho más rapido en descargarse etc... pero puestos a hacerlo, yo lo hago todo a lo grande, así que sacaré un buen mapa ;). Aunque no se encuentra aun en mi captura, es necesario establecer un directorio de trabajo donde se guardará nuestro mapa. Dicha opción está en medio prácticamente de la aplicacion. Tendremos que darle a "Set Dir" y seleccionar el directorio que deseemos.


4º. Llegado a este punto tendremos ya delimitada la zona perfectamente. Una vez estemos a gusto con la zona a extraer le daremos al botón superior derecho: "Download The Map". Al darle a dicho botón nos aparecerá una nueva ventana la mar de curiosa. En ella podremos seleccionar el nivel de Zoom (o profundidad) que deseemos. A lo mejor tan solo deseamos un Zoom X1 o X2 para tener un mapa genérico de la zona sin mucho detalle. O a lo mejor por el contrario deseamos una zona muy detallada y deseamos todos los niveles de profundidad.

Por otro lado también nos permite seleccionar el sector que deseemos. Ya sé que hemos delimitado la zona anteriormente, pero esto puede ser una zona muy grande. Marcando o desmarcando los sectores haremos que estén luego disponibles para nosotros. Es una forma muy eficiente de eliminar los sectores que no vamos a usar y así ahorrar muchísimos Megas de espacio. La Captura sacada en mi caso no se corresponde con los sectores que he extraido, en ella se encuentran todos marcados, en cambio mi mapa extraido hay muchos sectores que no están incluidos. A fin de cuentas hay "zonas muertas" en las que no tengo ningún interés en ellas o alguna población menor alejada que tampoco me interesa. Todo ello hace a lo mejor que mi mapa final sea la mitad de lo que sería originalmente:


Una vez terminemos de seleccionar o deselecionar los sectores deseados, tan solo nos quedará darle al botón superior en la ventana de los sectores: "Uncheck any tittles...." Nada más presionar el botón, comenzará la descarga del mapa. Esto puede ser un proceso largo, dependiendo de lo grande que sea nuestro mapa fabricado, del nivel de profundidad de cada sector, de los sectores...


5º. En quito lugar tenemos la descarga. En cuanto presionemos el botón citado comenzará el proceso de descarga. En teoría no tendremos que hacer nada más hasta que la descarga termine. Arriba a la derecha aparecerá el estado de descarga, el sector que se está descargando, los sectores totales, los sectores ya descargados. Aquí hay una pequeña limitación lógica, al menos para Google, y posiblemente para otros también. Google para evitar la saturación de sus servidores impone un máximo de ancho de banda por IP en un determinado tiempo. Con esta medida de proteccion Google evita precisamente que hagamos esto. No es que el límite sea muy escueto, para nada, es bastante amplio. Pero evidentemente estamos descargando de golpe zonas completas!! y es bastante posible (dependiendo del tamaño de la zona) que el servidor corte el grifo. Si esto ocurre el programa nos lanzará un error y la opción de darle a aceptar. Si le damos a aceptar intentará descargar el sector siguiente. El problema es que si nos aparece este error, sabremos que Google ha baneado temporalmente nusetra IP, y lo que nos queda son dos opciones:

a) Esperar que google la desbanee, supongo que esto sucedería en media hora quizás unas horas
b) Si tenemos una IP dinámica con desconectar y conectar de nuevo a nuestro ISP sería suficiente para tener una IP nueva, y con darle a aceptar al cartelito que nos lanzó el error es suficiente para continuar la descarga
c) Para quien tenga una IP estática la única posibilidad si no quiere esperar es usar servidores proxys. El problema es que estos suelen ser relativamente lentos. Pero también es verdad que tenemos cientos o miles de servidores, es cuestion de encontrar uno decente.

Hay q tener presente que este procedimiento es posible que tengamos que repetirlo más de una vez o no, como digo, depende del tamaño de la región que estemos creando.

En mi caso he tenido que hacer un cambio de IP unas 5 veces:


Si nos fiajos como he dicho arriba a la derecha veremos el porcentaje descargado. Al terminar de descargar todo el mapa, si ocurrió algun error en la descarga de algún sector nos preguntará si deseamos volver a descargar los trozos erroneos.


6º. Una vez descargado todo el mapa, tan solo nos quedará convertirlo para que nuestro dispositivo sea capaz de leerlo en el formato que usa. La misma aplicación nos deja hacerlo de manera automática, casi tan facil como presionar un botón.

Sabremos que la descarga a terminado además porque nos aparecerá un mensaje diciendo lo propio. Hay que tener en cuenta que en cuanto termine de descargar todo tardará un poco en reensamblarlo todo. Cuando aceptemos el cartelito de mapa descargado tendremos que darle al botón ->Iphone:


Lo normal es que nos aparezca en la primera linea el directorio de trabajo. Si lo dejásemos así, nos crearía en nuestro dispositivo el mapa en la sección de callejero. Como el mapa que yo he creado es híbrido lo pongo en híbrido. Tambien se debe de seleccionar la carpeta de destino donde se generará el resultado final.

Una vez acabado todo, le daremos para finalizar del todo a Process.

Hay que tener en cuenta que el proceso puede tardar un poco en la conversión. Es cuestión de esperar hasta que se termine toda la conversión. Cuando la conversión acabe completamente, se habrá generado un archivo que será el que subiremos a nuestro dispositivo para ser usado por MapsOffiline.

Recordar que en la versión más actual del MapsOffline, el archivo habría que introducirlo en:

/private/var/mobile/Library/MapsOffline/Cache

Al acabar tan solo tenemos que recuperar el archivo creado y listo. En mi caso el archivo final ha sido de 260MB y tengo incluido todo sevilla capital y unas 5 localidades."

1 comentario:

Damian Omar Silva dijo...

gracias cholo por este tutorial, fué el que me permitió crear mapas de distintas ciudades de argentina. aparte, leo tus consejos y ayuda en iphoneros.net.
te hago una consulta: tengo offlinemaps y puedo visualizar los mapas previamente cargados.... pero noté que el iphone me consume bytes luego de navegar por esos mapas. ¿que pasa, es esto normal?
gracias