Feed de
Artículos
Comentarios

El esquema de continentes, países y ciudades es de uso común para cualquier aplicación. Si además queremos mantener una lista de direcciones quizá nos interese añadir también el código postal.

strawberry
Creative Commons License photo credit: jsc.

Estos días me he decidido a poner en una base de datos una serie de contactos. Como quiero evitar errores y que haya coherencia y consistencia con los datos, lo primero que he buscado es la estructura de países, algo que por lógica se necesita en muchísimas aplicaciones y parece obvio que será algo muy estandarizado o por lo menos muy consensuado.

Estructura de países del mundo

Lo primero que he hecho ha sido buscar la lista de países del mundo, con sus respectivos códigos internacionales (por ejemplo, sabemos que para España es ES, para Francia FR, para Alemania DE, etc.). Pero quería una lista que pudiese importar directamente a una base de datos, sin tener que entrarla de nuevo, ya que es más rápido y evita errores. Me ha gustado encontrar esta:

Según dice cumple con la norma internacional ISO y está disponible en tres formatos: xls, txt, csv. Como mi base de datos es una MySQL, elegí el formato csv, que se importa directamente mediante phpMyAdmin sin ningún problema.

Provincias y municipos de España

A continuación, para poder encontrar los códigos de las distintas provincias y municipios de España, podemos recurrir a la web del Instituto Nacional de Estadística, que cada año actualiza esta información y nos la ofrece en listados en formato xls:

He abierto el fichero en Open Office y lo he guardado en formato csv. A continuación lo he importado en MySQL sin problema.

En este fichero vemos que tenemos los códigos y nombres de los municipios y el código de las provincias. Ahora nos faltaría una tabla que relacione los códigos de las provincias con el nombre de cada una de ellas; nada difícil, pues no hay muchas.

Con esto sería suficiente según lo que queramos hacer, pero a mí personalmente también me interesa tener la clasificación por autonomías. No he podido encontrar ninguna tabla ya hecha, así que la he creado yo misma.

Los Códigos Postales

Hong Kong Post
Creative Commons License photo credit: kozumel

Si queremos añadir los códigos postales debemos tener en cuenta que no podemos relacionarlos directamente con los códigos de municipios que tenemos. Los códigos postales se asignan a calles y zonas (núcleos de población) que no tiene por qué coincidir obligatoriamente con un municipio. Así, a veces tenemos un municipio con un único código postal pero muchas otras veces tenemos varios códigos postales para distintas zonas de una misma localidad y también podemos encontrar varios municipios compartiendo un mismo código postal.

Al ir a buscar un listado de códigos postales, lo primero que piensas es en acudir a la web de correos, donde encontramos las tablas de la base de datos con unas tarifas a precios desorbitados; no guardan ninguna proporción con el precio real de mercado.

Nada que ver con la generosidad de Albin, que nos ofrece gratuitamente la base de datos completa en 3 formatos: txt, xml y MySQL ¡¡Gracias, amigo!!

Sin embargo, en mi caso no ha sido posible utilizarla directamente porque la importación de la base de datos me daba un error de «checksum» en el formato MySQL, en todos los intentos de importación.

Tampoco parecía tener éxito con el formato txt (tras conversión a csv), pues también da error grave. Pero, a diferencia del otro formato, pude acceder al archivo y finalmente encontré el error: existe una calle en Córdoba, dos en Madrid y una en Las Palmas (Quemadillas, Princesa Juana y Canteras) en las que se ha incluído un punto y coma, con lo cual la importación de datos interpreta que en esos registros existe un campo de más que no puede procesar.  Sólo tuve que corregirlo y ya pude importar sin problemas.

En esta base de datos salen muchos más «municipios» que en el listado del INE, así que he substituido la anterior lista de municipios por esta otra.

Actualización: Otra opción sería enlazar los núcleos de población con que trabaja correos y asignarlos a los municipios (entidad legal) correspondientes. Algo a valorar dependiendo del uso que vaya a darse a la base de datos.

El resto de países

Dado que me ha costado más de lo que creía conseguir esta estructura, dejo para más adelante el resto de países.

