Refactor. Add Config. Modify columns. Add datapackage.json generator

This commit is contained in:
Inigo Flores 2016-05-01 20:05:03 +02:00
parent 19fb6b1fa0
commit d522599ca1
26 changed files with 124159 additions and 115224 deletions

184
README.md
View File

@ -19,28 +19,27 @@ Este dataset es parte del proyecto abierto y colaborativo CodeForSpain. Puedes o
- Descripción: http://www.ine.es/daco/daco42/codmun/codmun00i.htm
- Datos procesados: [/data/municipios.json](data/municipios.json) | [/data/municipios.csv](data/municipios.csv)
La lista de municipios sufre modificaciones todos los años para reflejar tanto los nuevos municipios (segregados), los que han desaparecido (incorporaciones o fusiones) y los cambios en sus denominaciones oficiales.
### Formato de los datos
Incluye los siguientes campos:
CPRO: Código INE de la provincia
CMUN: Código INE del municipio en relación a la provincia
DC: Dígito de control
NOMBRE: Denominación oficial
municipio_id: Código INE del municipio
provincia_id: Código INE de la provincia
cmun: Código INE del municipio en relación a la provincia
dc: Dígito de control
nombre: Denominación oficial
Ejemplo en CSV:
| CPRO | CMUN | DC | NOMBRE |
|------|------|----|------------------|
| 01 | 001 | 4 | Alegría-Dulantzi |
| 01 | 002 | 9 | Amurrio |
| 01 | 049 | 3 | Añana |
|municipio_id| provincia_id | cmun | dc | nombre |
|------------|--------------|------|----|------------------|
| 01001 | 01 | 001 | 4 | Alegría-Dulantzi |
| 01002 | 01 | 002 | 9 | Amurrio |
| 01049 | 01 | 049 | 3 | Añana |
En JSON:
@ -48,22 +47,25 @@ En JSON:
[
{
"CPRO": "01", // CÓDIGO DE LA PROVINCIA
"CMUN": "001", // CÓDIGO DEL MUNICIPIO
"DC": "4", // DIGITO DE CONTROL
"NOMBRE": "Alegría-Dulantzi"" // DENOMINACIÓN DEL MUNICIPIO
"municipio_id": "01001",
"provincia_id": "01",
"cmun": "001",
"dc": "4",
"nombre": "Alegría-Dulantzi""
},
{
"CPRO": "01",
"CMUN": "002",
"DC": "9",
"NOMBRE": "Amurrio"
"municipio_id": "01002",
"provincia_id": "01",
"cmun": "002",
"dc": "9",
"nombre": "Amurrio"
},
{
"CPRO": "01",
"CMUN": "049",
"DC": "3",
"NOMBRE": "Añana"
"municipio_id": "01049",
"provincia_id": "01",
"cmun": "049",
"dc": "3",
"nombre": "Añana"
},
@ -76,25 +78,28 @@ En JSON:
- Descripción: http://www.ine.es/daco/daco42/codmun/codmun00i.htm
- Datos procesados: [/data/municipios_historical.json](data/municipios_historical.json) | [/data/municipios_historical.csv](data/municipios_historical.csv)
La lista de municipios sufre modificaciones todos los años para reflejar tanto los nuevos municipios (segregados), los que han desaparecido (incorporaciones o fusiones) y los cambios en sus denominaciones oficiales.
### Formato de los datos
Incluye los siguientes campos:
CPRO: Código INE de la provincia
CMUN: Código INE del municipio en relación a la provincia
DC: Dígito de control
NOMBRE: Denominación oficial
YEAR: Año del dato
municipio_id: Código INE del municipio
year: Año del dato
provincia_id: Código INE de la provincia
cmun: Código INE del municipio en relación a la provincia
dc: Dígito de control
nombre: Denominación oficial
Ejemplo en CSV:
| CPRO | CMUN | DC | NOMBRE | YEAR |
|------|------|----|--------------------------|-------|
| 16 | 167 | 8 | Pozorrubio | 2013 |
| 16 | 167 | 8 | Pozorrubio de Santiago | 2014 |
|municipio_id| year | provincia_id | cmun | dc | nombre |
|------------|-------|---------------|------|----|--------------------------|
| 16167 | 2013 |16 | 167 | 8 | Pozorrubio |
| 16167 | 2014 |16 | 167 | 8 | Pozorrubio de Santiago |
@ -108,41 +113,42 @@ Ejemplo en CSV:
Las modificaciones que se producen son solo en las denominaciones oficiales de las provincias.
### Formato de los datos
### Formato de los datos
Incluye los siguientes campos:
codigo: Código INE de la provincia
nombre: Denominación oficial
provincia_id: Código INE de la provincia
nombre: Denominación oficial
Ejemplo en CSV:
| codigo | nombre |
|--------|------------------|
| 02 | Albacete |
| 03 | Alicante/Alacant |
| 04 | Almería |
| provincia_id | nombre |
|--------------|------------------|
| 02 | Albacete |
| 03 | Alicante/Alacant |
| 04 | Almería |
En JSON:
[
{
"codigo": "02",
"nombre": "Albacete"
"provincia_id": "02",
"nombre": "Albacete"
},
{
"codigo": "03",
"nombre": "Alicante\/Alacant"
"provincia_id": "03",
"nombre": "Alicante\/Alacant"
},
{
"codigo": "04",
"nombre": "Almería"
"provincia_id": "04",
"nombre": "Almería"
},
## Comunidades Autonomas
- URL: http://www.ine.es/daco/daco42/codmun/cod_ccaa.htm
@ -156,33 +162,33 @@ No ha sufrido modificaciones en los últimos años.
Incluye los siguientes campos:
codigo: Código INE de la autonomia
nombre: Denominación oficial
autonomia_id: Código INE de la autonomia
nombre: Denominación oficial
Ejemplo en CSV:
| codigo | nombre |
|--------|---------------------------|
| 01 | Andalucía |
| 02 | Aragón |
| 03 | "Asturias, Principado de" |
| autonomia_id | nombre |
|--------------|---------------------------|
| 01 | Andalucía |
| 02 | Aragón |
| 03 | "Asturias, Principado de" |
En JSON:
[
{
"codigo":"01",
"autonomia_id":"01",
"nombre":"Andalucía"
},
{
"codigo":"02",
"autonomia_id":"02",
"nombre":"Aragón"
},
{
"codigo":"03",
"autonomia_id":"03",
"nombre":"Asturias, Principado de"
},
@ -201,17 +207,17 @@ En JSON:
Incluye los siguientes campos:
CPRO: Código INE de la provincia
CISLA: Código INE de la isla
NOMBRE: Denominación oficial
isla_id: Código INE de la isla
provincia_id: Código INE de la provincia
nombre: Denominación oficial
Ejemplo en CSV:
| CPRO | CISLA | NOMBRE |
|------|-------|---------------|
| 7 | 074 | Menorca |
| 35 | 351 | Fuerteventura |
| 38 | 383 | "Palma, La " |
| isla_id | provincia_id | nombre |
|---------|---------------|---------------|
| 074 | 07 | Menorca |
| 351 | 35 | Fuerteventura |
| 383 | 38 | "Palma, La " |
@ -229,19 +235,21 @@ Ejemplo en CSV:
Incluye los siguientes campos:
CPRO: Código INE de la provincia
CISLA: Código INE de la isla
CMUN: Código INE del municipio en relación a la provincia
DC: Dígito de control
NOMBRE: Denominación oficial
municipio_id: Código INE del municipio
provincia_id: Código INE de la provincia
isla_id: Código INE de la isla
cmun: Código INE del municipio en relación a la provincia
dc: Dígito de control
nombre: Denominación oficial
Ejemplo en CSV:
| CPRO | CISLA | CMUN | DC | NOMBRE |
|------|-------|------|----|------------------------------|
| 7 | 072 | 46 | 6 | "Sant Antoni de Portmany" |
| 38 | 381 | 36 | 8 | "San Sebastián de la Gomera" |
| 35 | 352 | 27 | 1 | Teror |
| municipio_id | provincia_id | isla_id | cmun | dc | nombre |
|--------------|---------------|---------|------|----|------------------------------|
| 07046 | 07 | 072 | 046 | 6 | "Sant Antoni de Portmany" |
| 38036 | 38 | 381 | 036 | 8 | "San Sebastián de la Gomera" |
| 35027 | 35 | 352 | 027 | 1 | Teror |
@ -259,19 +267,21 @@ Existen datos desde 2008, aunque solo a partir de 2012 se incorpora el código I
Incluye los siguientes campos:
CPRO: Código INE de la provincia
CISLA: Código INE de la isla
CMUN: Código INE del municipio en relación a la provincia
DC: Dígito de control
NOMBRE: Denominación oficial
YEAR: Año del dato
municipio_id: Código INE del municipio
year: Año del dato
provincia_id: Código INE de la provincia
isla_id: Código INE de la isla
cmun: Código INE del municipio en relación a la provincia
dc: Dígito de control
nombre: Denominación oficial
Ejemplo en CSV:
| CPRO | CISLA | CMUN | DC | NOMBRE | YEAR |
|------|-------|------|----|----------------------|------|
| 38 | 384 | 52 | 6 | Vilaflor | 2014 |
| 38 | 384 | 52 | 6 | "Vilaflor de Chasna" | 2015 |
| municipio_id | year | provincia_id | isla_id | cmun | dc | nombre |
|--------------|------|---------------|---------|------|----|----------------------|
| 38052 | 2014 | 38 | 384 | 052 | 6 | Vilaflor |
| 38052 | 2015 | 38 | 384 | 052 | 6 | "Vilaflor de Chasna" |

View File

@ -1,4 +1,4 @@
codigo,nombre
autonomia_id,nombre
01,Andalucía
02,Aragón
03,"Asturias, Principado de"

1 codigo autonomia_id nombre
2 01 Andalucía
3 02 Aragón
4 03 Asturias, Principado de

View File

@ -1 +1 @@
[{"codigo":"01","nombre":"Andalucía"},{"codigo":"02","nombre":"Aragón"},{"codigo":"03","nombre":"Asturias, Principado de"},{"codigo":"04","nombre":"Balears, Illes"},{"codigo":"05","nombre":"Canarias"},{"codigo":"06","nombre":"Cantabria"},{"codigo":"07","nombre":"Castilla y León"},{"codigo":"08","nombre":"Castilla - La Mancha"},{"codigo":"09","nombre":"Cataluña"},{"codigo":"10","nombre":"Comunitat Valenciana"},{"codigo":"11","nombre":"Extremadura"},{"codigo":"12","nombre":"Galicia"},{"codigo":"13","nombre":"Madrid, Comunidad de"},{"codigo":"14","nombre":"Murcia, Región de"},{"codigo":"15","nombre":"Navarra, Comunidad Foral de"},{"codigo":"16","nombre":"País Vasco"},{"codigo":"17","nombre":"Rioja, La"},{"codigo":"18","nombre":"Ceuta"},{"codigo":"19","nombre":"Melilla"}]
[{"autonomia_id": "01", "nombre": "Andalucía"}, {"autonomia_id": "02", "nombre": "Aragón"}, {"autonomia_id": "03", "nombre": "Asturias, Principado de"}, {"autonomia_id": "04", "nombre": "Balears, Illes"}, {"autonomia_id": "05", "nombre": "Canarias"}, {"autonomia_id": "06", "nombre": "Cantabria"}, {"autonomia_id": "07", "nombre": "Castilla y León"}, {"autonomia_id": "08", "nombre": "Castilla - La Mancha"}, {"autonomia_id": "09", "nombre": "Cataluña"}, {"autonomia_id": "10", "nombre": "Comunitat Valenciana"}, {"autonomia_id": "11", "nombre": "Extremadura"}, {"autonomia_id": "12", "nombre": "Galicia"}, {"autonomia_id": "13", "nombre": "Madrid, Comunidad de"}, {"autonomia_id": "14", "nombre": "Murcia, Región de"}, {"autonomia_id": "15", "nombre": "Navarra, Comunidad Foral de"}, {"autonomia_id": "16", "nombre": "País Vasco"}, {"autonomia_id": "17", "nombre": "Rioja, La"}, {"autonomia_id": "18", "nombre": "Ceuta"}, {"autonomia_id": "19", "nombre": "Melilla"}]

View File

@ -1,12 +1,12 @@
CPRO,CISLA,NOMBRE
7,071,Formentera
7,072,Ibiza
7,073,Mallorca
7,074,Menorca
35,351,Fuerteventura
35,352,"Gran Canaria"
35,353,Lanzarote
38,381,"Gomera, La "
38,382,"Hierro, El "
38,383,"Palma, La "
38,384,Tenerife
isla_id,provincia_id,nombre
071,07,Formentera
072,07,Ibiza
073,07,Mallorca
074,07,Menorca
351,35,Fuerteventura
352,35,"Gran Canaria"
353,35,Lanzarote
381,38,"Gomera, La "
382,38,"Hierro, El "
383,38,"Palma, La "
384,38,Tenerife

1 CPRO CISLA isla_id provincia_id NOMBRE nombre
2 7 071 07 Formentera
3 7 072 07 Ibiza
4 7 073 07 Mallorca
5 7 074 07 Menorca
6 35 351 35 Fuerteventura
7 35 352 35 Gran Canaria
8 35 353 35 Lanzarote
9 38 381 38 Gomera, La
10 38 382 38 Hierro, El
11 38 383 38 Palma, La
12 38 384 38 Tenerife

View File

@ -1 +1 @@
{"071":{"CPRO":"7","CISLA":"071","NOMBRE":"Formentera"},"072":{"CPRO":"7","CISLA":"072","NOMBRE":"Ibiza"},"073":{"CPRO":"7","CISLA":"073","NOMBRE":"Mallorca"},"074":{"CPRO":"7","CISLA":"074","NOMBRE":"Menorca"},"351":{"CPRO":"35","CISLA":351,"NOMBRE":"Fuerteventura"},"352":{"CPRO":"35","CISLA":352,"NOMBRE":"Gran Canaria"},"353":{"CPRO":"35","CISLA":353,"NOMBRE":"Lanzarote"},"381":{"CPRO":"38","CISLA":381,"NOMBRE":"Gomera, La "},"382":{"CPRO":"38","CISLA":382,"NOMBRE":"Hierro, El "},"383":{"CPRO":"38","CISLA":383,"NOMBRE":"Palma, La "},"384":{"CPRO":"38","CISLA":384,"NOMBRE":"Tenerife"}}
[{"isla_id": "071", "provincia_id": "07", "nombre": "Formentera"}, {"isla_id": "072", "provincia_id": "07", "nombre": "Ibiza"}, {"isla_id": "073", "provincia_id": "07", "nombre": "Mallorca"}, {"isla_id": "074", "provincia_id": "07", "nombre": "Menorca"}, {"isla_id": "351", "provincia_id": "35", "nombre": "Fuerteventura"}, {"isla_id": "352", "provincia_id": "35", "nombre": "Gran Canaria"}, {"isla_id": "353", "provincia_id": "35", "nombre": "Lanzarote"}, {"isla_id": "381", "provincia_id": "38", "nombre": "Gomera, La "}, {"isla_id": "382", "provincia_id": "38", "nombre": "Hierro, El "}, {"isla_id": "383", "provincia_id": "38", "nombre": "Palma, La "}, {"isla_id": "384", "provincia_id": "38", "nombre": "Tenerife"}]

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,156 +1,156 @@
CPRO,CISLA,CMUN,DC,NOMBRE
7,071,24,4,Formentera
7,072,26,0,Eivissa
7,072,46,6,"Sant Antoni de Portmany"
7,072,50,4,"Sant Joan de Labritja"
7,072,48,8,"Sant Josep de sa Talaia"
7,072,54,7,"Santa Eulària des Riu"
7,073,1,2,Alaró
7,073,3,3,Alcúdia
7,073,4,8,Algaida
7,073,5,1,Andratx
7,073,901,3,Ariany
7,073,6,4,Artà
7,073,7,0,Banyalbufar
7,073,8,6,Binissalem
7,073,9,9,Búger
7,073,10,3,Bunyola
7,073,11,0,Calvià
7,073,12,5,Campanet
7,073,13,1,Campos
7,073,14,6,Capdepera
7,073,16,2,Consell
7,073,17,8,Costitx
7,073,18,4,Deià
7,073,19,7,Escorca
7,073,20,1,Esporles
7,073,21,8,Estellencs
7,073,22,3,Felanitx
7,073,25,7,Fornalutx
7,073,27,6,Inca
7,073,28,2,"Lloret de Vistalegre"
7,073,29,5,Lloseta
7,073,30,9,Llubí
7,073,31,6,Llucmajor
7,073,33,7,Manacor
7,073,34,2,"Mancor de la Vall"
7,073,35,5,"Maria de la Salut"
7,073,36,8,Marratxí
7,073,38,0,Montuïri
7,073,39,3,Muro
7,073,40,7,"Palma de Mallorca"
7,073,41,4,Petra
7,073,44,0,"Pobla, Sa"
7,073,42,9,Pollença
7,073,43,5,Porreres
7,073,45,3,Puigpunyent
7,073,59,8,"Salines, Ses"
7,073,49,1,"Sant Joan"
7,073,51,1,"Sant Llorenç des Cardassar"
7,073,53,2,"Santa Eugènia"
7,073,55,0,"Santa Margalida"
7,073,56,3,"Santa María del Camí"
7,073,57,9,Santanyí
7,073,58,5,Selva
7,073,47,2,Sencelles
7,073,60,2,Sineu
7,073,61,9,Sóller
7,073,62,4,"Son Servera"
7,073,63,0,Valldemossa
7,073,65,8,"Vilafranca de Bonany"
7,074,2,7,Alaior
7,074,64,5,"Castell, Es"
7,074,15,9,"Ciutadella de Menorca"
7,074,23,9,Ferreries
7,074,32,1,Maó-Mahón
7,074,37,4,"Mercadal, Es"
7,074,902,8,"Migjorn Gran, Es"
7,074,52,6,"Sant Lluís"
35,351,3,8,Antigua
35,351,7,5,Betancuria
35,351,14,1,"Oliva, La"
35,351,15,4,Pájara
35,351,17,3,"Puerto del Rosario"
35,351,30,4,Tuineje
35,352,1,7,Agaete
35,352,2,2,Agüimes
35,352,20,6,"Aldea de San Nicolás, La"
35,352,5,6,Artenara
35,352,6,9,Arucas
35,352,8,1,Firgas
35,352,9,4,Gáldar
35,352,11,5,Ingenio
35,352,12,0,Mogán
35,352,13,6,Moya
35,352,16,7,"Palmas de Gran Canaria, Las"
35,352,19,2,"San Bartolomé de Tirajana"
35,352,21,3,"Santa Brígida"
35,352,22,8,"Santa Lucía de Tirajana"
35,352,23,4,"Santa María de Guía de Gran Canaria"
35,352,25,2,Tejeda
35,352,26,5,Telde
35,352,27,1,Teror
35,352,32,6,Valleseco
35,352,31,1,"Valsequillo de Gran Canaria"
35,352,33,2,"Vega de San Mateo"
35,353,4,3,Arrecife
35,353,10,8,Haría
35,353,18,9,"San Bartolomé"
35,353,24,9,Teguise
35,353,28,7,Tías
35,353,29,0,Tinajo
35,353,34,7,Yaiza
38,381,2,7,Agulo
38,381,3,3,Alajeró
38,381,21,8,Hermigua
38,381,36,8,"San Sebastián de la Gomera"
38,381,49,1,"Valle Gran Rey"
38,381,50,4,Vallehermoso
38,382,13,1,Frontera
38,382,901,3,"Pinar de El Hierro, El"
38,382,48,8,Valverde
38,383,7,0,Barlovento
38,383,8,6,"Breña Alta"
38,383,9,9,"Breña Baja"
38,383,14,6,"Fuencaliente de la Palma"
38,383,16,2,Garafía
38,383,24,4,"Llanos de Aridane, Los"
38,383,27,6,"Paso, El"
38,383,29,5,Puntagorda
38,383,30,9,Puntallana
38,383,33,7,"San Andrés y Sauces"
38,383,37,4,"Santa Cruz de la Palma"
38,383,45,3,Tazacorte
38,383,47,2,Tijarafe
38,383,53,2,"Villa de Mazo"
38,384,1,2,Adeje
38,384,4,8,Arafo
38,384,5,1,Arico
38,384,6,4,Arona
38,384,10,3,"Buenavista del Norte"
38,384,11,0,Candelaria
38,384,12,5,Fasnia
38,384,15,9,Garachico
38,384,17,8,"Granadilla de Abona"
38,384,18,4,"Guancha, La"
38,384,19,7,"Guía de Isora"
38,384,20,1,Güímar
38,384,22,3,"Icod de los Vinos"
38,384,25,7,"Matanza de Acentejo, La"
38,384,26,0,"Orotava, La"
38,384,28,2,"Puerto de la Cruz"
38,384,31,6,"Realejos, Los"
38,384,32,1,"Rosario, El"
38,384,23,9,"San Cristóbal de La Laguna"
38,384,34,2,"San Juan de la Rambla"
38,384,35,5,"San Miguel de Abona"
38,384,38,0,"Santa Cruz de Tenerife"
38,384,39,3,"Santa Úrsula"
38,384,40,7,"Santiago del Teide"
38,384,41,4,"Sauzal, El"
38,384,42,9,"Silos, Los"
38,384,43,5,Tacoronte
38,384,44,0,"Tanque, El"
38,384,46,6,Tegueste
38,384,51,1,"Victoria de Acentejo, La"
38,384,52,6,"Vilaflor de Chasna"
municipio_id,isla_id,provincia_id,cmun,dc,nombre
07024,071,07,024,4,Formentera
07026,072,07,026,0,Eivissa
07046,072,07,046,6,"Sant Antoni de Portmany"
07050,072,07,050,4,"Sant Joan de Labritja"
07048,072,07,048,8,"Sant Josep de sa Talaia"
07054,072,07,054,7,"Santa Eulària des Riu"
07001,073,07,001,2,Alaró
07003,073,07,003,3,Alcúdia
07004,073,07,004,8,Algaida
07005,073,07,005,1,Andratx
07901,073,07,901,3,Ariany
07006,073,07,006,4,Artà
07007,073,07,007,0,Banyalbufar
07008,073,07,008,6,Binissalem
07009,073,07,009,9,Búger
07010,073,07,010,3,Bunyola
07011,073,07,011,0,Calvià
07012,073,07,012,5,Campanet
07013,073,07,013,1,Campos
07014,073,07,014,6,Capdepera
07016,073,07,016,2,Consell
07017,073,07,017,8,Costitx
07018,073,07,018,4,Deià
07019,073,07,019,7,Escorca
07020,073,07,020,1,Esporles
07021,073,07,021,8,Estellencs
07022,073,07,022,3,Felanitx
07025,073,07,025,7,Fornalutx
07027,073,07,027,6,Inca
07028,073,07,028,2,"Lloret de Vistalegre"
07029,073,07,029,5,Lloseta
07030,073,07,030,9,Llubí
07031,073,07,031,6,Llucmajor
07033,073,07,033,7,Manacor
07034,073,07,034,2,"Mancor de la Vall"
07035,073,07,035,5,"Maria de la Salut"
07036,073,07,036,8,Marratxí
07038,073,07,038,0,Montuïri
07039,073,07,039,3,Muro
07040,073,07,040,7,"Palma de Mallorca"
07041,073,07,041,4,Petra
07044,073,07,044,0,"Pobla, Sa"
07042,073,07,042,9,Pollença
07043,073,07,043,5,Porreres
07045,073,07,045,3,Puigpunyent
07059,073,07,059,8,"Salines, Ses"
07049,073,07,049,1,"Sant Joan"
07051,073,07,051,1,"Sant Llorenç des Cardassar"
07053,073,07,053,2,"Santa Eugènia"
07055,073,07,055,0,"Santa Margalida"
07056,073,07,056,3,"Santa María del Camí"
07057,073,07,057,9,Santanyí
07058,073,07,058,5,Selva
07047,073,07,047,2,Sencelles
07060,073,07,060,2,Sineu
07061,073,07,061,9,Sóller
07062,073,07,062,4,"Son Servera"
07063,073,07,063,0,Valldemossa
07065,073,07,065,8,"Vilafranca de Bonany"
07002,074,07,002,7,Alaior
07064,074,07,064,5,"Castell, Es"
07015,074,07,015,9,"Ciutadella de Menorca"
07023,074,07,023,9,Ferreries
07032,074,07,032,1,Maó-Mahón
07037,074,07,037,4,"Mercadal, Es"
07902,074,07,902,8,"Migjorn Gran, Es"
07052,074,07,052,6,"Sant Lluís"
35003,351,35,003,8,Antigua
35007,351,35,007,5,Betancuria
35014,351,35,014,1,"Oliva, La"
35015,351,35,015,4,Pájara
35017,351,35,017,3,"Puerto del Rosario"
35030,351,35,030,4,Tuineje
35001,352,35,001,7,Agaete
35002,352,35,002,2,Agüimes
35020,352,35,020,6,"Aldea de San Nicolás, La"
35005,352,35,005,6,Artenara
35006,352,35,006,9,Arucas
35008,352,35,008,1,Firgas
35009,352,35,009,4,Gáldar
35011,352,35,011,5,Ingenio
35012,352,35,012,0,Mogán
35013,352,35,013,6,Moya
35016,352,35,016,7,"Palmas de Gran Canaria, Las"
35019,352,35,019,2,"San Bartolomé de Tirajana"
35021,352,35,021,3,"Santa Brígida"
35022,352,35,022,8,"Santa Lucía de Tirajana"
35023,352,35,023,4,"Santa María de Guía de Gran Canaria"
35025,352,35,025,2,Tejeda
35026,352,35,026,5,Telde
35027,352,35,027,1,Teror
35032,352,35,032,6,Valleseco
35031,352,35,031,1,"Valsequillo de Gran Canaria"
35033,352,35,033,2,"Vega de San Mateo"
35004,353,35,004,3,Arrecife
35010,353,35,010,8,Haría
35018,353,35,018,9,"San Bartolomé"
35024,353,35,024,9,Teguise
35028,353,35,028,7,Tías
35029,353,35,029,0,Tinajo
35034,353,35,034,7,Yaiza
38002,381,38,002,7,Agulo
38003,381,38,003,3,Alajeró
38021,381,38,021,8,Hermigua
38036,381,38,036,8,"San Sebastián de la Gomera"
38049,381,38,049,1,"Valle Gran Rey"
38050,381,38,050,4,Vallehermoso
38013,382,38,013,1,Frontera
38901,382,38,901,3,"Pinar de El Hierro, El"
38048,382,38,048,8,Valverde
38007,383,38,007,0,Barlovento
38008,383,38,008,6,"Breña Alta"
38009,383,38,009,9,"Breña Baja"
38014,383,38,014,6,"Fuencaliente de la Palma"
38016,383,38,016,2,Garafía
38024,383,38,024,4,"Llanos de Aridane, Los"
38027,383,38,027,6,"Paso, El"
38029,383,38,029,5,Puntagorda
38030,383,38,030,9,Puntallana
38033,383,38,033,7,"San Andrés y Sauces"
38037,383,38,037,4,"Santa Cruz de la Palma"
38045,383,38,045,3,Tazacorte
38047,383,38,047,2,Tijarafe
38053,383,38,053,2,"Villa de Mazo"
38001,384,38,001,2,Adeje
38004,384,38,004,8,Arafo
38005,384,38,005,1,Arico
38006,384,38,006,4,Arona
38010,384,38,010,3,"Buenavista del Norte"
38011,384,38,011,0,Candelaria
38012,384,38,012,5,Fasnia
38015,384,38,015,9,Garachico
38017,384,38,017,8,"Granadilla de Abona"
38018,384,38,018,4,"Guancha, La"
38019,384,38,019,7,"Guía de Isora"
38020,384,38,020,1,Güímar
38022,384,38,022,3,"Icod de los Vinos"
38025,384,38,025,7,"Matanza de Acentejo, La"
38026,384,38,026,0,"Orotava, La"
38028,384,38,028,2,"Puerto de la Cruz"
38031,384,38,031,6,"Realejos, Los"
38032,384,38,032,1,"Rosario, El"
38023,384,38,023,9,"San Cristóbal de La Laguna"
38034,384,38,034,2,"San Juan de la Rambla"
38035,384,38,035,5,"San Miguel de Abona"
38038,384,38,038,0,"Santa Cruz de Tenerife"
38039,384,38,039,3,"Santa Úrsula"
38040,384,38,040,7,"Santiago del Teide"
38041,384,38,041,4,"Sauzal, El"
38042,384,38,042,9,"Silos, Los"
38043,384,38,043,5,Tacoronte
38044,384,38,044,0,"Tanque, El"
38046,384,38,046,6,Tegueste
38051,384,38,051,1,"Victoria de Acentejo, La"
38052,384,38,052,6,"Vilaflor de Chasna"

1 CPRO municipio_id CISLA isla_id CMUN provincia_id cmun DC dc NOMBRE nombre
2 7 07024 071 24 07 024 4 Formentera
3 7 07026 072 26 07 026 0 Eivissa
4 7 07046 072 46 07 046 6 Sant Antoni de Portmany
5 7 07050 072 50 07 050 4 Sant Joan de Labritja
6 7 07048 072 48 07 048 8 Sant Josep de sa Talaia
7 7 07054 072 54 07 054 7 Santa Eulària des Riu
8 7 07001 073 1 07 001 2 Alaró
9 7 07003 073 3 07 003 3 Alcúdia
10 7 07004 073 4 07 004 8 Algaida
11 7 07005 073 5 07 005 1 Andratx
12 7 07901 073 901 07 901 3 Ariany
13 7 07006 073 6 07 006 4 Artà
14 7 07007 073 7 07 007 0 Banyalbufar
15 7 07008 073 8 07 008 6 Binissalem
16 7 07009 073 9 07 009 9 Búger
17 7 07010 073 10 07 010 3 Bunyola
18 7 07011 073 11 07 011 0 Calvià
19 7 07012 073 12 07 012 5 Campanet
20 7 07013 073 13 07 013 1 Campos
21 7 07014 073 14 07 014 6 Capdepera
22 7 07016 073 16 07 016 2 Consell
23 7 07017 073 17 07 017 8 Costitx
24 7 07018 073 18 07 018 4 Deià
25 7 07019 073 19 07 019 7 Escorca
26 7 07020 073 20 07 020 1 Esporles
27 7 07021 073 21 07 021 8 Estellencs
28 7 07022 073 22 07 022 3 Felanitx
29 7 07025 073 25 07 025 7 Fornalutx
30 7 07027 073 27 07 027 6 Inca
31 7 07028 073 28 07 028 2 Lloret de Vistalegre
32 7 07029 073 29 07 029 5 Lloseta
33 7 07030 073 30 07 030 9 Llubí
34 7 07031 073 31 07 031 6 Llucmajor
35 7 07033 073 33 07 033 7 Manacor
36 7 07034 073 34 07 034 2 Mancor de la Vall
37 7 07035 073 35 07 035 5 Maria de la Salut
38 7 07036 073 36 07 036 8 Marratxí
39 7 07038 073 38 07 038 0 Montuïri
40 7 07039 073 39 07 039 3 Muro
41 7 07040 073 40 07 040 7 Palma de Mallorca
42 7 07041 073 41 07 041 4 Petra
43 7 07044 073 44 07 044 0 Pobla, Sa
44 7 07042 073 42 07 042 9 Pollença
45 7 07043 073 43 07 043 5 Porreres
46 7 07045 073 45 07 045 3 Puigpunyent
47 7 07059 073 59 07 059 8 Salines, Ses
48 7 07049 073 49 07 049 1 Sant Joan
49 7 07051 073 51 07 051 1 Sant Llorenç des Cardassar
50 7 07053 073 53 07 053 2 Santa Eugènia
51 7 07055 073 55 07 055 0 Santa Margalida
52 7 07056 073 56 07 056 3 Santa María del Camí
53 7 07057 073 57 07 057 9 Santanyí
54 7 07058 073 58 07 058 5 Selva
55 7 07047 073 47 07 047 2 Sencelles
56 7 07060 073 60 07 060 2 Sineu
57 7 07061 073 61 07 061 9 Sóller
58 7 07062 073 62 07 062 4 Son Servera
59 7 07063 073 63 07 063 0 Valldemossa
60 7 07065 073 65 07 065 8 Vilafranca de Bonany
61 7 07002 074 2 07 002 7 Alaior
62 7 07064 074 64 07 064 5 Castell, Es
63 7 07015 074 15 07 015 9 Ciutadella de Menorca
64 7 07023 074 23 07 023 9 Ferreries
65 7 07032 074 32 07 032 1 Maó-Mahón
66 7 07037 074 37 07 037 4 Mercadal, Es
67 7 07902 074 902 07 902 8 Migjorn Gran, Es
68 7 07052 074 52 07 052 6 Sant Lluís
69 35 35003 351 3 35 003 8 Antigua
70 35 35007 351 7 35 007 5 Betancuria
71 35 35014 351 14 35 014 1 Oliva, La
72 35 35015 351 15 35 015 4 Pájara
73 35 35017 351 17 35 017 3 Puerto del Rosario
74 35 35030 351 30 35 030 4 Tuineje
75 35 35001 352 1 35 001 7 Agaete
76 35 35002 352 2 35 002 2 Agüimes
77 35 35020 352 20 35 020 6 Aldea de San Nicolás, La
78 35 35005 352 5 35 005 6 Artenara
79 35 35006 352 6 35 006 9 Arucas
80 35 35008 352 8 35 008 1 Firgas
81 35 35009 352 9 35 009 4 Gáldar
82 35 35011 352 11 35 011 5 Ingenio
83 35 35012 352 12 35 012 0 Mogán
84 35 35013 352 13 35 013 6 Moya
85 35 35016 352 16 35 016 7 Palmas de Gran Canaria, Las
86 35 35019 352 19 35 019 2 San Bartolomé de Tirajana
87 35 35021 352 21 35 021 3 Santa Brígida
88 35 35022 352 22 35 022 8 Santa Lucía de Tirajana
89 35 35023 352 23 35 023 4 Santa María de Guía de Gran Canaria
90 35 35025 352 25 35 025 2 Tejeda
91 35 35026 352 26 35 026 5 Telde
92 35 35027 352 27 35 027 1 Teror
93 35 35032 352 32 35 032 6 Valleseco
94 35 35031 352 31 35 031 1 Valsequillo de Gran Canaria
95 35 35033 352 33 35 033 2 Vega de San Mateo
96 35 35004 353 4 35 004 3 Arrecife
97 35 35010 353 10 35 010 8 Haría
98 35 35018 353 18 35 018 9 San Bartolomé
99 35 35024 353 24 35 024 9 Teguise
100 35 35028 353 28 35 028 7 Tías
101 35 35029 353 29 35 029 0 Tinajo
102 35 35034 353 34 35 034 7 Yaiza
103 38 38002 381 2 38 002 7 Agulo
104 38 38003 381 3 38 003 3 Alajeró
105 38 38021 381 21 38 021 8 Hermigua
106 38 38036 381 36 38 036 8 San Sebastián de la Gomera
107 38 38049 381 49 38 049 1 Valle Gran Rey
108 38 38050 381 50 38 050 4 Vallehermoso
109 38 38013 382 13 38 013 1 Frontera
110 38 38901 382 901 38 901 3 Pinar de El Hierro, El
111 38 38048 382 48 38 048 8 Valverde
112 38 38007 383 7 38 007 0 Barlovento
113 38 38008 383 8 38 008 6 Breña Alta
114 38 38009 383 9 38 009 9 Breña Baja
115 38 38014 383 14 38 014 6 Fuencaliente de la Palma
116 38 38016 383 16 38 016 2 Garafía
117 38 38024 383 24 38 024 4 Llanos de Aridane, Los
118 38 38027 383 27 38 027 6 Paso, El
119 38 38029 383 29 38 029 5 Puntagorda
120 38 38030 383 30 38 030 9 Puntallana
121 38 38033 383 33 38 033 7 San Andrés y Sauces
122 38 38037 383 37 38 037 4 Santa Cruz de la Palma
123 38 38045 383 45 38 045 3 Tazacorte
124 38 38047 383 47 38 047 2 Tijarafe
125 38 38053 383 53 38 053 2 Villa de Mazo
126 38 38001 384 1 38 001 2 Adeje
127 38 38004 384 4 38 004 8 Arafo
128 38 38005 384 5 38 005 1 Arico
129 38 38006 384 6 38 006 4 Arona
130 38 38010 384 10 38 010 3 Buenavista del Norte
131 38 38011 384 11 38 011 0 Candelaria
132 38 38012 384 12 38 012 5 Fasnia
133 38 38015 384 15 38 015 9 Garachico
134 38 38017 384 17 38 017 8 Granadilla de Abona
135 38 38018 384 18 38 018 4 Guancha, La
136 38 38019 384 19 38 019 7 Guía de Isora
137 38 38020 384 20 38 020 1 Güímar
138 38 38022 384 22 38 022 3 Icod de los Vinos
139 38 38025 384 25 38 025 7 Matanza de Acentejo, La
140 38 38026 384 26 38 026 0 Orotava, La
141 38 38028 384 28 38 028 2 Puerto de la Cruz
142 38 38031 384 31 38 031 6 Realejos, Los
143 38 38032 384 32 38 032 1 Rosario, El
144 38 38023 384 23 38 023 9 San Cristóbal de La Laguna
145 38 38034 384 34 38 034 2 San Juan de la Rambla
146 38 38035 384 35 38 035 5 San Miguel de Abona
147 38 38038 384 38 38 038 0 Santa Cruz de Tenerife
148 38 38039 384 39 38 039 3 Santa Úrsula
149 38 38040 384 40 38 040 7 Santiago del Teide
150 38 38041 384 41 38 041 4 Sauzal, El
151 38 38042 384 42 38 042 9 Silos, Los
152 38 38043 384 43 38 043 5 Tacoronte
153 38 38044 384 44 38 044 0 Tanque, El
154 38 38046 384 46 38 046 6 Tegueste
155 38 38051 384 51 38 051 1 Victoria de Acentejo, La
156 38 38052 384 52 38 052 6 Vilaflor de Chasna

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
codigo,nombre
provincia_id,nombre
02,Albacete
03,Alicante/Alacant
04,Almería

1 codigo provincia_id nombre
2 02 Albacete
3 03 Alicante/Alacant
4 04 Almería

View File

@ -1 +1 @@
[{"codigo":"02","nombre":"Albacete"},{"codigo":"03","nombre":"Alicante\/Alacant"},{"codigo":"04","nombre":"Almería"},{"codigo":"01","nombre":"Araba\/Álava"},{"codigo":"33","nombre":"Asturias"},{"codigo":"05","nombre":"Ávila"},{"codigo":"06","nombre":"Badajoz"},{"codigo":"07","nombre":"Balears, Illes"},{"codigo":"08","nombre":"Barcelona"},{"codigo":"48","nombre":"Bizkaia"},{"codigo":"09","nombre":"Burgos"},{"codigo":"10","nombre":"Cáceres"},{"codigo":"11","nombre":"Cádiz"},{"codigo":"39","nombre":"Cantabria"},{"codigo":"12","nombre":"Castellón\/Castelló"},{"codigo":"13","nombre":"Ciudad Real"},{"codigo":"14","nombre":"Córdoba"},{"codigo":"15","nombre":"Coruña, A"},{"codigo":"16","nombre":"Cuenca"},{"codigo":"20","nombre":"Gipuzkoa"},{"codigo":"17","nombre":"Girona"},{"codigo":"18","nombre":"Granada"},{"codigo":"19","nombre":"Guadalajara"},{"codigo":"21","nombre":"Huelva"},{"codigo":"22","nombre":"Huesca"},{"codigo":"23","nombre":"Jaén"},{"codigo":"24","nombre":"León"},{"codigo":"25","nombre":"Lleida"},{"codigo":"27","nombre":"Lugo"},{"codigo":"28","nombre":"Madrid"},{"codigo":"29","nombre":"Málaga"},{"codigo":"30","nombre":"Murcia"},{"codigo":"31","nombre":"Navarra"},{"codigo":"32","nombre":"Ourense"},{"codigo":"34","nombre":"Palencia"},{"codigo":"35","nombre":"Palmas, Las"},{"codigo":"36","nombre":"Pontevedra"},{"codigo":"26","nombre":"Rioja, La"},{"codigo":"37","nombre":"Salamanca"},{"codigo":"38","nombre":"Santa Cruz de Tenerife"},{"codigo":"40","nombre":"Segovia"},{"codigo":"41","nombre":"Sevilla"},{"codigo":"42","nombre":"Soria"},{"codigo":"43","nombre":"Tarragona"},{"codigo":"44","nombre":"Teruel"},{"codigo":"45","nombre":"Toledo"},{"codigo":"46","nombre":"Valencia\/València"},{"codigo":"47","nombre":"Valladolid"},{"codigo":"49","nombre":"Zamora"},{"codigo":"50","nombre":"Zaragoza"},{"codigo":"51","nombre":"Ceuta"},{"codigo":"52","nombre":"Melilla"}]
[{"provincia_id": "02", "nombre": "Albacete"}, {"provincia_id": "03", "nombre": "Alicante/Alacant"}, {"provincia_id": "04", "nombre": "Almería"}, {"provincia_id": "01", "nombre": "Araba/Álava"}, {"provincia_id": "33", "nombre": "Asturias"}, {"provincia_id": "05", "nombre": "Ávila"}, {"provincia_id": "06", "nombre": "Badajoz"}, {"provincia_id": "07", "nombre": "Balears, Illes"}, {"provincia_id": "08", "nombre": "Barcelona"}, {"provincia_id": "48", "nombre": "Bizkaia"}, {"provincia_id": "09", "nombre": "Burgos"}, {"provincia_id": "10", "nombre": "Cáceres"}, {"provincia_id": "11", "nombre": "Cádiz"}, {"provincia_id": "39", "nombre": "Cantabria"}, {"provincia_id": "12", "nombre": "Castellón/Castelló"}, {"provincia_id": "13", "nombre": "Ciudad Real"}, {"provincia_id": "14", "nombre": "Córdoba"}, {"provincia_id": "15", "nombre": "Coruña, A"}, {"provincia_id": "16", "nombre": "Cuenca"}, {"provincia_id": "20", "nombre": "Gipuzkoa"}, {"provincia_id": "17", "nombre": "Girona"}, {"provincia_id": "18", "nombre": "Granada"}, {"provincia_id": "19", "nombre": "Guadalajara"}, {"provincia_id": "21", "nombre": "Huelva"}, {"provincia_id": "22", "nombre": "Huesca"}, {"provincia_id": "23", "nombre": "Jaén"}, {"provincia_id": "24", "nombre": "León"}, {"provincia_id": "25", "nombre": "Lleida"}, {"provincia_id": "27", "nombre": "Lugo"}, {"provincia_id": "28", "nombre": "Madrid"}, {"provincia_id": "29", "nombre": "Málaga"}, {"provincia_id": "30", "nombre": "Murcia"}, {"provincia_id": "31", "nombre": "Navarra"}, {"provincia_id": "32", "nombre": "Ourense"}, {"provincia_id": "34", "nombre": "Palencia"}, {"provincia_id": "35", "nombre": "Palmas, Las"}, {"provincia_id": "36", "nombre": "Pontevedra"}, {"provincia_id": "26", "nombre": "Rioja, La"}, {"provincia_id": "37", "nombre": "Salamanca"}, {"provincia_id": "38", "nombre": "Santa Cruz de Tenerife"}, {"provincia_id": "40", "nombre": "Segovia"}, {"provincia_id": "41", "nombre": "Sevilla"}, {"provincia_id": "42", "nombre": "Soria"}, {"provincia_id": "43", "nombre": "Tarragona"}, {"provincia_id": "44", "nombre": "Teruel"}, {"provincia_id": "45", "nombre": "Toledo"}, {"provincia_id": "46", "nombre": "Valencia/València"}, {"provincia_id": "47", "nombre": "Valladolid"}, {"provincia_id": "49", "nombre": "Zamora"}, {"provincia_id": "50", "nombre": "Zaragoza"}, {"provincia_id": "51", "nombre": "Ceuta"}, {"provincia_id": "52", "nombre": "Melilla"}]

View File

@ -1,264 +1,555 @@
{
"name": "ds-organizacion-administrativa",
"title": "Organiazación Administrativa de España",
"descriptions": "Listado de comunidades, provincias, municipios con su correspondiente código INE",
"licenses" : [
{
"type": "odc-pddl",
"url": "http://opendatacommons.org/licenses/pddl/"
}
],
"author" : {
"name": "Code for Spain",
"web": "http://www.codeforspain.org"
},
"keywords": [ "Provincias", "Municipios", "Comunidades Autonomas"],
"version": "0.0.1",
"last_updated": "2016-04-20",
"sources": [
{
"name": "Instituto Nacional de Estadistica",
"web": "http://www.ine.es/jaxi/menu.do?type=pcaxis&path=/t20/e245/codmun&file=inebase"
}
],
"resources": [
{
"name": "ds_oa_municipios",
"title": "Municipios de España",
"description": "Relacion de municipios de España por provincia, según el INE.",
"format": "csv",
"path": "data/municipios.csv",
"schema": {
"fields": [
{
"name": "CPRO",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "CMUN",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. CPRO contacatenado con CMUN resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "DC",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "NOMBRE",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
"name": "ds-organizacion-administrativa",
"title": "Organización Administrativa de España",
"descriptions": "Listado de comunidades, provincias, municipios, islas con su correspondiente código INE",
"licenses": [
{
"type": "odc-pddl",
"url": "http:\/\/opendatacommons.org\/licenses\/pddl\/"
}
],
"author": {
"name": "Code for Spain",
"web": "http:\/\/www.codeforspain.org"
},
{
"name": "ds_oa_municipios_historical",
"title": "Municipios de España (Histórico)",
"description": "Relacion de municipios de España, por provincia y año, según el INE. Recoge modificaciones anuales.",
"format": "csv",
"path": "data/municipios_historical.csv",
"schema": {
"fields": [
{
"name": "CPRO",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "CMUN",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. CPRO contacatenado con CMUN resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "DC",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "NOMBRE",
"type": "string",
"description": "Denominación oficial del municipio"
},
{
"name": "YEAR",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
}
]
}
},
{
"name": "ds_oa_provincias",
"title": "Provincias de España",
"description": "Relacion de provincias de España según el INE.",
"format": "csv",
"path": "data/provincias.csv",
"schema": {
"fields": [
{
"name": "codigo",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la provincia"
}
]
}
},
{
"name": "ds_oa_autonomias",
"title": "Comunidades Autonomas de España ",
"description": "Relacion de comunidades autonomas de España, según el INE.",
"format": "csv",
"path": "data/autonomias.csv",
"schema": {
"fields": [
{
"name": "codigo",
"type": "number",
"description": "Código INE de la comunidad autónoma",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la comunidad autónoma"
}
]
}
},
{
"name": "ds_oa_municipios_islas",
"title": "Municipios de España por Isla",
"description": "Relacion de municipios que contiene cada Isla en al último año, según el INE.",
"format": "csv",
"path": "data/municipios_islas.csv",
"schema": {
"fields": [
{
"name": "CPRO",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "CISLA",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "CMUN",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. CPRO contacatenado con CMUN resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "DC",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "NOMBRE",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
},
{
"name": "ds_oa_municipios_islas_historical",
"title": "Municipios de España por Isla (Histórico)",
"description": "Relacion de municipios por isla y por año desde 2008, según el INE. Recoge modificaciones anuales.",
"format": "csv",
"path": "data/municipios_islas_historical.csv",
"schema": {
"fields": [
{
"name": "CPRO",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "CISLA",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "CMUN",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. CPRO contacatenado con CMUN resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "DC",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "NOMBRE",
"type": "string",
"description": "Denominación oficial del municipio"
},
{
"name": "YEAR",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
}
]
}
},
{
"name": "ds_oa_islas",
"title": "Islas de España",
"description": "Relacion de islas por provincia según el INE.",
"format": "csv",
"path": "data/islas.csv",
"schema": {
"fields": [
{
"name": "CPRO",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "CISLA",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "NOMBRE",
"type": "string",
"description": "Denominación oficial de la isla"
}
]
}
}
]
}
"keywords": [
"Provincias",
"Municipios",
"Comunidades Autonomas",
"Islas"
],
"sources": [
{
"name": "Instituto Nacional de Estadistica",
"web": "http:\/\/www.ine.es\/jaxi\/menu.do?type=pcaxis&path=\/t20\/e245\/codmun&file=inebase"
}
],
"resources": [
{
"name": "ds_oa_municipios",
"title": "Municipios de España",
"description": "Relacion de municipios de España por provincia, según el INE.",
"format": "csv",
"path": "data\/municipios.csv",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "year",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
},
{
"name": "ds_oa_municipios_historical",
"title": "Municipios de España (Histórico)",
"description": "Relacion de municipios de España, por provincia y año, según el INE. Recoge modificaciones anuales.",
"format": "csv",
"path": "data\/municipios_historical.csv",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
},
{
"name": "year",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
}
]
}
},
{
"name": "ds_oa_provincias",
"title": "Provincias de España",
"description": "Relacion de provincias de España según el INE.",
"format": "csv",
"path": "data\/provincias.csv",
"schema": {
"fields": [
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la provincia"
}
]
}
},
{
"name": "ds_oa_autonomias",
"title": "Comunidades Autonomas de España ",
"description": "Relacion de comunidades autonomas de España, según el INE.",
"format": "csv",
"path": "data\/autonomias.csv",
"schema": {
"fields": [
{
"name": "autonomia_id",
"type": "number",
"description": "Código INE de la comunidad autónoma",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la comunidad autónoma"
}
]
}
},
{
"name": "ds_oa_municipios_islas",
"title": "Municipios de España por Isla",
"description": "Relacion de municipios que contiene cada Isla en al último año, según el INE.",
"format": "csv",
"path": "data\/municipios_islas.csv",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "isla_id",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
},
{
"name": "ds_oa_municipios_islas_historical",
"title": "Municipios de España por Isla (Histórico)",
"description": "Relacion de municipios por isla y por año desde 2008, según el INE. Recoge modificaciones anuales.",
"format": "csv",
"path": "data\/municipios_islas_historical.csv",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "year",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "isla_id",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
},
{
"name": "ds_oa_islas",
"title": "Islas de España",
"description": "Relacion de islas por provincia según el INE.",
"format": "csv",
"path": "data\/islas.csv",
"schema": {
"fields": [
{
"name": "isla_id",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la isla"
}
]
}
},
{
"name": "ds_oa_municipios",
"title": "Municipios de España",
"description": "Relacion de municipios de España por provincia, según el INE.",
"format": "json",
"path": "data\/municipios.json",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "year",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
},
{
"name": "ds_oa_municipios_historical",
"title": "Municipios de España (Histórico)",
"description": "Relacion de municipios de España, por provincia y año, según el INE. Recoge modificaciones anuales.",
"format": "json",
"path": "data\/municipios_historical.json",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
},
{
"name": "year",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
}
]
}
},
{
"name": "ds_oa_provincias",
"title": "Provincias de España",
"description": "Relacion de provincias de España según el INE.",
"format": "json",
"path": "data\/provincias.json",
"schema": {
"fields": [
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la provincia"
}
]
}
},
{
"name": "ds_oa_autonomias",
"title": "Comunidades Autonomas de España ",
"description": "Relacion de comunidades autonomas de España, según el INE.",
"format": "json",
"path": "data\/autonomias.json",
"schema": {
"fields": [
{
"name": "autonomia_id",
"type": "number",
"description": "Código INE de la comunidad autónoma",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la comunidad autónoma"
}
]
}
},
{
"name": "ds_oa_municipios_islas",
"title": "Municipios de España por Isla",
"description": "Relacion de municipios que contiene cada Isla en al último año, según el INE.",
"format": "json",
"path": "data\/municipios_islas.json",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "isla_id",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
},
{
"name": "ds_oa_municipios_islas_historical",
"title": "Municipios de España por Isla (Histórico)",
"description": "Relacion de municipios por isla y por año desde 2008, según el INE. Recoge modificaciones anuales.",
"format": "json",
"path": "data\/municipios_islas_historical.json",
"schema": {
"fields": [
{
"name": "municipio_id",
"type": "number",
"description": "Código INE del municipio",
"pattern": "[0-9]{5}"
},
{
"name": "year",
"type": "number",
"pattern": "[0-9]{4}",
"description": "Año del dato"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "isla_id",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "cmun",
"type": "number",
"description": "Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio",
"pattern": "[0-9]{3}"
},
{
"name": "dc",
"type": "number",
"description": "Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación",
"pattern": "[0-9]{1}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial del municipio"
}
]
}
},
{
"name": "ds_oa_islas",
"title": "Islas de España",
"description": "Relacion de islas por provincia según el INE.",
"format": "json",
"path": "data\/islas.json",
"schema": {
"fields": [
{
"name": "isla_id",
"type": "number",
"description": "Código INE de la isla",
"pattern": "[0-9]{3}"
},
{
"name": "provincia_id",
"type": "number",
"description": "Código INE de la provincia",
"pattern": "[0-9]{2}"
},
{
"name": "nombre",
"type": "string",
"description": "Denominación oficial de la isla"
}
]
}
}
],
"last_updated": "2016-05-01 ",
"version": "0.0.7"
}

View File

@ -7,31 +7,50 @@ Si no los encuentra, los descarga.
## Modo de Uso
$ ./php script.php [COMMANDS [source]] [OPTIONS]
$ ./php script.php [COMMAND SUBCOMMAND]] [OPTIONS]
Si se invoca sin argumentos, procesa todo.
Si se invoca sin subcomandos o argumentos, executa:
1. download all
2. process all
3. update
4. convert-to-json
### Opciones
COMMANDS
download [source] Descarga los archivos fuente, pero no los procesa.
download [SUBCOMMAND] Descarga los archivos fuente, pero no los procesa.
Se puede especificar opcionalmente un suvcomando:
Toma como parámetro opcional uno o mas de los siguientes:
[autonomías, provincias, municipios, islas]
source SOURCE Descarga únicamente SOURCE, que puede ser
[autonomias, provincias, municipios, islas]
all Descarga todas las fuentes (por defecto).
OPTIONS
--force, -f Fuerza la descarga de los archivos fuente, aunque existan
process [source] Procesa los archivos fuente, pero no los descarga.
Toma como parámetro opcional uno o mas de los siguientes:
[autonomías, provincias, municipios, islas]
OPTIONS
--force, -f Fuerza la descarga de los archivos fuente, aunque existan
process [SUBCOMMAND] Procesa los archivos fuente, pero no los descarga.
source SOURCE Procesa únicamente SOURCE, que puede ser uno de los siguientes:
[autonomias, provincias, municipios, islas]
all Procesa todas las fuentes (por defecto).
convert-to-json Convierte todo los archivos .csv en /data a .json.
update Actualiza el archivo datapackage.json

