#!/usr/bin/env python

import sys

from xml.dom.minidom import parse, parseString


input = open(sys.argv[1])

dom = parse(input)

#root = dom.getElementsByTagName('osm')

id_map = {}

used = set([])
# collect used nodes
way_nodes = dom.getElementsByTagName('nd')
for node in way_nodes:
    used.add(node.attributes['ref'].value)

count = 0
last_id = 0
nodes = dom.getElementsByTagName('node')
total = len(nodes)
last_percentage = 0
for node in nodes:
    count += 1
    old_id = node.attributes['id'].value
    if old_id in used:
        last_id += 1
        id_map[old_id] = str(last_id)
        node.attributes['id'] = str(last_id)
    else:
        percentage = 100*count/total
        if percentage > last_percentage:
            last_percentage = percentage
            print >>sys.stderr, "%d%% done: removed %d nodes out of %d" % (
                percentage, count, total)
        pass #node.parentNode.removeChild(node)

way_nodes = dom.getElementsByTagName('nd')
for node in way_nodes:
    node.attributes['ref'] = id_map[node.attributes['ref'].value]

last_id = 0
roads = dom.getElementsByTagName('way')
for road in roads:
    last_id += 1
    old_id = road.attributes['id'].value
    road.attributes['id'] = str(last_id)

print dom.toprettyxml().encode('utf-8')

