

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import json import csv jsonfile = open ( "tl_2019_us_zcta510/out2.geojson" ) zipcodes = json.load(jsonfile) def getop(geolist, operation, longitude = None , latitude = None ): if isinstance (geolist[ 0 ], list ): answers = [getop(geo, operation) for geo in geolist] for answer in answers: lat, lng = answer if latitude is None : latitude = lat if longitude is None : longitude = lng latitude = operation(latitude, lat) longitude = operation(longitude, lng) return latitude, longitude else : return geolist with open ( "out2.csv" , "w" ) as csvfile: zwriter = csv.writer(csvfile) zwriter.writerow([ "Zip" , "Latitude max distance" , "Longitude max distance" ]) for zipcode in zipcodes[ "features" ]: zip = zipcode[ "properties" ][ "ZCTA5CE10" ] geometry = zipcode[ "geometry" ][ "coordinates" ] maxlat, maxlng = getop(geometry, lambda x, y: x if x > y else y) minlat, minlng = getop(geometry, lambda x, y: x if x < y else y) dlat = abs (maxlat - minlat) dlng = abs (maxlng - minlng) zwriter.writerow([ zip , dlat, dlng]) |