Popularity
1.8
Growing
Activity
0.0
Stable
1
2
1
Monthly Downloads: 7
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
HSlippyMap alternatives and similar packages
Based on the "Geography" category.
Alternatively, view HSlippyMap alternatives based on common mentions on social networks and blogs.
-
geodetics
Haskell library of data types and calculations for positions on planet Earth -
hcoord
Easily convert between latitude/longitude, Universal Transverse Mercator (UTM) and Ordnance Survey (OSGB) references with Haskell. -
geocode-google
Geocoding using the Google Web API (for Haskell)
Clean code begins in your IDE with SonarLint
Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.
Promo
www.sonarlint.org
Do you think we are missing an alternative of HSlippyMap or a related project?
README
Algo
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Haskell
GHCI
alex@x220:~/codaz/HSlippyMap$ ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling HSlippyMap ( HSlippyMap.hs, interpreted )
Ok, modules loaded: HSlippyMap.
*HSlippyMap> :load HSlippyMap
*HSlippyMap> let max = tileFromLatLong 48.9031 2.5214 12
*HSlippyMap> let min = tileFromLatLong 48.8146 2.1732 12
*HSlippyMap> :t max
max :: Tile
*HSlippyMap> tilesFromBBox min max
[http://tile.openstreetmap.org/12/2072/1409.png,http://tile.openstreetmap.org/12/2073/1409.png,http://tile.openstreetmap.org/12/2074/1409.png,http://tile.openstreetmap.org/12/2075/1409.png,http://tile.openstreetmap.org/12/2076/1409.png]
Exemple
Gist : https://gist.github.com/apeyroux/7de40a40770b544ce2727e307cb1e61e
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 :
alex@x220 ~ $ ./hsl | xargs wget -nv -O NULL --output-file osm.asi.log
alex@x220 ~ $ 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