341
scripts/lib/Config.php Normal file
View File

@ -0,0 +1,341 @@
<?php
class Config
{
const MUNCIPIOS_URL = "http://www.ine.es/daco/daco42/codmun/codmun%02d/%02dcodmun.xls";
const PROVINCIAS_URL = "http://www.ine.es/daco/daco42/codmun/cod_provincia.htm";
const AUTONOMIAS_URL = "http://www.ine.es/daco/daco42/codmun/cod_ccaa.htm";
const ISLAS_URL = "http://www.ine.es/daco/daco42/codmun/codmun%02d/%02dcodislas%02d.xls";
const MUNCIPIOS_YEAR_START = 2004; // Hay datos desde 2001, pero necesitan tratamiento especial. To Do
const ISLAS_YEAR_START = 2012; // hay datos desde 2008, pero no incluye el codigo de Isla. To Do
const ISLAS_PROVINCIA_INE_CODES = "a:3:{i:0;i:7;i:1;i:35;i:2;i:38;}"; //PHP <5.6 compatible (no soporta arrays como constantes)
const DATA_FOLDER = "data";
const ARCHIVE_FOLDER = "archive";
const PROVINCIAS_SOURCE_FILE = "cod_provincia.htm";
const AUTONOMIAS_SOURCE_FILE = "cod_ccaa.htm";
const MUNICIPIOS_SOURCE_FILE = "%02dcodmun.xls";
const ISLAS_SOURCE_FILE = "%02dcodislas%02d.xls";
const PROVINCIAS_DEST_FILE = "provincias";
const AUTONOMIAS_DEST_FILE = "autonomias";
const MUNICIPIOS_DEST_FILE = "municipios";
const MUNICIPIOS_HISTORICAL_DEST_FILE = "municipios_historical";
const ISLAS_DEST_FILE = "islas";
const MUNICIPIOS_ISLAS_HISTORICAL_DEST_FILE = "municipios_islas_historical";
const MUNICIPIOS_ISLAS_DEST_FILE = "municipios_islas";
static $datapackage = [
"name" => "ds-organizacion-administrativa",
"title" => "Organización Administrativa de España",
"descriptions" => "Listado de comunidades, provincias, municipios, islas con su correspondiente código INE",
"licenses" => [
[
"type" => "odc-pddl",
"url" => "http://opendatacommons.org/licenses/pddl/"
]
],
"author" => [
"name" => "Code for Spain",
"web" => "http://www.codeforspain.org"
],
"keywords" => [ "Provincias", "Municipios", "Comunidades Autonomas", "Islas"],
"sources" => [
[
"name" => "Instituto Nacional de Estadistica",
"web" => "http://www.ine.es/jaxi/menu.do?type=pcaxis&path=/t20/e245/codmun&file=inebase"
]
],
"resources" =>[
array(
'name' => 'ds_oa_municipios',
'title' => 'Municipios de España',
'description' => 'Relacion de municipios de España por provincia, según el INE.',
'format' => 'csv',
'path' => 'data/municipios.csv',
'schema' =>
array (
'fields' =>
array (
array (
'name' => 'municipio_id',
'type' => 'number',
'description' => 'Código INE del municipio',
'pattern' => '[0-9]{5}',
),
array (
'name' => 'year',
'type' => 'number',
'pattern' => '[0-9]{4}',
'description' => 'Año del dato',
),
array (
'name' => 'provincia_id',
'type' => 'number',
'description' => 'Código INE de la provincia',
'pattern' => '[0-9]{2}',
),
array (
'name' => 'cmun',
'type' => 'number',
'description' => 'Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio',
'pattern' => '[0-9]{3}',
),
array (
'name' => 'dc',
'type' => 'number',
'description' => 'Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación',
'pattern' => '[0-9]{1}',
),
array (
'name' => 'nombre',
'type' => 'string',
'description' => 'Denominación oficial del municipio',
),
),
),
),
array (
'name' => 'ds_oa_municipios_historical',
'title' => 'Municipios de España (Histórico)',
'description' => 'Relacion de municipios de España, por provincia y año, según el INE. Recoge modificaciones anuales.',
'format' => 'csv',
'path' => 'data/municipios_historical.csv',
'schema' =>
array (
'fields' =>
array (
array (
'name' => 'municipio_id',
'type' => 'number',
'description' => 'Código INE del municipio',
'pattern' => '[0-9]{5}',
),
array (
'name' => 'provincia_id',
'type' => 'number',
'description' => 'Código INE de la provincia',
'pattern' => '[0-9]{2}',
),
array (
'name' => 'cmun',
'type' => 'number',
'description' => 'Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio',
'pattern' => '[0-9]{3}',
),
array (
'name' => 'dc',
'type' => 'number',
'description' => 'Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación',
'pattern' => '[0-9]{1}',
),
array (
'name' => 'nombre',
'type' => 'string',
'description' => 'Denominación oficial del municipio',
),
array (
'name' => 'year',
'type' => 'number',
'pattern' => '[0-9]{4}',
'description' => 'Año del dato',
),
),
),
),
array (
'name' => 'ds_oa_provincias',
'title' => 'Provincias de España',
'description' => 'Relacion de provincias de España según el INE.',
'format' => 'csv',
'path' => 'data/provincias.csv',
'schema' =>
array (
'fields' =>
array (
array (
'name' => 'provincia_id',
'type' => 'number',
'description' => 'Código INE de la provincia',
'pattern' => '[0-9]{2}',
),
array (
'name' => 'nombre',
'type' => 'string',
'description' => 'Denominación oficial de la provincia',
),
),
),
),
array (
'name' => 'ds_oa_autonomias',
'title' => 'Comunidades Autonomas de España ',
'description' => 'Relacion de comunidades autonomas de España, según el INE.',
'format' => 'csv',
'path' => 'data/autonomias.csv',
'schema' =>
array (
'fields' =>
array (
array (
'name' => 'autonomia_id',
'type' => 'number',
'description' => 'Código INE de la comunidad autónoma',
'pattern' => '[0-9]{2}',
),
array (
'name' => 'nombre',
'type' => 'string',
'description' => 'Denominación oficial de la comunidad autónoma',
),
),
),
),
array (
'name' => 'ds_oa_municipios_islas',
'title' => 'Municipios de España por Isla',
'description' => 'Relacion de municipios que contiene cada Isla en al último año, según el INE.',
'format' => 'csv',
'path' => 'data/municipios_islas.csv',
'schema' =>
array (
'fields' =>
array (
array (
'name' => 'municipio_id',
'type' => 'number',
'description' => 'Código INE del municipio',
'pattern' => '[0-9]{5}',
),
array (
'name' => 'provincia_id',
'type' => 'number',
'description' => 'Código INE de la provincia',
'pattern' => '[0-9]{2}',
),
array (
'name' => 'isla_id',
'type' => 'number',
'description' => 'Código INE de la isla',
'pattern' => '[0-9]{3}',
),
array (
'name' => 'cmun',
'type' => 'number',
'description' => 'Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio',
'pattern' => '[0-9]{3}',
),
array (
'name' => 'dc',
'type' => 'number',
'description' => 'Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación',
'pattern' => '[0-9]{1}',
),
array (
'name' => 'nombre',
'type' => 'string',
'description' => 'Denominación oficial del municipio',
),
),
),
),
array (
'name' => 'ds_oa_municipios_islas_historical',
'title' => 'Municipios de España por Isla (Histórico)',
'description' => 'Relacion de municipios por isla y por año desde 2008, según el INE. Recoge modificaciones anuales.',
'format' => 'csv',
'path' => 'data/municipios_islas_historical.csv',
'schema' =>
array (
'fields' =>
array (
array (
'name' => 'municipio_id',
'type' => 'number',
'description' => 'Código INE del municipio',
'pattern' => '[0-9]{5}',
),
array (
'name' => 'year',
'type' => 'number',
'pattern' => '[0-9]{4}',
'description' => 'Año del dato',
),
array (
'name' => 'provincia_id',
'type' => 'number',
'description' => 'Código INE de la provincia',
'pattern' => '[0-9]{2}',
),
array (
'name' => 'isla_id',
'type' => 'number',
'description' => 'Código INE de la isla',
'pattern' => '[0-9]{3}',
),
array (
'name' => 'cmun',
'type' => 'number',
'description' => 'Código INE del municipio en relación a la provincia. provincia_id concatenado con cmun resulta en el codigo INE del municipio',
'pattern' => '[0-9]{3}',
),
array (
'name' => 'dc',
'type' => 'number',
'description' => 'Dígito de control que, asignado mediante una regla de cálculo, permite la detección de errores de grabación y codificación',
'pattern' => '[0-9]{1}',
),
array (
'name' => 'nombre',
'type' => 'string',
'description' => 'Denominación oficial del municipio',
),
),
),
),
array (
'name' => 'ds_oa_islas',
'title' => 'Islas de España',
'description' => 'Relacion de islas por provincia según el INE.',
'format' => 'csv',
'path' => 'data/islas.csv',
'schema' =>
array (
'fields' =>
array (
array (
'name' => 'isla_id',
'type' => 'number',
'description' => 'Código INE de la isla',
'pattern' => '[0-9]{3}',
),
array (
'name' => 'provincia_id',
'type' => 'number',
'description' => 'Código INE de la provincia',
'pattern' => '[0-9]{2}',
),
array (
'name' => 'nombre',
'type' => 'string',
'description' => 'Denominación oficial de la isla',
),
),
),
),
]
];
}

