openstreetmap history analysis
HTML JavaScript Python Makefile
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lifetime
lives
num_changes
scripts
unique_per_month
LICENSE
Makefile
README.md
VISUALIZATION.md
changesets_2012.png
changesets_before.png
changesets_month.png
schema.sql
stm.py

README.md

sometimemachine

Analysis of OpenStreetMap History.

Latest weekly changesets on planet.openstreetmap.org includes all changesets for the recorded history of OpenStreetMap as a 4.2G XML file.

Changesets have:

  • uid
  • id
  • bbox
  • num_changes
  • date_opened
  • date_closed

This code is inspired by ChangesetMD, with a few differences:

  • SQLite instead of Postgres
  • expat instead of sax.handler
  • more compact schema for smaller databases
  • BSD instead of GPL

Initialize an SQLite file:

cat schema.sql | sqlite3 changesets.sqlite

Import a changeset dump into sqlite:

python stm.py changesets-latest.osm[.bz2] changesets.sqlite

Indexes

 create index uid_idx on osm_changeset (user_id);

Products

Videos: OSM Edits, centers of OSM edits.

unique_per_day.js

two_edit_per_month.js

Graphs

These guys you can generate with scripts but are too heavy to put on gist.

When users register versus how likely they are to contribute for more than a year. Nearly all of the early users of OpenStreetMap contributed more than a year, while users who started contributing 2 years ago are much less likely.

Changesets in the last 3 months (dark red), last year (orange), all time (light orange)

User lives histogram. Of course, the vast majority of users last less than two days. It's an exponential distribution from there on with no clear peaks.