Skip to main content

Tiled map viewer and track editor, using cached offline map tiles and track files

Project description

This is PyTopo, an application for exploring tiled maps cached locally.

See the project home page at for more information, examples, screenshots, hints on creating custom maps, and more.

It can download data from OpenStreetMap or other map servers, which may or may not require API keys; or you can use tiles from commercial programs like the Topo! or tiles you've generated yourself.

It can also display GPX, KML or KMZ track logs, and can measure distances and angles between points or give you the coordinates of a point.

It uses GTK for its user interface, so you will need libGTK plus either PyGTK (Python 2), or python-gi plus pygtkcompat (Python 3). Linux users can't install these from PyPI, but they can get these through their distro, or by compiling from source; on Debian or Raspbian, you'll probably need the following packages and their dependencies:

sudo apt-get install python-gi python-gi-cairo gir1.2-gtk-3.0 \
                     python-simplejson python-numpy python-pkg-resources

(or the python3- version of each of those packages, if you prefer). Windows users should be able to install these packages from pip. I don't have a good answer for Python and GTK on Mac; one possible solution is to install GIMP (follow the install links from then munge paths so that other programs can find the PyGTK that comes with GIMP.

If you want to read from a GPS, you'll need gpsd and python-gps.

You can install PyTopo with pip install pytopo (that doesn't include the GTK requirement because pip can't install GTK on Linux or Mac). Or install it from the source directory: python install

You can test-run it from the project directory if you have the pytopo directory in your PYTHONPATH: pytopo/ But if you want to see pin images, create a directory /usr/share/pytopo and copy pytopo-pin.png into it. Or just have pytopo-pin.png in the current directory when you run pytopo.

The first time you run pytopo, it will create a ~/.config/pytopo directory for its configuration files, and a ~/Maps directory for map data.

pytopo -h gives usage examples.

If you need custom maps., edit ~/.config/pytopo/pytopo.sites to add new map Collections (see examples in that file or on the project home page).

Code contributions appreciated!

Also in this project: ellie, a little script for reporting and plotting statistics (distance and elevation change) from a GPX track log. More information:

There are some unit tests in the test/ directory; run them with python -m unittest discover from the top-level directory.

The docs directory contains documentation on the two apps and the API. To build the documentation:

python build_sphinx


cd sphinxdoc
make html

Happy mapping!

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pytopo, version 1.6.1
Filename, size File type Python version Upload date Hashes
Filename, size pytopo-1.6.1-py3-none-any.whl (79.4 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pytopo-1.6.1.tar.gz (70.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page