A demo of Generating Google Tiles With mapserver
Stephen Woodbridge
woodbri at SWOODBRIDGE.COM
Sat May 7 09:18:07 PDT 2005
Jon,
Very nice demo and performace is very good also. I would be interested
in converting it to perl/mapscript and help to improve it.
-Steve W.
Jon Saints wrote:
> I have implemented a demo using python mapscript and
> mapserver that gives very basic functionality simillar
> to google maps.
>
> I do not pre-render maps at the various scales.
> mapscale are rendered on the fly and the indiviual
> tile images are sent directly to the user - never
> saved on disk. I know this will cause problems for
> labeling, but there may be a way around this with some
> DHTML tricks.
>
> Please remember that this demo is running off of my
> desktop computer over a wifi connection. performance
> may be very slow and my poor desktop might crash with
> too many hits. I offer only a proof of concept and
> welcome coments from the list.
>
> Right now the demo only works in Mozilla Firefox (on
> Win, Linux and OsX). If you zoom in far enough on the
> washington DC map you will see aerial photos.
>
>
> Click the "START HERE" button to start the app.
> http://216.15.56.185:8080/jons/indon/client/test.xul
>
> Thanks
> JOn
>
>
>
>
>
>
>
> --- Stephen Woodbridge <woodbri at SWOODBRIDGE.COM>
> wrote:
>
>>Hi all,
>>
>>I posted about generating google-like tiles using
>>mapserver earlier. I
>>took it to the next step of writing a perl/mapscript
>>script to compute
>>the cellsize for each zoom scale and used that to
>>compute the number of
>>tiles I would need to generate to cover my map
>>extents. I thought I
>>would share the results with you. You can probably
>>save maybe 20-30% on
>>the number of tiles if you can recognize all water
>>only tiles and
>>eliminate them, but this leaves you with 70-80% of
>>what looks like
>>infinity for most of us.
>>
>> Scale Num Tiles
>> ---------- -----------
>> 50000000 256
>> 4000000 3072
>> 1000000 40960
>> 500000 150784
>> 150000 1634816
>> 50000 14586880
>> 15000 161796096
>> 10000 363410944
>> 5000 1453643776
>> 2700 4984920576
>> ---------- -----------
>> Total Tiles 6980188160
>> Approx. Disk Space (assume 3K per tile) =
>>21,443,138,027,520
>>
>>SOoooo, it requires about 7 Billion 128x128 tiles
>>and assuming that the
>>average tile size is about 3K (the smallest tile
>>that I have seen google
>>return) it requires 21 Tera bytes of disk space. It
>>gets worse!
>>
>>If you assume you can generate 1000 tiles minute
>>(16+/sec) then:
>>
>>6,980,188,160 / 1000 tiles/min / 60 min/hr / 24
>>hr/day / 365 day/yr =
>>13.3 yrs
>>
>> 1,000 tiles/min = 13.3 yr = 4847 days
>> 10,000 tiles/min = 1.33 yr = 485 days
>>100,000 tiles/min = 0.13 yr = 49 days
>>
>>The only way to do the higher generation rates is in
>>a highly
>>distributed environment or you run into I/O bottle
>>necks both reading
>>and writing data.
>>
>>Oh yeah, I only used 10 zoom scales above, Google
>>has 15, so you do the
>>math :)
>>
>>An alternative to pre generating the tiles, is
>>generating them on the
>>fly as they are need and caching them, then removing
>>the least used ones
>>over time. This is a much more complicated scenario
>>and requires a lot
>>of additional code to manage them. Also you can not
>>just generate a
>>single tile as needed because of the way mapserver
>>handles dynamic
>>placement of labels. You would need to generate a
>>"super" tile of say
>>8x8 or 16x16 tiles and chop it into the standard
>>tiles. I looked at
>>generating a 16x16 super tile at 2048x2048 pixels
>>that would get chopped
>>into 256 tiles for pre-generation, but 6x6 tiles
>>(768x768 pixels) might
>>be better for dynamic generation. You would have to
>>find the sweet spot
>>where the super tile is large enough to minimize
>>labeling issues and
>>small enough the it generates and chops quickly.
>>
>>-Steve W.
>>
>
>
More information about the MapServer-users
mailing list