O puede que quizá más adelante compre alguna estructura de base de datos, pero a un precio asequible 😉

Actualización:

Edito la entrada para añadir los enlaces que nos pasa Eqhes. Se trata de la página GeoNames. Hay información de todo tipo que se puede descargar o usar como servicio web gratuitamente, aunque aceptan donaciones. ¡Realmente útil!

Technorati Tags: , ,

30 Respuestas a “Tablas de Países, Provincias, Municipios y Códigos Postales”

  1. Eqhes dice:

    ¡Buenos días Carme! Has hecho un gran trabajo 😉 A ver si algún día se ponen las pilas los de Correos. No veo mal que cobren por ofrecer los datos, pero a esos precios no sé si alguien se lo puede permitir…

    Hace algún tiempo estuve buscando lo mismo que ahora tú nos regalas, pero además quería geodatos de las poblaciones, y acabé llegando a una página más que interesante: GeoNames. Hay información de todo tipo que se puede descargar o usar como servicio web gratuitamente, aunque aceptan donaciones. Espero que te sea útil 😉

    Saludos.

  2. Carme dice:

    ¡Muchas gracias, Eqhes!
    El sitio es muy bueno y tremendamente útil. Al igual que tú, tampoco veo mal que cobren si actualizan los datos si lo mantienen al día, pero algo que sea razonable.
    Gracias de nuevo por los enlaces y si aceptan donaciones estupendo, pues podremos pagar lo que pensemos que es justo 🙂

  3. Anónimo dice:

    Hola Carmen, gracias por poner a disposicion este producto tan útil.
    saludos jaime

  4. Salvador dice:

    Thanks!

  5. Roberto dice:

    Muchas gracias, Carmen.

    Estaba empezando mi proyecto de BI con informacion geografica y me ha venido de perlas.

    Merci!!!

  6. Pedro dice:

    El problema con las bases de datos de correos es que se basan únicamente en nucleos de población y no en la entidad legal «municipio», con lo cual, en las bases de datos de correos no viene la información del municipio. Por ejemplo: El municipio Segovia tiene 6 nucleos de población (la mayoría antiguios pueblos que se unieron al municipio hace mas de un siglo), algunos de ellos a una distancia de más de 20 km. En correos encontraremos que Segovia tiene los códigos postales 40001 a 40007, Aldeallana y Fuentemilanos el 40153, Madrona, Perogordo y Torredondo el 40154, Zamarramala el 40156, Revenga y Hontoria el 40195; pero en la base de datos de correos no indica por ninguna parte que sean parte del término municipal de Segovia. Incluso hay veces que en un municipio con varios núcleos de población, alguno de ellos tenga el mismo código postal que el de algún núcleo de población del término municipal contiguo.

    • Carme dice:

      Hola Pedro. Efectivamente, lo has descrito muy bien. Y este es el motivo por el cual en la base de dados de códigos postales salen muchos más «municipios«: porque en la base de datos del INE están los municipios legalmente constiuídos (necesarios para relacionarnos con la administración pública) mientras que correos trabaja en base a núcleos de población.
      A la hora de crear nuestra base de datos tendremos que tener muy clara la finalidad de la misma y elegir el sistema que nos permita sacar el máximo rendimiento de nuestro trabajo.
      Muchas gracias por el comentario.

  7. gilman dice:

    Para los datos de españa, puedes probar con los datos del INE, en principio son gratuitos:
    http://www.ine.es/prodyser/callejero/callejero.htm

    • Jordi dice:

      Esta URL no tiene contenido, supongo que desde el ministerio la han cambiado de ubicación sin redireccionar, como de costubre.
      Saludos

  8. diego dice:

    que estupides no disque era unna tabla ilusos

  9. endika dice:

    Hola Carme,
      En primer lugar muchas gracias por los enlaces a los Códigos Postales de España : Base de datos, como tu sabes nos vienen de perlas a todos.
      Pero más arriba comentas:
    «Sin embargo, en mi caso … me daba un error de “checksum” en el formato MySQL, en todos los intentos de importación.»
      En realidad no es necesario realizar ninguna importación, solo copiar los archivos formato MySQL descomprimidos en el directorio oportuno, que en mi caso con Ubuntu 9.04 es /var/lib/mysql/nombre_BD. Si nos fijamos en el contenido del directorio que debe ser el mismo que el nombre de la base de datos que nos aparece en el phpmyadmin, vemos que hay están todas las tablas de nuestra BD. Si una vez copiados los archivos no aparecen las tablas directamente basta con reiniciar el mysql:
    #sudo /etc/init.d/mysql restart
      Si además queremos modificar las estructuras de las tablas necesitamos darle permisos de escritura a los archivos:
    #sudo chmod 660 /var/lib/mysql/nombre_BD/t*
      Y también cambiaremos el usuario y el grupo propietario de los mismos:
    #sudo chown mysql:mysql /var/lib/mysql/nombre_BD/t*
      De esta forma obtenemos el resultado deseado por todos que es disponer, ¡por fin!, de los códigos postales en nuestra BD.
      Gracias nuevamente y saludos.
    Endika.

  10. patan dice:

    Genial, Currada, Guay y Util! Tambien gracias a Albin, aunque debajo ponga que no le des las gracias.

  11. Hasta las narices dice:

    Me parece que aun le falta bastante a lo que hasa hecho para serte sincera. Me parece desorganizado, enmarañado e intendible

  12. Hola Carme:

    Que mal me ha sabido leer el comentario de «Hasta las narices», como la mayoría de los que te han visitado y te visitarán, simplemente iba a tomar lo que has puesto a disposición de todos e irme sin dar las buenas tardes.

    Al bajar la base de datos de códigos postales me di cuenta de que lo que tú llamabas municipios en realidad no lo son, como ya han indicado son núcleos de población o localidades (es como las llamo yo), así que me he creado una tabla de localidades que habrá que enlazar con las de municipios (tomada del INE). Precisamente al darme cuenta del hecho venía a comentártelo y previamente he leído los comentarios, como era lógico ya alguien te (nos) ha puesto sobreaviso.

    Bueno que no quería que el último comentario de esta fantástica entrada de tu blog fuese algo tan absurdo. Enhorabuena por el curro y ¡Gracias!.

    Carlos

  13. Raul dice:

    En el Instituto Nacional de Estadística tienes mucha información:
    http://www.ine.es/prodyser/callejero/callejero.htm

    …también puedes buscar en el Ministerio de Economía y Hacienda por el Catastro…

    Salu2

  14. jorge dice:

    cual es el codigo postal de EEUU??????????????ayuda ur…………

  15. cristofer contreras garsia dice:

    soy pemdegadas

  16. David dice:

    Buenos días Carme,

    Genial post sobre poblaciones y provincias.

    Apunte, la base de datos de Albin se encuentra en este enlace, rectificarlo:

    http://codigos-postales.albin.es/

    Gracias.

  17. Agradecido dice:

    Un currazo Carme!, para todos los que hacemos nuestro pinitos caseros esto es la bomba. Llevo ya una temporada leyendo, buscando, bajando cosas, sin obtener ningún resultado, y sinceramente es lo mejor que me ha pasado dar con tu post!

    Muy agradecido! ; )

  18. Javier dice:

    Información muy util
    Se agradece

  19. malax dice:

    Hola Carme, hace 10 mnutos nos ha surgido la necesidad de conseguir los listados de provincias y poblaciones, te hemos encontrado y ya lo tenemos.
    De verdad: !muchísimas gracias!

  20. Ramón dice:

    Muchas Gracias,
    lo has currado bien, lo has expuesto mejor y nos has hecho la vida más fácil a más de uno.
    A pesar de que Albin dice que «no hace falta dar las gracias» … es de bien nacido …. 😉

    ¡GRACIAS!

  21. Carme dice:

    Muchas gracias a todos los que dejáis aquí vuestro feedback.
    De veras se agradece.

  22. Jordi dice:

    Gracies Carme per la feina

Leave a Reply to gilman