Calcule los límites de latón para un mosaico individual generado desde gdal2tiles

16

Tengo varias fuentes de teselas generadas usando gdal2tiles que me gustaría presentar en el mismo mapa. Por lo tanto, al presentar un mosaico, debo determinar de qué fuente se va a utilizar, comparando con los límites.

¿Alguien sabe cómo calcular los límites de latón para un solo mosaico basado únicamente en el zoom, x e y (a partir de la estructura de archivos generada por gdal2tiles)? BTW: Estoy usando la API de Google Maps v3 en caso de que sea necesario llamar a alguna funcionalidad de la API para ayudar con los cálculos.

La razón por la que estoy restringido a solo zoom, x, y y es que los mosaicos no solo son llamados por una superposición en el mapa, sino también por algunas funciones de impresión personalizadas que permiten imprimir fuera del mapa.

    
pregunta Gavin 27.11.2011 - 01:32

3 respuestas

21

Las matemáticas se describen en:

enlace

... incluido el código fuente de la utilidad de línea de comandos y una demostración en línea.

También es bastante simple matemática:

function tile2long(x,z) { return (x/Math.pow(2,z)*360-180); }

function tile2lat(y,z) {
    var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
    return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
}

Note la diferencia entre XYZ / Google vs TMS en el eje y.

Google Maps API V3 también le brinda las funciones requeridas a través de .fromPointToLatLng() de map.getProjection() .

    
respondido por el Petr Pridal 27.11.2011 - 18:12
0

Esta página wiki de OpenStreetMap también podría ser útil para otros idiomas:

enlace

    
respondido por el T . 01.08.2018 - 18:30
0

Este es mi código de trabajo:

muestra jsfiddle de superposición de tipo de mapa de imagen de Google

jsfiddle otra muestra de imagen de superposición de Google

function tile2long(x,z) {

  return (x/Math.pow(2,z)*360-180);

}





function tile2lat(y,z) {

  var n=Math.PI-2*Math.PI*y/Math.pow(2,z);

  return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));

}





 var x = coord.x;

 var y = coord.y;

 var z = zoom;



 var NW_long = tile2long(x,z);



 var SW_long = tile2long(x,z);

 var SW_lat =  tile2lat(y+1,z);



 var NE_long = tile2long(x+1,z);

  var NE_lat =  tile2lat(y,z);







  var export_bbox = SW_long + ',' + SW_lat + ',' + NE_long + ',' + NE_lat;



     var url_param = '&format=png&size=256,256&transparent=true&f=image&bboxSR=4326&imageSR=4326';





   var url_layers =''





       var root_url = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export?bbox=';



     var tile_url = root_url + export_bbox + url_param + url_layers;

maptiler obtiene bbox de coodinate number and zoom

cómo calcular el zoom del número de coordenadas de google, convertir, lat long etc ....

    
respondido por el hoogw 18.09.2018 - 01:10

Lea otras preguntas en las etiquetas