Permalink
Cannot retrieve contributors at this time
#!/usr/bin/env python3 | |
import csv | |
import json | |
from titlecase import titlecase # you need to install the titlecase package from PyPi :-) | |
# files to merge | |
geojson_file = 'website/data/all_library_services.geojson' | |
csv_file = 'website/data/library_services_information.csv' | |
# fields to match on | |
geojson_match = 'name' | |
csv_match = 'short_name' | |
# output file name | |
output_file = 'website/data/boundaries.geojson' | |
# open the geojson file | |
file = open(geojson_file, 'r') | |
# read the file and then load the json so it's a dict | |
json_data = json.loads(file.read()) | |
# for each geojson feature, if a field in the json matches a field in the csv, add new properties to the json | |
for feature in json_data['features']: | |
with open(csv_file, newline='') as f: | |
# use DictReader so we can use the header names | |
reader = csv.DictReader(f) | |
for row in reader: | |
# look for match | |
if row[csv_match] == feature['properties'][geojson_match]: | |
# create new properties in geojson | |
for k in row: | |
feature['properties'][k] = row[k] | |
downcased = titlecase(feature['properties'][geojson_match]) # titlecase name | |
feature['properties']['name'] = downcased | |
# write out new geojson file with the updates | |
with open(output_file, 'w') as newfile: | |
json.dump(json_data, newfile, separators=(',', ':')) |