Subversion Repositories mkgmap

Rev

Rev 3408 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#
# File: p.py
#
# Copyright (C) 2006 Steve Ratcliffe
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 2 as
#  published by the Free Software Foundation.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#
# Author: Steve Ratcliffe
# Create date: 31 Dec 2006
#

#
# Create the new style files points, lines and polygons from a map-features file.
#

import sys
import csv

MAP_FEATURES = 'map-features.csv'

if len(sys.argv) > 1:
        MAP_FEATURES = sys.argv[1]

points = []
lines = []
polygons = []

features = {
                'polyline': lines,
                'polygon': polygons,
                'point': points,
        }
file_names = {
                'polyline': 'lines',
                'polygon': 'polygons',
                'point': 'points',
        }

def main():

        # Read the garmin feature name to internal number file
        f = open(MAP_FEATURES)
        r = csv.reader(f, delimiter='|')
        for line in r:
                kind = line[0]
                if kind[0] == '#': continue
                key = line[1] + '=' + line[2]
                value = makeval(line[3], line[4])
                res = int(line[5])

                line = "%s [%s resolution %d]" % (key, value, res)
                ft = features[kind]
                ft.append(line)


        # Write out the files
        for name in features.keys():
                f = open(file_names[name], 'w')
                ft = features[name]
                for line in ft:
                        f.write(line)
                        f.write("\n")

def makeval(a, b):
        if not b: return a
        return a + b[2:]

if __name__ == '__main__':
        main()