-
Notifications
You must be signed in to change notification settings - Fork 2
/
match_plan_by_blocks.py
61 lines (41 loc) · 1.66 KB
/
match_plan_by_blocks.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import json
import logging
from graphmaker.graph import Graph
from graphmaker.resources import BlockPopulationShapefile
from graphmaker.match import map_units_to_parts_via_blocks
from graphmaker.reports.splitting import splitting_report
import pandas
import geopandas
log = logging.getLogger(__name__)
log.addHandler(logging.StreamHandler())
log.setLevel(logging.DEBUG)
def match_wes_units_to_remedial_plan():
pa = Graph.load('./wes_graph.json')
blocks = pandas.read_csv('./data/block_to_wesid.csv', dtype=str)
plan = pandas.read_csv(
'./data/remedial/blocks_to_remedial.csv', names=['GEOID10', 'remedial'], dtype=str)
blocks = blocks.set_index('GEOID10')
plan = plan.set_index('GEOID10')
blocks['remedial'] = plan['remedial']
log.info('Mapping units to parts')
mapping = map_units_to_parts_via_blocks(
blocks, pa.graph, unit='wes_id', part='remedial')
for node in mapping:
if node != '0':
pa.graph.nodes[node]['remedial'] = mapping[node]
pa.save('./wes_graph2.json')
log.info('Getting block populations')
block_pops = geopandas.read_file(
'../graphmaker/graphmaker/blocks/42/tabblock2010_42_pophu.shp')
block_pops['GEOID10'] = block_pops['BLOCKID10'].astype('object')
block_pops = block_pops.set_index('GEOID10')
blocks['population'] = block_pops['POP10'].astype(int)
log.info('Creating report')
report = splitting_report(blocks, 'wes_id', 'remedial')
with open('./reports/splitting_energy_remedial_plan.json', 'w') as f:
json.dump(report, f)
return report
def main():
match_wes_units_to_remedial_plan()
if __name__ == '__main__':
main()