forked from arthuralvim/br-atlas
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
139 lines (113 loc) · 3.87 KB
/
Makefile
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# Source:
# Institudo Brasileiro de Geologia e Estatistica
# http://mapas.ibge.gov.br/
# -- Configurations
# TopoJSON configurations
TOPOJSON = node --max_old_space_size=8192 node_modules/.bin/topojson -q 1e6
# All Brazilian states
STATES = \
ac al am ap ba ce df es go ma \
mg ms mt pa pb pe pi pr rj rn \
ro rr rs sc se sp to
all: \
node_modules \
$(addprefix topo/,$(addsuffix -municipalities.json,$(STATES))) \
$(addprefix topo/,$(addsuffix -micro.json,$(STATES))) \
$(addprefix topo/,$(addsuffix -meso.json,$(STATES))) \
$(addprefix topo/,$(addsuffix -state.json,$(STATES))) \
permission
# Install dependencies
node_modules:
npm install
# Add execute permission
permission:
chmod +x scripts/merge.py
# .SECONDARY with no dependencies marks all file targets mentioned in the makefile as secondary.
.SECONDARY:
# -- Downloading and extracting IBGE files
# Downloads the zip files
# ftp://geoftp.ibge.gov.br/malhas_digitais/municipio_2010/
zip/%.zip:
$(eval STATE := $(patsubst %-municipalities,%,$*))
$(eval STATE := $(patsubst %-micro,%,$(STATE)))
$(eval STATE := $(patsubst %-meso,%,$(STATE)))
$(eval STATE := $(patsubst %-state,%,$(STATE)))
$(eval FILENAME := $(subst -municipalities,_municipios,$*))
$(eval FILENAME := $(subst -micro,_microrregioes,$(FILENAME)))
$(eval FILENAME := $(subst -meso,_mesorregioes,$(FILENAME)))
$(eval FILENAME := $(subst -state,_unidades_da_federacao,$(FILENAME)))
mkdir -p $(dir $@)
curl 'ftp://geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_municipais/municipio_2010/$(STATE)/$(FILENAME).zip' -o [email protected]
mv [email protected] $@
# Extracts the files
tmp/%/: zip/%.zip
rm -rf $(basename $@)
mkdir -p $(dir $@)
unzip -d tmp/$* $<
$(eval REGION := $(patsubst %-municipalities,municipalities,$*))
$(eval REGION := $(patsubst %-micro,micro,$*))
$(eval REGION := $(patsubst %-meso,meso,$*))
$(eval REGION := $(patsubst %-state,state,$*))
mv $@/*.shp $@/map.shp
mv $@/*.shx $@/map.shx
mv $@/*.dbf $@/map.dbf
mv $@/*.prj $@/map.prj
# -- Generate GeoJSON files
geo/%.json: tmp/%/
mkdir -p $(dir $@)
ogr2ogr -f GeoJSON $@ tmp/$*/map.shp
iconv -f ISO-8859-1 -t UTF-8 $@ > [email protected]
mv [email protected] $@
touch $@
# -- Generating TopoJSON files for each state
# For individual states, municipality level
topo/%-municipalities.json: geo/%-municipalities.json
mkdir -p $(dir $@)
$(TOPOJSON) --id-property=CD_GEOCODM -p name=NM_MUNICIP -o $@ municipalities=$^
touch $@
# For individual states, micro-region level
topo/%-micro.json: geo/%-micro.json
mkdir -p $(dir $@)
$(TOPOJSON) --id-property=NM_MICRO -p name=NM_MICRO -o $@ micro=$^
touch $@
# For individual states, meso-region level
topo/%-meso.json: geo/%-meso.json
mkdir -p $(dir $@)
$(TOPOJSON) --id-property=NM_MESO -p name=NM_MESO -o $@ meso=$^
touch $@
# For individual states, state level:
topo/%-state.json: geo/%-state.json
mkdir -p $(dir $@)
$(TOPOJSON) --id-property=CD_GEOCODU -p name=NM_ESTADO -p region=NM_REGIAO -o $@ state=$^
touch $@
# -- Generating TopoJSON files for Brazil
# For Brazil with municipalities
topo/br-municipalities.json: $(addprefix geo/,$(addsuffix -municipalities.json,$(STATES)))
mkdir -p $(dir $@)
$(TOPOJSON) --id-property=CD_GEOCODM -p name=NM_MUNICIP -o $@ -- $^
./scripts/merge.py $@ > [email protected]
mv [email protected] $@
# For Brasil with states
topo/br-states.json: $(addprefix geo/,$(addsuffix -state.json,$(STATES)))
mkdir -p $(dir $@)
$(TOPOJSON) --id-property=CD_GEOCODU -p name=NM_ESTADO -p region=NM_REGIAO -o $@ -- $^
./scripts/merge.py $@ > [email protected]
mv [email protected] $@
# Simplified version of state file
topo/br-states.min.json: topo/br-states.json
$(TOPOJSON) -p --simplify-proportion=.2 -o $@ -- $^
# -- Clean
# Clean temporary files
clean-tmp:
rm -rf tmp
# Clean extra files
clean-extra:
rm -rf zip
rm -rf tmp
# Clean result files
clean-result:
rm -rf shp
rm -rf geo
rm -rf topo
# Clean everything
clean: clean-tmp clean-result clean-extra