-
Notifications
You must be signed in to change notification settings - Fork 3
/
ward-colorize.py
35 lines (25 loc) · 973 Bytes
/
ward-colorize.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
'''Usage: ward-colorize.py <csv-file or csv-url>
By Thejesh GN <[email protected]>'''
import csv, sys, urllib, re
from lxml import etree
# Load data from the URL passed
if len(sys.argv) < 2:
print __doc__
sys.exit(0)
if re.match( "[a-z+]+://", sys.argv[1], re.IGNORECASE):
source = urllib.urlopen(sys.argv[1])
else:
source = open(sys.argv[1])
# Load the SVG map
svg = etree.parse('bbmp-ward.svg')
# Set the namespaces used
ns = {'svg':'http://www.w3.org/2000/svg'}
# Map colors - MFO
#colors = ["#F1EEF6", "#D4B9DA", "#C994C7", "#DF65B0", "#DD1C77", "#980043"]
# Map colors - PARTY, BJP1, INC2, JDS3, IND4 Others5
colors = ["#000000","#fc7f19", "#1475c4","#1dc414", "#f7f30a", "#f70ad7","#f70ad7"]
# Color the counties based on unemployment rate
for ward_id, ward_value in csv.reader(source):
for element in svg.xpath('//svg:path[@id=%s]' % ward_id, namespaces=ns):
element.set('fill', colors[int(ward_value)])
print etree.tostring(svg)