GPX slippy map

From OpenStreetMap Wiki
Jump to: navigation, search

This renders GPX files on-the-fly to a transparent slippy-map layer, allowing you to browse tracklogs in more detail than the existing preview image.

Front page is at:

http://dev.openstreetmap.org/~ojw/gpx/list.php

Note thas to find the .gpx ID, you have to go to your own gpx page and try to download it. Something like 1234567.gpx will be proposed, the first 7 numbers are the ID.

Or browse to a URL of the form:

http://dev.openstreetmap.org/~ojw/gpx/?gpx=[the GPX trace ID]

e.g.

http://dev.openstreetmap.org/~ojw/gpx/?gpx=113257

Contents

Overview

Gpx slippy map overview.png

Source code

Download from:

http://svn.openstreetmap.org/applications/rendering/gpx_slippy_map/

revision history is viewable at:

http://trac.openstreetmap.org/browser/applications/rendering/gpx_slippy_map

Benchmarks

For a 9999-point tracklog:

Optimisations done

Optimisations to do

please add any suggestions here

How you can help

GPX tiles never expire if that helps your caching policy (because a given GPX-id/x/y/z will always return the same image unless the rendering software changes)

Binary file format

# +---------+--------+------+--------------------------+
# | size    | type   | name | description              |
# +---------+--------+------+--------------------------+
# | 4 bytes | int    | n    | number of trackpoints    |
# | 8 bytes | double | xmin | bounding box (W)         |
# | 8 bytes | double | xmax | bounding box (E)         |
# | 8 bytes | double | ymin | bounding box (S)         |
# | 8 bytes | double | ymax | bounding box (N)         |
# +---------+--------+------+--------------------------+
#   then n pairs of:
# +---------+--------+------+--------------------------+
# | 4 bytes | int    | x    | coded position           |
# | 4 bytes | int    | y    | coded position           |
# +---------+--------+------+--------------------------+
#
# xmin,xmax,ymin,ymax,x,and y are stored as positions 
# relative to the coverage of the slippy map system
#
# x positions from 0 = 180 degrees west to 1 = 180 degrees west
# y positions from 0 = 85.0511 north to 1 = 85.0511 south
#
# note that these are in the mercator projection, i.e.
# dLat/dy is not constant
#
# encoding of x and y:
# the positions described above are divided by 2^31 for
# storage as an integer, 
# i.e.:
#  x: 0 = fully west, to 2^31-1 = fully east
#  y: 0 = fully north, to 2^31-1 = fully south
#
# integers are big-endian
# double-precision floats are platform-dependant

Testing

Personal tools
Namespaces
Variants
Actions
site
Toolbox