-
Notifications
You must be signed in to change notification settings - Fork 6
/
Makefile
166 lines (132 loc) · 4.88 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# Makefile para georef-ar-etl
ETL_PYTHON ?= python
ETL_PIP ?= pip3
ETL_ALEMBIC ?= alembic
ALEMBIC_COMMAND = $(ETL_ALEMBIC) --config config/alembic.ini
ETL_COMMAND = $(ETL_PYTHON) -m georef_ar_etl
GIT_BRANCH ?= master
.PHONY: files
# Ejecución del ETL
update:
git checkout $(GIT_BRANCH)
git pull origin $(GIT_BRANCH)
make migrate
$(ETL_PIP) install -r requirements.txt -r requirements-dev.txt
# Ejecuta todos los procesos
run:
$(ETL_COMMAND)
# Ejecuta el proceso de provincias
provincias:
$(ETL_COMMAND) -p provincias
# Ejecuta el proceso de departamentos
departamentos:
$(ETL_COMMAND) -p departamentos
# Ejecuta el proceso de municipios
municipios:
$(ETL_COMMAND) -p municipios
# Ejecuta el proceso de localidades_censales
localidades_censales:
$(ETL_COMMAND) -p localidades_censales
# Ejecuta el proceso de calles
calles:
$(ETL_COMMAND) -p calles
# Ejecuta todos los procesos, pero solo la parte de generación de archivos
files:
$(ETL_COMMAND) -p provincias --start 8 --no-mail
$(ETL_COMMAND) -p departamentos --start 9 --no-mail
$(ETL_COMMAND) -p municipios --start 9 --no-mail
$(ETL_COMMAND) -p localidades_censales --start 9 --no-mail
$(ETL_COMMAND) -p asentamientos --start 8 --no-mail
$(ETL_COMMAND) -p localidades --start 6 --no-mail
$(ETL_COMMAND) -p calles --start 5 --no-mail
$(ETL_COMMAND) -p intersecciones --start 4 --no-mail
$(ETL_COMMAND) -p cuadras --start 6 --no-mail
$(ETL_COMMAND) -p sinonimos -p terminos_excluyentes --no-mail
info:
$(ETL_COMMAND) -c info
console:
$(ETL_COMMAND) -c console
stats:
$(ETL_COMMAND) -c stats
# Recetas para utilizar Alembic, la herramienta de migraciones de bases de
# datos para SQLAlchemy.
# Para generar una nueva migración (solo desarrolladores):
# 1) Modificar models.py con los datos deseados.
# 2) Borrar todas las tablas del proyecto.
# 3) Ejecutar make migrate.
# 4) Ejecutar make makemigrations.
# 5) Editar la migración creada para agregarle título.
makemigrations:
PYTHONPATH=$$(pwd) $(ALEMBIC_COMMAND) revision --autogenerate
migrate:
PYTHONPATH=$$(pwd) $(ALEMBIC_COMMAND) upgrade head
history:
PYTHONPATH=$$(pwd) $(ALEMBIC_COMMAND) history
# Recetas para uso de desarrollo del ETL:
# Testing/Linting
code_checks:
pyflakes georef_ar_etl tests
pylint georef_ar_etl tests
# TEST_FILES puede definirse opcionalmente
test:
python -m unittest $(TEST_FILES)
coverage:
coverage run --source=georef_ar_etl --omit=georef_ar_etl/__main__.py -m unittest
coverage report
# Crear archivos de prueba utilizando una sola provincia como dato.
# Para lograr esto, se ejecuta cada proceso del ETL hasta el punto donde se
# cargó la tabla tmp_X, directamente de los datos descargados. Desde esa tabla,
# se genera un archivo Shapefile y se lo guarda en tests/test_files/.
# Se debería re-ejecutar la receta cada vez que cambia el esquema de datos utilizado
# por IGN/INDEC/etc. en sus archivos, y adaptar los tests correspondientes.
TEST_PROVINCE = 70
create_test_files:
$(ETL_COMMAND) -p provincias --end 3
$(ETL_COMMAND) -p departamentos --end 4
$(ETL_COMMAND) -p municipios --end 4
$(ETL_COMMAND) -p localidades_censales --end 4
$(ETL_COMMAND) -p asentamientos --end 4
$(ETL_COMMAND) -p calles --end 3
ogr2ogr -f "ESRI Shapefile" \
tests/test_files/test_provincias \
"PG:host=$$DB_HOST dbname=$$DB_NAME user=$$DB_USER password=$$DB_PASS" \
-sql "select * from tmp_provincias where in1='$(TEST_PROVINCE)'" \
-nln "test_provincias" \
-lco "ENCODING=utf-8" \
-overwrite
ogr2ogr -f "ESRI Shapefile" \
tests/test_files/test_departamentos \
"PG:host=$$DB_HOST dbname=$$DB_NAME user=$$DB_USER password=$$DB_PASS" \
-sql "select * from tmp_departamentos where in1 like '$(TEST_PROVINCE)%'" \
-nln "test_departamentos" \
-lco "ENCODING=utf-8" \
-overwrite
ogr2ogr -f "ESRI Shapefile" \
tests/test_files/test_municipios \
"PG:host=$$DB_HOST dbname=$$DB_NAME user=$$DB_USER password=$$DB_PASS" \
-sql "select * from tmp_municipios where in1 like '$(TEST_PROVINCE)%'" \
-nln "test_municipios" \
-lco "ENCODING=utf-8" \
-overwrite
ogr2ogr -f "ESRI Shapefile" \
tests/test_files/test_asentamientos \
"PG:host=$$DB_HOST dbname=$$DB_NAME user=$$DB_USER password=$$DB_PASS" \
-sql "select * from tmp_asentamientos where cod_bahra like '$(TEST_PROVINCE)%'" \
-nln "test_asentamientos" \
-lco "ENCODING=utf-8" \
-overwrite
ogr2ogr -f "ESRI Shapefile" \
tests/test_files/test_localidades_censales \
"PG:host=$$DB_HOST dbname=$$DB_NAME user=$$DB_USER password=$$DB_PASS" \
-sql "select * from tmp_localidades_censales where link like '$(TEST_PROVINCE)%'" \
-nln "test_localidades_censales" \
-lco "ENCODING=utf-8" \
-t_srs "EPSG:4326" \
-overwrite
ogr2ogr -f "ESRI Shapefile" \
tests/test_files/test_cuadras \
"PG:host=$$DB_HOST dbname=$$DB_NAME user=$$DB_USER password=$$DB_PASS" \
-sql "select * from tmp_cuadras where nomencla like '$(TEST_PROVINCE)%'" \
-nln "test_cuadras" \
-lco "ENCODING=utf-8" \
-overwrite