The HSlippyMap package

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Warnings:


[Skip to ReadMe]

Properties

Versions0.1.0.0, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.1, 2.1, 2.2
Change logNone available
Dependenciesbase (==4.6.*) [details]
LicenseBSD3
AuthorJean-Alexandre Peyroux
Maintainerm@j4.pe
CategoryDevelopment
Home pagehttps://github.com/j4/HSlippyMap
UploadedTue Dec 24 22:38:56 UTC 2013 by j4pe

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for HSlippyMap-2.1

Algo

http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Haskell

Exemple

Gist : https://gist.github.com/j4/8117832

import HSlippyMap

main = do                                                                             
  mapM (\(x,y) -> mapM (\y'-> print $ "http://openstreetmap.asi.mi/" ++ show z ++ "/" ++ show x ++ "/" ++ show y' ++ ".png") y) [(x,\
[(minimum [tymin, tymax])..(maximum [tymin,tymax])]) | x <- [(minimum [txmin, txmax])..(maximum [txmin, txmax])]]
  where
      min = tileFromLatLong 49.13 3.05 8
      max = tileFromLatLong 48.57 1.66 8
      txmin = tx min
      txmax = tx max
      tymax = ty min
      tymin = ty max
      z = tz min

̀`

Result :

$ ./hsl | xargs wget -nv -O NULL --output-file osm.asi.log 
$ cat osm.asi.log 
2013-12-24 22:04:46 URL:http://tile.openstreetmap.org/8/129/87.png [37753/37753] -> "NULL" [1]
2013-12-24 22:04:46 URL:http://tile.openstreetmap.org/8/129/88.png [36997/36997] -> "NULL" [1]
2013-12-24 22:04:46 URL:http://tile.openstreetmap.org/8/130/87.png [36749/36749] -> "NULL" [1]
2013-12-24 22:04:47 URL:http://tile.openstreetmap.org/8/130/88.png [35550/35550] -> "NULL" [1]
FINISHED --2013-12-24 22:04:47--
Total wall clock time: 0,7s
Downloaded: 4 files, 144K in 0,4s (364 KB/s)


Other exemple
-------------

mapM (\z-> putStrLn $ show $ tileFromLatLong 12.3 3.3 z) [0..18]


http://tile.openstreetmap.org/0/0/0.png http://tile.openstreetmap.org/1/1/0.png http://tile.openstreetmap.org/2/2/1.png http://tile.openstreetmap.org/3/4/2.png http://tile.openstreetmap.org/4/8/5.png http://tile.openstreetmap.org/5/16/11.png http://tile.openstreetmap.org/6/32/22.png http://tile.openstreetmap.org/7/64/44.png http://tile.openstreetmap.org/8/129/88.png http://tile.openstreetmap.org/9/259/176.png http://tile.openstreetmap.org/10/518/352.png http://tile.openstreetmap.org/11/1036/704.png http://tile.openstreetmap.org/12/2073/1409.png http://tile.openstreetmap.org/13/4147/2819.png http://tile.openstreetmap.org/14/8295/5639.png http://tile.openstreetmap.org/15/16590/11278.png http://tile.openstreetmap.org/16/33181/22557.png http://tile.openstreetmap.org/17/66362/45115.png http://tile.openstreetmap.org/18/132725/90230.png



long2tilex lon z = floor((lon + 180.0) / 360.0 * (2.0 ** z))

lat2tiley lat z = floor((1.0 - log( tan(lat * pi/180.0) + 1.0 / cos(lat * pi/180.0)) / pi) / 2.0 * (2.0 ** z))

tilex2long x z = x / (2.0 ** z) * 360.0 - 180

tiley2lat y z = 180.0 / pi * atan(0.5 * (exp(n) - exp(-n))) where n = pi - 2.0 * pi * y / (2.0 ** z)

-- Exemple main = do --print $ long2tilex 2.2712 17 --print $ lat2tiley 48.8152 17 --print $ tilex2long 66362 17 --print $ tiley2lat 45115 17 putStrLn "gps: (lat=48.8152,long=2.2712)" putStrLn $ "http://tile.openstreetmap.org/17/" ++ show x ++ "/" ++ show y ++ ".png" where z = 17 x = long2tilex 2.2712 z y = lat2tiley 48.8152 z