Merge lp:~sergio-incaser/openerp-spain/openerp-spain into lp:~openerp-spain-team/openerp-spain/7.0

Proposed by Sergio Teruel
Status: Merged
Merged at revision: 482
Proposed branch: lp:~sergio-incaser/openerp-spain/openerp-spain
Merge into: lp:~openerp-spain-team/openerp-spain/7.0
Diff against target: 38 lines (+14/-0)
1 file modified
l10n_es_toponyms/gen_src/gen_toponyms_geonames.py (+14/-0)
To merge this branch: bzr merge lp:~sergio-incaser/openerp-spain/openerp-spain
Reviewer Review Type Date Requested Status
Pedro Manuel Baeza code review Approve
Review via email: mp+223092@code.launchpad.net

Description of the change

[IMP] l10n_es_toponyms Nueva funcionalidad en gen_toponyms_geonames.py para añadir codigos INE en l10n_es_toponyms_zipcodes.xml

To post a comment you must log in.
Revision history for this message
Pedro Manuel Baeza (pedro.baeza) wrote :

Buenas, Sergio,

Muchas gracias por el parche. Aunque ahora estamos buscando un mejor método para extraer los topónimos (ya que GeoNames ha cambiado los términos de uso de su API, pero ha puesto a disposición pública unos archivos ZIP con la información compilada), pero sin duda se aprovechará esta función que incluyes para el nuevo método.

Por el momento, podemos incluir tal cual como referencia.

Un saludo.

review: Approve (code review)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'l10n_es_toponyms/gen_src/gen_toponyms_geonames.py'
--- l10n_es_toponyms/gen_src/gen_toponyms_geonames.py 2013-07-12 17:20:35 +0000
+++ l10n_es_toponyms/gen_src/gen_toponyms_geonames.py 2014-06-13 15:21:23 +0000
@@ -71,6 +71,7 @@
71 # Parsear argumentos de la línea de comandos71 # Parsear argumentos de la línea de comandos
72 argparser = argparse.ArgumentParser(description=u'Descarga los datos de CPs de GeoNames.')72 argparser = argparse.ArgumentParser(description=u'Descarga los datos de CPs de GeoNames.')
73 argparser.add_argument('--start', dest='start', type=int, default=1000, help=u'CP de inicio de la consulta')73 argparser.add_argument('--start', dest='start', type=int, default=1000, help=u'CP de inicio de la consulta')
74 argparser.add_argument('--ine_code', dest='ine_code', type=str, default='', help=u'Archivo codigos INE')
74 args = argparser.parse_args()75 args = argparser.parse_args()
75 start = args.start76 start = args.start
76 # Preparar archivo en el que escribir77 # Preparar archivo en el que escribir
@@ -81,6 +82,18 @@
81 output.write(" <data noupdate='1'>\n")82 output.write(" <data noupdate='1'>\n")
82 else:83 else:
83 output = open("l10n_es_toponyms_zipcodes.xml", 'a')84 output = open("l10n_es_toponyms_zipcodes.xml", 'a')
85
86 # Descargamos el fichero desde la web del INE apartado "Callejero del censo electoral":
87 # http://www.ine.es/ss/Satellite?L=es_ES&c=Page&cid=1254735624326&p=1254735624326&pagename=ProductosYServicios%2FPYSLayout
88 # Descomprimimos el archivo y pasamos como parametro ine_code la ruta del archivo mas grande "TRAMOS-NAL.Fxxxxxx"
89 ine_dic = {}
90 if args.ine_code != '':
91 if os.path.exists(args.ine_code):
92 fCPs = open(args.ine_code, 'r')
93 # Creamos un diccionario con clave Código postal y valor codigo INE de municipio
94 for lineCP in fCPs:
95 ine_dic[lineCP[42:47]] = lineCP[0:5]
96
84 # Iterar por el rango de CPs97 # Iterar por el rango de CPs
85 cont = 098 cont = 0
86 for cp in range (start, 53000):99 for cp in range (start, 53000):
@@ -101,6 +114,7 @@
101 output.write(' <field name="name">%s</field>\n' %filterCity(city).encode('utf-8'))114 output.write(' <field name="name">%s</field>\n' %filterCity(city).encode('utf-8'))
102 output.write(' <field name="zip">%s</field>\n' %cp_str)115 output.write(' <field name="zip">%s</field>\n' %cp_str)
103 output.write(' <field name="country_id" ref="base.es"/>\n')116 output.write(' <field name="country_id" ref="base.es"/>\n')
117 output.write(' <field name="code">%s</field>\n' %ine_dic.get(cp,''))
104 output.write(' </record>\n')118 output.write(' </record>\n')
105 else:119 else:
106 print "No se puede continuar la extracción de datos.\n%s\nContinúe después del tiempo indicado utilizando el parámetro --start con el número %s." %(handler.message.encode('utf-8'), cp)120 print "No se puede continuar la extracción de datos.\n%s\nContinúe después del tiempo indicado utilizando el parámetro --start con el número %s." %(handler.message.encode('utf-8'), cp)