| 1 | = Sqlite batch import script = |
| 2 | [http://talk.maemo.org/showpost.php?p=1058668&postcount=788 original source] |
| 3 | |
| 4 | OK, I've got a working Perl script to import map tiles into the database. |
| 5 | |
| 6 | At the moment, it won't run on the N900 itself, as I'm having a few problems getting the SQLite module to build on my scratchbox installation; I'll work on that over the next few days when I have spare time and see if I can get that working. |
| 7 | |
| 8 | '''Dependencies:''' You'll need to install the '''Perl DBI''' and '''DBD-SQLite''' modules. These should be available from your disto's repositories (otherwise, get them from CPAN). |
| 9 | |
| 10 | It took about 75 minutes to import my 200 000 tiles into the database on my dual-core Athlon machine; obviously this will vary depending on the speed of the machine it's done on. The script is interruptible - just hit '''Control-C''' and it'll shut down cleanly. Then restart at your leisure. |
| 11 | |
| 12 | Getting it to work on an OS other than Linux is left as an exercise for the reader, as I'm happily Microsoft-free. |
| 13 | |
| 14 | It demonstrates well the oft-mentioned clustering problem with FAT partitions; my tile files allocated '''12.5GB''' of space, whereas the store file is '''only 543MB'''. |
| 15 | |
| 16 | '''Instructions:''' |
| 17 | |
| 18 | Download the script from http://www.beermad.org.uk/mapconvert |
| 19 | |
| 20 | Either copy your '''~/MyDocs/.maps''' directory to your Linux box or mount your '''!MyDocs''' partition on it. Try to preserve the timestamps if copying (as they're recorded in the database, I assume they're used to work out if a new copy of any tile is needed if they've changed on the tile server) - for example, if using scp: |
| 21 | {{{ |
| 22 | scp -pr ~/MyDocs/.maps mycomputer:/tmp |
| 23 | }}} |
| 24 | The script only works on tiles in the current working directory, so for each map-type, cd into the relevant directory: |
| 25 | {{{ |
| 26 | cd /path/to/tile_directory |
| 27 | }}} |
| 28 | Then run the script (no parameters needed). |
| 29 | |
| 30 | If necessary, copy the '''lookup.sqlite''' and '''store.sqlite.*''' files back to your N900. |
| 31 | |
| 32 | If there are any tiles already in the database, it leaves them there and it doesn't try to over-write any if one it finds already exists (at some time I should change this so it does over-write if the tile file is newer). |
| 33 | |
| 34 | If you already have tiles in a database, I recommend making a copy first, just in case anything goes wrong. I've tested the script a fair bit, but can't guarantee something won't screw up. |