[Talk-it] Corrispondenza tra tiles e coordinate (e altre amenità sulle tiles)

Ruggero giurrero at gmail.com
Wed May 6 20:47:30 BST 2009


Se vuoi io ho scritto un codice Mathematica che fa un po' delle cose
che richiedi. Il linguaggio è un po' particolare, ma dovresti capire:

   {minlat, maxlat} = {Min at latitudes, Max at latitudes}
   {minlon, maxlon} = {Min at longitudes, Max at longitudes}

minlat e maxlat sono per esempio la minima e la massima latitudine di
una serie di punti che appartengono ad una traccia.

   {xStart, yStart} = Deg2Tile[maxlat, minlon, zoom]
   {xEnd, yEnd} = Deg2Tile[minlat, maxlon, zoom]

dove la funzione Deg2Tile è la funzione che trasforma le coordinate
nel numero di tile; la trovi nel wiki già pronta in vari linguaggi,
per esempio:

   Deg2Num[lat_, lon_, zoom_] := {2^zoom (lon + 180)/360,
        2^(zoom - 1) (1 - Log[Tan[lat  Degree] + Sec[lat  Degree]]/\[Pi])}
   Deg2Tile[lat_, lon_, zoom_] := IntegerPart[Deg2Num[lat, lon, zoom]]

importiamo le immagini png:

   mapnikserver = "http://tile.openstreetmap.org";
   osmarender = "http://tah.openstreetmap.org/Tiles/tile";

   servername = mapnikserver

   Table[Import[
     servername <> "/" <> ToString[zoom] <> "/" <> ToString[xi] <> "/" <>
       ToString[yi] <> ".png"], {yi, yStart, yEnd}, {xi, xStart, xEnd}

in pratica sto facendo un doppio ciclo for, dove gli iteratori sono xi
e yi, la stringa prodotta è del tipo:
http://tile.openstreetmap.org/12/100/200

Il 30 aprile 2009 15.41, Alessandro De Noia
<alessandro.denoia at gmail.com> ha scritto:
> Salve a tutti,
> mi trovo in difficoltà per il mini software [1] che sto scrivendo per
> OSMit.
> Oltre alla mappa dinamica, per la quale ho già contattato Mario
> Piccinelli, vorrei riuscire a produrre una mappa statica formata
> dall'unione delle diverse tiles su cui posizionare un marker per ogni
> evento.
> Ho guardato la pagina del wiki [2] che spiega come, data una coordinata
> e il livello di zoom, trovare la tile che contiene quel punto e come
> navigare nel tile server a partire dalla tile principale, ma ho ancora
> qualche dubbio:
> 1) La coordinata usata per calcolare la tile si trova in un punto
> qualunque della stessa o è l'angolo superiore sinistro?
> 1a) Se si, significa allora che la tile viene generata al momento con
> l'angolo superiore sinistro come coordinata?
> 1b) Se no, esiste una funzione (formula?) che permette di calcolare
> tutte le coordinate interne al tile?
> 2) Dato un certo bounding box ed un certo livello di zoom è possibile
> calcolare quante tiles servono per coprire tutta la zona (sul wiki la
> formula (2^n)^2 si riferisce a tutto il pianeta)?
>
> Grazie
> Alessandro De Noia aka Sdonk
>
> [1] http://sdonk.netsons.org/2009/04/eventi-sismici-sito-ingv/
> [2] http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
>
> _______________________________________________
> Talk-it mailing list
> Talk-it at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/talk-it
>




More information about the Talk-it mailing list