lunes, 12 de marzo de 2012

Provincias, municipios y códigos postales

Quería empezar este blog oficial de iFraktal Internet Marketing, S.L. con un caso práctico.

Estábamos diseñando la página web para un cliente consistente en una mini-tienda on-line, desde la cual se aceptan pedidos de un producto y pensamos que sería buena idea añadir una validación de códigos postales, municipios y provincias. Al tratarse de un nuevo negocio no había datos previos que importar, con lo partíamos de una base de datos en blanco y de esta forma podíamos evitar que la misma se llenase de información duplicada e inútil que nos hemos encontrado otras veces con nombres de municipio mal escritos. Un caso típico sería encontrarse municipios como "HOSPITALET", "L'HOSPITALET", "HOSPITALET DE LLOBREGAT", "L'HOSPITALET DE LLOBREGAT",... cuando la denominación oficial según el INE es "HOSPITALET DE LLOBREGAT, L'".

Así que nos pusimos a buscar en Internet una lista actualizada de poblaciones y códigos postales españoles. Debería ser fácil, ¿no? PUES NO.

Lo primero que encontramos fue una relación de provincias con sus códigos y la lista oficial de municipios actualizada a 1 de enero de 2012, ambos proporcionados por el INE (Instituto Nacional de Estadística). Hasta aquí fue fácil, pero había un problema: la lista de municipios incluía el código de la provincia, el código de municipio y hasta un dígito de control, pero no incluía el código postal del mismo.

Así que nos pusimos a buscar una relación de códigos postales y municipios. Siguiendo con el INE hay una sección de descargas del callejero, que prometía. Sin embargo una vez descargada la información consistía de 4 archivos de texto en formato ASCII con campos de ancho fijo conteniendo vías, pseudovías, tramos de vías y unidades poblacionales. Existe un archivo en formato Word que explica como se relaciona cada archivo. Tras revisar la documentación y echar un vistazo a los archivos decidimos seguir buscando. Procesar esos archivos iba a requerir demasiado esfuerzo.

Seguimos buscando y lo siguiente que encontramos es que no somos los primeros que nos ha ocurrido esto. En el blog de Carme Pla la autora explica que se encontró con la misma problemática que nosotros. Allí nos enteramos que Correos proporciona unas bases de datos de códigos postales a un precio totalmente desorbitado. El mismo blog nos dirige a una página llamada "Códigos Postales de España: Base de datos", que contiene datos de provincias, municipios poblaciones y calles con sus correspondientes códigos postales en hasta 3 formatos diferentes (CSV, XML y MySQL). Descargamos y probamos.

Los fichero tienen algún fallo y probablemente no estén complemente actualizados pero algo es algo. Tras cargar el archivo CSV en una tabla MySQL y procesar el contenido, hemos conseguido una tabla conteniendo la lista de municipios poblaciones y códigos postales, que era lo que queríamos. La información de las calles se ha eliminado pues en nuestro caso no tenía utilidad.

Y para que este trabajo pueda servir a otros, hemos decidido ofrecer de forma libre y gratuita un archivo de texto conteniendo las sentencias MySQL para crear la base de datos de provincias, municipios poblaciones y códigos postales. Se permite explícitamente usar y alterar los datos contenidos en ese archivo para cualesquier fin. No garantizamos que los datos sean correctos o estén actualizados.

Descargar codigos-postales-v1.0.zip (391 KB).


ACTUALIZACIÓN:

Se ha actualizado el archivo de códigos postales a la versión 1.1 debido a algunos pequeños fallos: Descargar codigos-postales-v1.1.zip.

También puede interesarte: