The HSlippyMap package

[Tags: bsd3, library]

[Skip to ReadMe]

Properties

Versions0.1.0.0, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.1, 2.2 (info)
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:39:06 UTC 2013 by j4pe
DistributionsNixOS:2.2
Downloads1846 total (106 in last 30 days)
Votes
0 []
StatusDocs available [build log]
Successful builds reported [all 1 reports]

Modules

[Index]

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