Hackear las imágenes de los mapas I

Martes 13 de mayo de 2008, por Horacio González Diéguez

Es posible cargar las imágenes de google directamente en una aplicación si se conoce su URL, para poder hacerlo solo es necesario saber como están codificadas dichas URL.

En el caso de los mapas resulta bastante sencillo, la siguiente URL conduce a la imagen del mapa de santiago:

http://mt3.google.com/mt?x=487&y=376&zoom=7

* Como se puede observar las variables x e y indican la posición en un array de imágenes que contiene todo el mapa del mundo. La variable indica el tamaño de ampliacion del mapa; cuanto menor sea zoom, que puede tomar valores entre o y 17, mayor será el tamaño del mapa y por lo tanto mayor el array de imágenes.

Los siguientes enlaces corresponden a una serie de mapas que se hicieron con el fin de rastrear la posición de puntos e imágenes en los mapas, medida tanto en píxeles como en latitud y longitud.

- coordenadas-pixels-1.html

- coordenadas-pixels-2.html

- coordenadas-pixels-3.html

- coordenadas-pixels-4.html

- coordenadas-pixels-5.html

- coordenadas-pixels-6.html

La forma de encontrar la url de una imagen concreta del mapa es sencilla, simplemente es necesario calcular las coordenadas en píxeles de la imagen, restarle el resto de su división entre 256 y dividir de nuevo entre 256. Todos los ejemplos se basan en algo tan sencillo como esta función:

GEvent.addListener(map, "moveend", function() {
        var zoom = map.getZoom();
        var center = map.getCenter();

        // calculamos las coordenadas en pixeles del punto central del mapa
              var offset = mapa.getCurrentMapType().getProjection().fromLatLngToPixel(center, zoom);
       
        /* para conocer las coordenadas de la imagen que le corresponde,
           calculamos el resto de su división entre 256 */
        var restox = offset.x%256;
              var restoy = offset.y%256;
              
        /* al restar el resto y dividir entre 256 las coordenadas del centro
            obtendremos la posición x e y de la imagen del mapa */
              var imgx = (offset.x - restox)/256;
              var imgy = (offset.y - restoy)/256;
       
        //si el mapa se encuentra en modo mapa político la url de la imagen será la siguuiente
        var url1 = "http://mt3.google.com/mt?n=404&x=" + imgx + "&y=" + imgy + "&zoom=" + (17 - zoom);

        //si el mapa se encuentra en modo mapa físico la url de la imagen será la siguuiente
        var url2 = "http://mt0.google.com/mt/v=app.81&x=" + imgx + "&y=" + imgy + "&z=" + zoom;
});

Sin embargo las URL se las imágenes de satellite están mucho más codificadas y resulta algo mas dificil utilizarlas. Se ha utilizado la información procedente de esta web para comprender como funciona dicha codificación y elaborar los siguientes scripts.

A Huge Gray Area

La url de las imagenes tipo satélite está codificada como una secuencia de "q", "r", "t" y "s". Para una determinada region del mapa cada una de las letras significa hacer zoom en uno de los cuatro cuadrantes. “q” es el cuadrante "noroeste" (arriva a la izquierda), “r” es el cuadrante "noreste" (arriva a la derecha), “s” es el cuadrante "sureste" (abajo a la derecha) y "t" es el cuadrante "sudoeste" (abajo a la izquierda).
La primera región es el mapa completo del planeta y tiene asignada la siguiente URL:

http://kh0.google.com/kh?n=404&v=26&t=t.

Como el primer nivel de zoom consta de una sola imagen y se le ha asignado la letra "t", el siguiente nivel consta de cuatro imágenes; tq, tr, tt y ts.

Se procede del mismo modo agregando sucesivamente una letra para cada nivel del zoom, hasta un total de 21 caracteres en el nivel máximo.

http://kh0.google.com/kh?n=404&v=26&t=tqsrssttrrrsqsstqts
kh-santiago

2015 VHPLab. I 2014 I 2013 I
English I Galego