#!/usr/bin/python3
from time import time
from os import stat, environ
from re import search
def nice_size(file):
size = stat(file).st_size
KB = 1024.
MB = 1024. * KB
GB = 1024. * MB
TB = 1024. * GB
if size < KB:
size, suffix = size, ''
elif size < MB:
size, suffix = size/KB, 'KB'
elif size < GB:
size, suffix = size/MB, 'MB'
elif size < TB:
size, suffix = size/GB, 'GB'
else:
size, suffix = size/TB, 'TB'
if size < 10:
return '%.1f %s' % (round(size,1), suffix)
else:
return '%d %s' % (round(size), suffix)
def nice_time(time):
if time < 15:
return 'moments'
if time < 90:
return '%d seconds' % time
if time < 60 * 60 * 1.5:
return '%d minutes' % (time / 60.)
if time < 24 * 60 * 60 * 1.5:
return '%d hours' % (time / 3600.)
if time < 7 * 24 * 60 * 60 * 1.5:
return '%d days' % (time / 86400.)
if time < 30 * 24 * 60 * 60 * 1.5:
return '%d weeks' % (time / 604800.)
return '%d months' % (time / 2592000.)
def file_info(file, rss_file, name):
torrent_file = file + '.torrent'
size = nice_size(file)
hash = search(r'\w{32}', open(file+'.md5', 'r').read()).group(0)
date = nice_time(time() - stat(file).st_mtime)
return '%(name)s (torrent) (RSS)
%(size)s, created %(date)s ago.
md5: %(hash)s.' % locals()
planet_link = file_info('planet/planet-latest.osm.bz2', 'planet/planet-bz2-rss.xml', 'Latest Weekly Planet XML File')
changesets_link = file_info('planet/changesets-latest.osm.bz2', 'planet/changesets-bz2-rss.xml', 'Latest Weekly Changesets')
planet_pbf_link = file_info('pbf/planet-latest.osm.pbf', 'pbf/planet-pbf-rss.xml', 'Latest Weekly Planet PBF File')
print("""
The files found here are regularly-updated, complete copies of the OpenStreetMap database.
Files published before the 12 September 2012 are distributed under a Creative Commons Attribution-ShareAlike 2.0 license, those published after are Open Data Commons Open Database License 1.0 licensed. For more information, see the project wiki.
%(planet_link)s
%(changesets_link)s
%(planet_pbf_link)s
Each week, a new and complete copy of all data in OpenStreetMap is made available as both a compressed XML file and a custom PBF format file. Also available is the 'history' file which contains not only up-to-date data but also older versions of data and deleted data items.
A smaller file with complete metadata for all changes ('changesets') in XML format is also available.
You are granted permission to use OpenStreetMap data by the OpenStreetMap License, which also describes your obligations.
You can process the file or extracts with a variety of tools. Osmosis is a general-purpose command-line tool for converting the data among different formats and databases, and Osm2pgsql is a tool for importing the data into a Postgis database for rendering maps.
Processed coastline data derived from OSM data is also needed for rendering usable maps.
The complete planet is very large, so you may prefer to use one of several periodic extracts (individual countries or states) from third parties. GeoFabrik.de and BBBike.org are two providers of extracts with up-to-date worldwide coverage.
OSM data is free to use, but is not free to make or host. The stability and accuracy of OSM.org depends on its volunteers and donations from its users. Please consider making an annual recurring gift to OSM to support the infrastructure, tools, working groups, and other incentives needed to create the map.
Donations can be made at supporting.openstreetmap.org/donate. Suggestions assume $US or equivalent.
Large businesses with revenue in the hundreds of thousands to millions should join as a corporate members to receive additional benefits.
If you find data within OpenStreetMap that you believe is an infringement of someone else's copyright, then please make contact with the OpenStreetMap Data Working Group.