In Progress

Panorama Image tile server - Google Apps Engine


Thanks for looking at this project. I am building an open source panorama viewing system (similar in concept to Google Street View). This project is focusing on just one but an important module for the whole system - The image tile server.

This tool will accept requests via a URL then grab the full panorama image (from either a remote server or local store) and return the requested tile to the user.

I would like a fast system for serving panoramic images running on Google apps engine.

The original images will either be an external HTTP or FTP URL or a path to a file in an image on the local data store.

An image tile will be requested from this server with a URL something like this

[url removed, login to view]

Tile size = normally 256 or 512 - all tiles are square

X,Y,Z = the tile position and zoom level for the image stack (tile structure link below)

image = an encrypted location for the image. (described below)

Please use the same tiling structure as suggested in this page -> [url removed, login to view]

Note that the request for one tile will quickly followed (or occur simultaneously) with the request for more tiles from the same image. Please ensure the image is only retrieved, tiled and cached only once in this case.

Cache the resulting tiles, no need to cache the original file


I want to prevent people using the tool without going via our main server. This is why the image location in the URL is encrypted. So this system will have a "Secret Key" to decrypt the image location. The server (not part of this project) that will generate the URL will be PHP based so please use an encryption method that is available as standard in both PHP and Google Apps engine.

Only use valid URL and image paths once decrypted - if path not valid return an "Invalid image path".


The system is to have a few limits set by variables that will limit the disk space and the size of the images users can access. (see below)

System configuration Variables

* MB limit to image tiles = 2000 | tile_cache = 2000

* secret key | secret = emuview

* max tile size px| max_tile = 512

* max tile zoom level | max_tile_zoom = 5

* min tile zoom level | max_tile_zoom = 0


When tiling an image please create all the tiles for the image for each zoom level and store in the cache.

There is some room for running over the max cache size. So to deal with the size of the cache you could - once a new image is tilled - check if the cache is over size - and if so, delete enough oldest accessed images to bring it back under the max size.

Please note that this is deleting the oldest access (not oldest created) images.

Store the tiles in a way that makes them as fast as possible to serve. For example - please ensure that we are not recalculating the image location decryption on each tile requested from the cache as this can be stored as part of the file name.

As tiles are removed from the cache it is likely that only part of a full panorama will remain in the cache - this is good as people will not explore all images to the same depth. But if one one of the missing tiles is then requested the full images will need to be collected and re-tilled

Please make it as fast and efficient as possible.

Google apps engine has a image handling API that I suspect will be the fastest way for producing the tiles - but I will leave that up to you to decide if it is the best way to go.

I hope that all makes sense - let me know if you have any questions.

Should be a fun project I think.

Matt :)

Skills: Google App Engine, Python, Software Architecture

See more: create tile server panorama image, street view panorama open source javascript, image tile server, tool tiles panorama street view, panorama image tile server, panorama image tiling 256, why data structure is important, why data structure, using google apps, system level architecture, stack of data structure, stack in data structure with example, stack in data structure, stack data structure, stack concept in data structure, looking for full stack php developers, https developers, google system architecture, google php server for developers, google apps javascript, ftp engine, example of stack in data structure, ensure data security, developers apps

About the Employer:
( 41 reviews ) Australia

Project ID: #4218555

Awarded to:


hi, I am expert in python. I can do it.

$225 USD in 7 days
(17 Reviews)

2 freelancers are bidding on average $150 for this job


Hi! Please see your inbox.

$150 USD in 20 days
(2 Reviews)

Hi Matt! Really interesting project. Please contact me so that we can discuss more details. I also hope we'll be fun :)

$150 USD in 15 days
(2 Reviews)