View File

@ -0,0 +1,37 @@
<?php
/**
* Si no existen, descarga los archivos fuente y los graba a disco
*
* @arg source fuente a procesar (OPCIONAL). Puede ser "municipios", "provincias", "autonomias" o "islas". Si no se especifica procesa todo.
* @opt force fuerza la descarga de los ficheros fuente aunque ya existan
*
*/
use ConsoleKit\Widgets\ProgressBar;
use ConsoleKit\Widgets\Box;
/**
* Convierte todos los archivos .csv en /data a .json.
*
*/
class ConvertToJsonCommand extends ConsoleKit\Command
{
public function execute(array $args, array $options = array())
{
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Converting to JSON');
$box->write();$this->getConsole()->writeln("");
$files = glob(DATA_FOLDER . DS ."*.csv");
$progress = new ProgressBar($this->getConsole(), sizeof($files));
foreach ($files as $csvFile) {
$outputFile = DATA_FOLDER . DS . basename($csvFile,".csv") . ".json";
exec("csvjson $csvFile > $outputFile");
$progress->incr();
}
$progress->stop();
}
}

View File

@ -2,44 +2,50 @@
/**
* Si no existen, descarga los archivos fuente y los graba a disco
*
* @arg source fuente a procesar (OPCIONAL). Puede ser "municipios", "provincias", "autonomias" o "islas". Si no se especifica procesa todo.
* @opt force fuerza la descarga de los ficheros fuente aunque ya existan
*
*/
class DownloadCommand extends ConsoleKit\Command
{
/**
* Overriding para que invoque all por defecto.
*/
public function execute(array $args, array $options = array())
{
is_dir(DATA_FOLDER) || mkdir(DATA_FOLDER);
is_dir(ARCHIVE_FOLDER) || mkdir(ARCHIVE_FOLDER);
if (empty($args)) {
foreach (get_class_methods($this) as $method) {
if (strpos($method, 'download')!==false) {
$this->$method($options);
}
}
//si se invoca sin sucomando, ejecuta todo
if (!count($args)) {
$args=['all'];
}
foreach ($args as $arg){
$downloadMethod = "download". ucfirst($arg);
if (!method_exists($this,$downloadMethod)) {
die("Argumento invalido {$arg}");
}
$this->$downloadMethod($options);
}
//$this->writeln('hello world!', ConsoleKit\Colors::GREEN);
return parent::execute($args, $options);
}
private function downloadMunicipios($options)
/**
* Descarga todas los archivos fuente
*
* @opt force fuerza la descarga de los ficheros fuente aunque ya existan
*/
public function executeAll(array $args, array $options = array())
{
for ($i = MUNCIPIOS_YEAR_START % 2000;$i <= date('y');$i++){
$url=sprintf(MUNCIPIOS_URL,$i,$i);
foreach (get_class_methods($this) as $method) {
if (strpos($method, 'execute') !== false && $method != 'executeAll' && $method != 'execute') {
$this->$method($args,$options);
}
}
}
/**
* Descarga los archivos fuente de los municipios
*
* @opt force fuerza la descarga de los ficheros fuente aunque ya existan
*/
public function executeMunicipios(array $args, array $options = array())
{
for ($i = Config::MUNCIPIOS_YEAR_START % 2000;$i <= date('y');$i++){
$url=sprintf(Config::MUNCIPIOS_URL,$i,$i);
if ($i>=16) $url.="x"; //xlsx a partir de 2016.
$fileName = end(explode('/', $url));
@ -51,31 +57,45 @@ class DownloadCommand extends ConsoleKit\Command
}
private function downloadProvincias($options)
/**
* Descarga el archivo fuente de las provincias
*
* @opt force fuerza la descarga de los ficheros fuente aunque ya existan
*/
public function executeProvincias(array $args, array $options = array())
{
if (!file_exists(ARCHIVE_FOLDER . DS . PROVINCIAS_SOURCE_FILE) || isset($options['force']) || isset($options['f'])){
file_put_contents(ARCHIVE_FOLDER . DS . PROVINCIAS_SOURCE_FILE, fopen(PROVINCIAS_URL, 'r'));
if (!file_exists(ARCHIVE_FOLDER . DS . Config::PROVINCIAS_SOURCE_FILE) || isset($options['force']) || isset($options['f'])){
file_put_contents(ARCHIVE_FOLDER . DS . Config::PROVINCIAS_SOURCE_FILE, fopen(Config::PROVINCIAS_URL, 'r'));
}
}
private function downloadAutonomias($options)
/**
* Descarga el archivo fuente de las autonomías
*
* @opt force fuerza la descarga de los ficheros fuente aunque ya existan
*/
public function executeAutonomias(array $args, array $options = array())
{
if (!file_exists(ARCHIVE_FOLDER . DS . AUTONOMIAS_SOURCE_FILE) || isset($options['force']) || isset($options['f'])){
file_put_contents(ARCHIVE_FOLDER . DS . AUTONOMIAS_SOURCE_FILE, fopen(AUTONOMIAS_URL, 'r'));
if (!file_exists(ARCHIVE_FOLDER . DS . Config::AUTONOMIAS_SOURCE_FILE) || isset($options['force']) || isset($options['f'])){
file_put_contents(ARCHIVE_FOLDER . DS . Config::AUTONOMIAS_SOURCE_FILE, fopen(Config::AUTONOMIAS_URL, 'r'));
}
}
private function downloadIslas($options)
/**
* Descarga los archivos fuente de las islas
*
* @opt force fuerza la descarga de los ficheros fuente aunque ya existan
*/
public function executeIslas(array $args, array $options = array())
{
foreach (unserialize(ISLAS_PROVINCIA_INE_CODES) as $provincia) {
for ($i = ISLAS_YEAR_START % 2000; $i <= date('y'); $i++) {
foreach (unserialize(Config::ISLAS_PROVINCIA_INE_CODES) as $provincia) {
for ($i = Config::ISLAS_YEAR_START % 2000; $i <= date('y'); $i++) {
$url = sprintf(ISLAS_URL, $i, $i, $provincia);
$url = sprintf(Config::ISLAS_URL, $i, $i, $provincia);
$fileName = end(explode('/', $url));
if (!file_exists(ARCHIVE_FOLDER . DS . $fileName) || isset($options['d']) || isset($options['f'])) {

View File

@ -2,153 +2,117 @@
use Sunra\PhpSimple\HtmlDomParser;
use ConsoleKit\Widgets\ProgressBar;
use ConsoleKit\Widgets\Box;
/**
* Procesa los archivos fuente y graba a disco los datos en CSV y JSON
*
* @arg source fuente a procesar (OPCIONAL). Puede ser "municipios", "provincias", "autonomias" o "islas". Si no se especifica procesa todo.
* Procesa los archivos fuente y graba a disco los datos en CSV
*
*/
class ProcessCommand extends ConsoleKit\Command
{
/**
* Overriding para que invoque all por defecto.
*/
public function execute(array $args, array $options = array())
{
if (empty($args)) {
foreach (get_class_methods($this) as $method) {
if (strpos($method, 'process')!==false) {
$this->$method($options);
}
}
//si se invoca sin sucomando, ejecuta todo
if (!count($args)) {
$args=['all'];
}
foreach ($args as $arg){
$processMethod = "process". ucfirst($arg);
return parent::execute($args, $options);
}
if (!method_exists($this,$processMethod)) {
die("Argumento invalido {$arg}");
/**
* Procesa todos los archivos fuente y genera los .csv
*
*/
public function executeAll(array $args, array $options = array())
{
foreach (get_class_methods($this) as $method) {
if (strpos($method, 'execute') !== false && $method != 'executeAll' && $method != 'execute') {
$this->$method($options);
}
$this->$processMethod($options);
}
}
/**
* Procesa el último año de de los archivos fuente de municipios y genera municipios.csv
*
*/
public function executeMunicipiosLast(array $args, array $options = array())
{
$columns = ['municipio_id', 'provincia_id', 'cmun', 'dc', 'nombre'];
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Municipios Last Year');
$box->write();
$this->getConsole()->writeln("");
$file = fopen(DATA_FOLDER . DS . Config::MUNICIPIOS_DEST_FILE . ".csv", 'w+');
fputcsv($file, $columns);
$this->parseMunicipioYearToFile(date('y'), $file, false);
}
/**
* Procesa el último año de de los archivos fuente de municipios y genera municipios-historical.csv
*
*/
public function executeMunicipios(array $args, array $options = array())
{
$columns = ['municipio_id', 'year', 'provincia_id', 'cmun', 'dc', 'nombre'];
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Municipios Historical');
$box->write();
$this->getConsole()->writeln("");
$file = fopen(DATA_FOLDER . DS . Config::MUNICIPIOS_HISTORICAL_DEST_FILE . ".csv", 'w+');
fputcsv($file, $columns);
for ($year = Config::MUNCIPIOS_YEAR_START % 2000; $year <= date('y'); $year++) {
$this->parseMunicipioYearToFile($year, $file);
}
//$this->writeln('hello world!', ConsoleKit\Colors::GREEN);
}
private function processMunicipios($options)
/**
* Procesa el archivo fuente de provincias y genera provincias.csv
*
*/
public function executeProvincias(array $args, array $options = array())
{
$municipiosTotal = [];
for ($year = MUNCIPIOS_YEAR_START % 2000; $year <= date('y'); $year++) {
$fileName = sprintf(MUNICIPIOS_SOURCE_FILE, $year);
if ($year >= 16) $fileName .= "x"; //xlsx a partir de 2016.
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Provincias');
$box->write();
$this->getConsole()->writeln("");
// Procesamos documento xlsx
$sourceFilename = ARCHIVE_FOLDER . DS . $fileName;
$excelReader = PHPExcel_IOFactory::createReader(PHPExcel_IOFactory::identify($sourceFilename));
$excelReader->setLoadAllSheets();
$excelObj = $excelReader->load($sourceFilename);
$municipiosRaw = $excelObj->getActiveSheet()->toArray(null, true, true, true);
$html = iconv("ISO-8859-15", "UTF-8",
file_get_contents(ARCHIVE_FOLDER . DS . Config::PROVINCIAS_SOURCE_FILE));
$dom = HtmlDomParser::str_get_html($html);
// Eliminamos las dos primeras filas
array_shift($municipiosRaw); //solo la primera para 2004
if ($year > 4) array_shift($municipiosRaw); //la segunda también para > 2004
$provincias = [];
$municipiosWithYear = array_map(function ($row) use ($year) {
if ($year <= 10) { //Antes de 2011: CMUN + DC concatenados. Separamos.
$output = [
'CPRO' => $row['A'], //str_pad($row['A'],2,"0",STR_PAD_LEFT),
'CMUN' => (int)($row['B'] / 10),
'DC' => $row['B'] % 10,
'NOMBRE' => $row['C'],
'YEAR' => 2000 + $year
];
} else {
$output = [
'CPRO' => $row['A'], //str_pad($row['A'],2,"0",STR_PAD_LEFT),
'CMUN' => $row['B'], //str_pad($row['B'],3,"0",STR_PAD_LEFT)
'DC' => $row['C'],
'NOMBRE' => $row['D'],
'YEAR' => 2000 + $year
];
}
return $output;
}, array_values($municipiosRaw));
$municipiosTotal = array_merge($municipiosTotal, $municipiosWithYear);
}
// Generamos array con el ultimo año
$municipiosLastYear = array_map(function ($row) {
return [
'CPRO' => $row['A'], //str_pad($row['A'],2,"0",STR_PAD_LEFT),
'CMUN' => $row['B'],
'DC' => $row['C'],
'NOMBRE' => $row['D'],
];
}, array_values($municipiosRaw));
// Grabamos a disco - To DO: Refactorizar a función/clase
// Grabamos Ficheros CSV
// Último Año
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_DEST_FILE . ".csv", 'w+');
fputcsv($file, array_keys($municipiosLastYear[0]));
foreach ($municipiosLastYear as $municipio) {
fputcsv($file, $municipio);
}
// Todos los años
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_HISTORICAL_DEST_FILE . ".csv", 'w+');
fputcsv($file, array_keys($municipiosTotal[0]));
foreach ($municipiosTotal as $municipio) {
fputcsv($file, $municipio);
}
// Grabamos Ficheros JSON
// Último Año
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_DEST_FILE . ".json", 'w+');
fwrite($file, json_encode($municipiosLastYear, JSON_UNESCAPED_UNICODE));
fclose($file);
// Todos los años
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_HISTORICAL_DEST_FILE . ".json", 'w+');
fwrite($file, json_encode($municipiosTotal, JSON_UNESCAPED_UNICODE));
fclose($file);
}
private function processProvincias($options)
{
$html=iconv("ISO-8859-15", "UTF-8", file_get_contents(ARCHIVE_FOLDER . DS . PROVINCIAS_SOURCE_FILE));
$dom = HtmlDomParser::str_get_html( $html );
$provincias=[];
foreach($dom->find('table[summary$=quetacion]') as $table) {
foreach($table->find('tr[!valign]') as $row){
foreach ($dom->find('table[summary$=quetacion]') as $table) {
foreach ($table->find('tr[!valign]') as $row) {
$provincias[] = [
'codigo' => trim($row->children(0)->innertext),
'provincia_id' => trim($row->children(0)->innertext),
'nombre' => html_entity_decode(trim($row->children(1)->innertext)),
];
};
};
// Grabamos a disco - To DO: Refactorizar a función/clase
// Grabamos JSON
$file = fopen(DATA_FOLDER . DS . PROVINCIAS_DEST_FILE .".json",'w+');
fwrite($file, json_encode($provincias,JSON_UNESCAPED_UNICODE) );
fclose($file);
// Grabamos CSV
$file = fopen(DATA_FOLDER . DS . PROVINCIAS_DEST_FILE . ".csv",'w+');
$file = fopen(DATA_FOLDER . DS . Config::PROVINCIAS_DEST_FILE . ".csv", 'w+');
fputcsv($file, array_keys($provincias[0]));
foreach ($provincias as $provincia) {
fputcsv($file, $provincia);
@ -157,34 +121,36 @@ class ProcessCommand extends ConsoleKit\Command
}
private function processAutonomias($options)
/**
* Procesa el archivo fuente de autonomias y genera autonomias.csv
*
*/
public function executeAutonomias(array $args, array $options = array())
{
$html=iconv("ISO-8859-15", "UTF-8", file_get_contents(ARCHIVE_FOLDER . DS . AUTONOMIAS_SOURCE_FILE));
$dom = HtmlDomParser::str_get_html( $html );
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Autonomias');
$box->write();
$this->getConsole()->writeln("");
$autonomias=[];
$html = iconv("ISO-8859-15", "UTF-8", file_get_contents(ARCHIVE_FOLDER . DS . Config::AUTONOMIAS_SOURCE_FILE));
$table=$dom->find('table',0);
$rows = array_slice($table->find('tr'),1);
$dom = HtmlDomParser::str_get_html($html);
foreach($rows as $row){
$autonomias = [];
$table = $dom->find('table', 0);
$rows = array_slice($table->find('tr'), 1);
foreach ($rows as $row) {
$autonomias[] = [
'codigo' => trim($row->children(0)->innertext),
'autonomia_id' => trim($row->children(0)->innertext),
'nombre' => html_entity_decode(trim($row->children(1)->innertext)),
];
};
// Grabamos a disco - To DO: Refactorizar a función/clase
// Grabamos JSON
$file = fopen(DATA_FOLDER . DS . AUTONOMIAS_DEST_FILE .".json",'w+');
fwrite($file, json_encode($autonomias,JSON_UNESCAPED_UNICODE) );
fclose($file);
// Grabamos CSV
$file = fopen(DATA_FOLDER . DS . AUTONOMIAS_DEST_FILE .".csv",'w+');
$file = fopen(DATA_FOLDER . DS . Config::AUTONOMIAS_DEST_FILE . ".csv", 'w+');
fputcsv($file, array_keys($autonomias[0]));
foreach ($autonomias as $autonomia) {
@ -193,128 +159,221 @@ class ProcessCommand extends ConsoleKit\Command
fclose($file);
}
/*
* Procesa los archivos fuente de islas y genera:
/**
* Procesa los archivos fuente de islas y genera municipios_islas_historical.csv
*
* - islas(.csv/.json)
* - municipios_islas(.csv/.json)
* - municipios_islas_historical(.csv/.json)
*/
public function executeMunicipiosIslas(array $args, array $options = array())
{
$columns = ['municipio_id', 'year', 'isla_id', 'provincia_id', 'cmun', 'dc', 'nombre'];
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Municipios Islas Historical');
$box->write();
$this->getConsole()->writeln("");
$file = fopen(DATA_FOLDER . DS . Config::MUNICIPIOS_ISLAS_HISTORICAL_DEST_FILE . ".csv", 'w+');
fputcsv($file, $columns);
for ($year = Config::ISLAS_YEAR_START % 2000; $year <= date('y'); $year++) {
$this->parseIslaYearToFile($year, $file);
}
}
/**
* Procesa el último año de los archivos fuente de islas y genera municipios_islas.csv
*
* @param $options opciones CLI
*
*/
private function processIslas($options){
public function executeMunicipiosIslasLast(array $args, array $options = array())
{
$islasTotal = [];
$columns = ['municipio_id', 'isla_id', 'provincia_id', 'cmun', 'dc', 'nombre'];
for ($year = ISLAS_YEAR_START % 2000; $year <= date('y'); $year++) {
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Municipios Islas');
$box->write(); $this->getConsole()->writeln("");
// Agrupamos los datos de los tres archivos en un solo array
$islasRaw = [];
foreach (unserialize(ISLAS_PROVINCIA_INE_CODES) as $isla) {
$fileName = sprintf(ISLAS_SOURCE_FILE, $year, $isla);
$sourceFilename = ARCHIVE_FOLDER . DS . $fileName;
$excelReader = PHPExcel_IOFactory::createReader(PHPExcel_IOFactory::identify($sourceFilename));
$file = fopen(DATA_FOLDER . DS . Config::MUNICIPIOS_ISLAS_DEST_FILE . ".csv", 'w+');
fputcsv($file, $columns);
$excelReader->setLoadAllSheets();
$excelObj = $excelReader->load($sourceFilename);
$islaRaw = $excelObj->getActiveSheet()->toArray(null, true, true, true);
$this->parseIslaYearToFile(date('y'), $file, false);
//quitamos las tres primeras files
for ($i=0;$i==3;$i++) {
if (!is_numeric($islaRaw[$i]['A'])) {
unset($islaRaw);
}
}
/**
* Procesa el último año de los archivos fuente de islas y genera islas.csv
*
*/
public function executeIslas(array $args, array $options = array()){
$columns = ['isla_id', 'provincia_id', 'nombre'];
$box = new ConsoleKit\Widgets\Box($this->getConsole(), 'Islas');
$box->write(); $this->getConsole()->writeln("");
$file = fopen(DATA_FOLDER . DS . Config::ISLAS_DEST_FILE . ".csv", 'w+');
fputcsv($file, $columns);
$this->parseIslaYearToFile(date('y'), $file, false, true);
}
/**
* Procesa los archivos fuente de las islas del año especificado y anexa los datos al archivo .csv
*
* @param $year int año a procesar
* @param $file resource archivo abierto
* @param $includeYear boolean determina si se incluye el campo year. Por defecto true
* @param $group boolean determina si se agrupan los resultados por isla_id. Por defecto false
*
*/
private function parseIslaYearToFile($year, $file, $includeYear = true, $group = false){
// Agrupamos los datos de los tres archivos en un solo array
$islasRaw = [];
foreach (unserialize(Config::ISLAS_PROVINCIA_INE_CODES) as $isla) {
$fileName = sprintf(Config::ISLAS_SOURCE_FILE, $year, $isla);
$sourceFilename = ARCHIVE_FOLDER . DS . $fileName;
$excelReader = PHPExcel_IOFactory::createReader(PHPExcel_IOFactory::identify($sourceFilename));
$excelReader->setLoadAllSheets();
$excelObj = $excelReader->load($sourceFilename);
$islaRaw = $excelObj->getActiveSheet()->toArray(null, true, true, true);
//quitamos las tres primeras files
for ($i = 0; $i == 3; $i++) {
if (!is_numeric($islaRaw[$i]['A'])) {
unset($islaRaw);
}
$islaRaw=array_slice($islaRaw,3);
$islasRaw = array_merge($islasRaw,$islaRaw);
}
// quitamos lineas en blanco (p.e datos para 2012)
$islasRaw = array_filter($islasRaw,function($row) {
return !empty($row['A']);
});
// Generamos hash con los atributos correctos para el histórico
$islasWithYear = array_map(function ($row) use ($year) {
$output = [
'CPRO' => $row['A'],
'CISLA' => $row['B'],
'CMUN' => $row['D'],
'DC' => $row['E'],
'NOMBRE' => $row['F'],
'YEAR' => 2000 + $year
];
return $output;
}, array_values($islasRaw));
$islasTotal = array_merge($islasTotal, $islasWithYear);
$islaRaw = array_slice($islaRaw, 3);
$islasRaw = array_merge($islasRaw, $islaRaw);
}
// Generamos hash con los atributos correctos para el último año.
$islasLastYear = array_map(function ($row) {
return [
'CPRO' => $row['A'],
'CISLA' => $row['B'],
'CMUN' => $row['D'],
'DC' => $row['E'],
'NOMBRE' => $row['F'],
// quitamos lineas en blanco (p.e datos para 2012)
$islasRaw = array_filter($islasRaw, function ($row) {
return !empty($row['A']);
});
$progress = new ProgressBar($this->getConsole(), sizeof($islasRaw));
// Generamos hash con los atributos correctos para el histórico
$islas = array_map(function ($row) use ($year, $progress, $includeYear) {
$provinciaId = str_pad($row['A'], 2, "0", STR_PAD_LEFT);
$municipioId = str_pad($row['D'], 3, "0", STR_PAD_LEFT);
$islaId = str_pad($row['B'], 3, "0", STR_PAD_LEFT);
$output = [
'municipio_id' => $provinciaId . $municipioId,
'year' => 2000 + $year,
'isla_id' => $islaId,
'provincia_id' => $provinciaId,
'cmun' => $municipioId,
'dc' => $row['E'],
'nombre' => $row['F'],
];
if (!$includeYear) {
unset($output['year']);
}
$progress->incr();
return $output;
}, array_values($islasRaw));
// Agrupamos islas y generamos hash con atributos correctos
$islas = array_reduce($islasRaw, function ($result, $row) {
$result[$row['B']] = [
'CPRO' => $row['A'],
'CISLA' => $row['B'],
'NOMBRE' => $row['C']];
return $result;
}, array());
// Grabamos a disco - To DO: Refactorizar a función/clase
// Grabamos Ficheros CSV
// Último Año
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_ISLAS_DEST_FILE . ".csv", 'w+');
fputcsv($file, array_keys(reset($islasLastYear)));
foreach ($islasLastYear as $municipio) {
fputcsv($file, $municipio);
if ($group) {
// Agrupamos islas y generamos hash con atributos correctos
$islas = array_reduce($islasRaw, function ($result, $row) {
$result[$row['B']] = [
'isla_id' => str_pad($row['B'], 3, "0", STR_PAD_LEFT),
'provincia_id' => str_pad($row['A'], 2, "0", STR_PAD_LEFT),
'nombre' => $row['C']];
return $result;
}, array());
}
// Todos los años
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_ISLAS_HISTORICAL_DEST_FILE . ".csv", 'w+');
fputcsv($file, array_keys(reset($islasTotal)));
foreach ($islasTotal as $municipio) {
fputcsv($file, $municipio);
}
// Solo Islas
$file = fopen(DATA_FOLDER . DS . ISLAS_DEST_FILE . ".csv", 'w+');
fputcsv($file, array_keys(reset($islas)));
foreach ($islas as $isla) {
fputcsv($file, $isla);
}
// Grabamos Ficheros JSON
$progress->stop();
// Último Año
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_ISLAS_DEST_FILE . ".json", 'w+');
fwrite($file, json_encode($islasLastYear, JSON_UNESCAPED_UNICODE));
fclose($file);
// Todos los años
$file = fopen(DATA_FOLDER . DS . MUNICIPIOS_ISLAS_HISTORICAL_DEST_FILE . ".json", 'w+');
fwrite($file, json_encode($islasTotal, JSON_UNESCAPED_UNICODE));
fclose($file);
// Solo islas
$file = fopen(DATA_FOLDER . DS . ISLAS_DEST_FILE . ".json", 'w+');
fwrite($file, json_encode($islas, JSON_UNESCAPED_UNICODE));
fclose($file);
}
/**
* Procesa los archivos fuente de las municipios del año especificado y anexa los datos al archivo .csv
*
* @param $year int año a procesar
* @param $file resource archivo abierto
* @param $includeYear boolean determina si se incluye el campo year. Por defecto true
*
*/
private function parseMunicipioYearToFile($year,$file, $includeYear = true){
$fileName = sprintf(Config::MUNICIPIOS_SOURCE_FILE, $year);
if ($year >= 16) $fileName .= "x"; //xlsx a partir de 2016.
// Procesamos documento xlsx
$sourceFilename = ARCHIVE_FOLDER . DS . $fileName;
$excelReader = PHPExcel_IOFactory::createReader(PHPExcel_IOFactory::identify($sourceFilename));
$excelReader->setLoadAllSheets();
$excelObj = $excelReader->load($sourceFilename);
$municipiosRaw = $excelObj->getActiveSheet()->toArray(null, true, true, true);
$progress = new ProgressBar($this->getConsole(), sizeof($municipiosRaw));
// Eliminamos las dos primeras filas
array_shift($municipiosRaw); //solo la primera para 2004
if ($year > 4) array_shift($municipiosRaw); //la segunda también para > 2004
$municipiosWithYear = array_map(function ($row) use ($year,$progress,$includeYear) {
if ($year <= 10) { //Antes de 2011: CMUN + DC concatenados. Separamos.
$provinciaId = str_pad($row['A'],2,"0",STR_PAD_LEFT);
$municipioId = str_pad((int) ($row['B']/10),3,"0",STR_PAD_LEFT);
$output = [
'municipio_id' => $provinciaId . $municipioId,
'year' => 2000 + $year,
'provincia_id' => $provinciaId,
'cmun' => $municipioId,
'dc' => $row['B'] % 10,
'nombre' => $row['C'],
];
} else {
$provinciaId = str_pad($row['A'],2,"0",STR_PAD_LEFT);
$municipioId = str_pad($row['B'],3,"0",STR_PAD_LEFT);
$output = [
'municipio_id' => $provinciaId . $municipioId,
'year' => 2000 + $year,
'provincia_id' => $provinciaId,
'cmun' => $municipioId,
'dc' => $row['C'],
'nombre' => $row['D'],
];
}
if (!$includeYear) {
unset($output['year']);
}
$progress->incr();
return $output;
}, array_values($municipiosRaw));
foreach ($municipiosWithYear as $municipio) {
fputcsv($file, $municipio);
}
$progress->stop();
}
}

View File

@ -0,0 +1,48 @@
<?php
require_once('Config.php');
use ConsoleKit\Widgets\ProgressBar;
/**
* Actualiza datapackage.json
*
*/
class UpdateCommand extends ConsoleKit\Command
{
/**
* Actualiza datapackage.json
*
*/
public function execute(array $args, array $options = array())
{
$datapackageNew = Config::$datapackage;
$datapackageNew['last_updated']=date('Y-m-d ');
foreach ( Config::$datapackage['resources'] as $resource){
$resource['format'] = 'json';
$resource['path'] = array_shift(explode('.',$resource['path'])) . ".json";
$datapackageNew['resources'][]=$resource;
}
//Nueva version
if (file_exists(BASE_PATH . DS . "datapackage.json")) {
$datapackageOld = json_decode(file_get_contents(BASE_PATH . DS . "datapackage.json"));
if (!empty($datapackageOld->version)) {
$datapackageNew['version'] = $datapackageOld->version;
$datapackageNew['version']++;
} else {
$datapackageNew['version']="0.0.1";
}
}
file_put_contents(BASE_PATH . DS . "datapackage.json", json_encode($datapackageNew,JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
}
}

View File

@ -1,45 +1,28 @@
<?php
require_once "vendor/autoload.php";
require_once('lib/Config.php');
define('DS','/');
define ("MUNCIPIOS_URL","http://www.ine.es/daco/daco42/codmun/codmun%02d/%02dcodmun.xls");
define ("PROVINCIAS_URL","http://www.ine.es/daco/daco42/codmun/cod_provincia.htm");
define ("AUTONOMIAS_URL","http://www.ine.es/daco/daco42/codmun/cod_ccaa.htm");
define ("ISLAS_URL","http://www.ine.es/daco/daco42/codmun/codmun%02d/%02dcodislas%02d.xls");
define ('BASE_PATH', dirname(__DIR__));
define ('DATA_FOLDER',BASE_PATH . DS . Config::DATA_FOLDER );
define ('ARCHIVE_FOLDER',BASE_PATH . DS . Config::ARCHIVE_FOLDER );
define ("MUNCIPIOS_YEAR_START",2004); // Hay datos desde 2001, pero necesitan tratamiento especial. To Do
define ("ISLAS_YEAR_START",2012); // hay datos desde 2008, pero no incluye el codigo de Isla. To Do
define ("ISLAS_PROVINCIA_INE_CODES",serialize([07,35,38])); //PHP <5.6 compatible (no soporta arrays como constantes)
define ("DATA_FOLDER","../data");
define ("ARCHIVE_FOLDER","../archive");
define ("PROVINCIAS_SOURCE_FILE","cod_provincia.htm");
define ("AUTONOMIAS_SOURCE_FILE","cod_ccaa.htm");
define ("MUNICIPIOS_SOURCE_FILE","%02dcodmun.xls");
define ("ISLAS_SOURCE_FILE","%02dcodislas%02d.xls");
define ("PROVINCIAS_DEST_FILE","provincias");
define ("AUTONOMIAS_DEST_FILE","autonomias");
define ("MUNICIPIOS_DEST_FILE","municipios");
define ("MUNICIPIOS_HISTORICAL_DEST_FILE","municipios_historical");
define ("ISLAS_DEST_FILE","islas");
define ("MUNICIPIOS_ISLAS_HISTORICAL_DEST_FILE","municipios_islas_historical");
define ("MUNICIPIOS_ISLAS_DEST_FILE","municipios_islas");
// Comprobamos si los directorios están creados. Si no lo están, los creamos
is_dir(DATA_FOLDER) || mkdir(DATA_FOLDER);
is_dir(ARCHIVE_FOLDER) || mkdir(ARCHIVE_FOLDER);
// Main
// Inicializamos consola
$console = new ConsoleKit\Console();
$console->addCommandsFromDir("lib",null,true);
if (sizeof($argv)==1) {
$console->run(['download']);
$console->run(['process']);
$console->run(['update']);
$console->run(['convert-to-json']);
} else {
$console->run();
}

View File

@ -163,7 +163,7 @@ class ProgressBar extends AbstractWidget
if ($this->showRemainingTime) {
$speed = (time() - $this->startTime) / $this->value;
$remaining = number_format(round($speed * ($this->total - $this->value), 2), 2);
$output .= "$remaining sec remaining";
$output .= " $remaining sec remaining";
}
return $output;