Cool,

This explains why google maps and google satellite images often show offset
roads -- ie the map road runs near but not on the satellite image of the
road.  This
simple uniform tile method precludes resampling the image to apply
cartegraphic
projections.


On 3/23/06, Simon Ampleman <[EMAIL PROTECTED]> wrote:
>
> Hello,
>
> Here are some very wonderful functions to convert any latitude-longitude
> in the world to a pixel coordinate.
>
> I developped these J formulas by playing around with encrypted and
> hidden javascript stuff from google map...
>
> There is 17 zoom available...
>
> The smallest world is on a single tile 256 * 256 pixels (zoom 0)....
> The largest world is on 131072 tiles wide by 131072 tiles high... which
> is 33 554 432 pixels * 33 554 432 pixels (zoom 17)
>
> Using these formulas, any pixels in your screen becomes
> geo-referenced.... and you can plot gps data directly on manually drawed
> images or georeferenced image....
>
> sin =: 1&o.
> PixByZoom =: 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072
> 262144 524288 1048576 2097152 4194304 8388608 16777216
> PixByZoomLNG =:
> 0.7111111111111111,1.4222222222222222,2.8444444444444445,5.688888888888889
> ,11.377777777777778,22.755555555555556,45.51111111111111,91.02222222222222
> ,182.04444444444445,364.0888888888889,728.1777777777778,1456.3555555555556
> ,2912.711111111111,5825.422222222222,11650.844444444444,23301.68888888889,
> 46603.37777777778,93206.75555555556
> PixByZoomLAT =:
> 40.74366543152521,81.48733086305041,162.97466172610083,325.94932345220166,
> 651.8986469044033,1303.7972938088066,2607.5945876176133,5215.189175235227,
> 10430.378350470453,20860.756700940906,41721.51340188181,83443.02680376362,
> 166886.05360752725,333772.1072150545,667544.214430109,1335088.428860218,
> 2670176.857720436,5340353.715440872
> TilesPerZoom =: 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
> 32768 65536 131072
>
> PIXtoLL =: 3 : 0
>    'zoom x y' =. y.
>    zv =. zoom pick PixByZoom
>    lon =. (x - zv) % (zoom pick PixByZoomLNG)
>    lat =. (y - zv) % -(zoom pick PixByZoomLAT)
>    lat =. 0.017453292519943295 %~ (+: arctan ^ lat) - 1.5707963267948965
>    lat,lon
> )
>
> LLtoPIX =: 3 : 0
>    'zoom lat lon' =. y.
>    zv =. zoom pick PixByZoom
>    X =. <.zv + lon * (zoom pick PixByZoomLNG)
>    Y =. 0.9999 <. _0.9999 >. (sin 0.017453292519943295 * lat)
>    Y =. <.zv + 0.5 * (^. (1+Y) % (1-Y)) * -(zoom pick PixByZoomLAT)
>    X,Y
> )
>
> Test =: 3 : 0
>    NB. Quebec at Zoom 0 is at pixel 77,90 on (256*256)
>    'X Y' =: LLtoPIX 0,46.99,-71.34855
>
>    NB. Quebec at Zoom 17 is at pixel 10127049,11803340
>   'X Y' =: LLtoPIX 17,46.99,-71.34855
> )
>
> Have a good day!
>
> Simon
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to