try gosmore or navit and improve those. Lambertus is using gosmore as the base for http://yournavigation.org