Nueva pregunta

Pregunta:

Fecha: 04-08-2016 23:50:25 (En Español)

Base de Datos MySQL de Código Postal Argentino (CPA) por Provincia y Localidad[Resuelta]

En esta oportunidad les quería compartir una base de datos que extrañamente me ha costado mucho conseguir, es la base de datos de códigos postales argentinos por provincia y localidad, información que debería estar al alcance de cualquier desarrollador que la requiera, pero no es así.

Sin más preambulo, aquí una imagen del diagrama de entidad relación (DER) a fin de que puedan hacerse una rápida idea de su estructura / contenido:



Aquí también les dejo los script para crear las tablas "provincia" y "localidad":
CREATE TABLE `provincia` (
  `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `nombre` VARCHAR(50) NOT NULL ,
  `codigo31662` CHAR(4) NOT NULL ,
  PRIMARY KEY (`id`) ,
  UNIQUE INDEX `codigo31662_UNIQUE` (`codigo31662` ASC))
ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;

CREATE TABLE `localidad` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
  `provincia_id` TINYINT UNSIGNED NOT NULL ,
  `nombre` VARCHAR(50) NOT NULL ,
  `codigopostal` SMALLINT(6) NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_localidad_provincia_idx` (`provincia_id` ASC) ,
  CONSTRAINT `fk_localidad_provincia`
    FOREIGN KEY (`provincia_id` )
    REFERENCES `provincia` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;


Y un ZIP conteniendo el script SQL con los INSERT/DATOS para dichas tablas:
provincias_localidades_codigo_postal_argentina.zip

Algunas aclaraciones:
* la base de datos cuenta con las 23 provincias (estados federados) y CABA, y con un total de 22963 localidades.
* los códigos postales son de 4 dígitos, ya que al no estar vinculada la calle/numeración no es posible especificar el nuevo código de 8 dígitos.
* la columna "codigo31662" de la tabla "provincia" se corresponde con los códigos ISO 3166-2
* la tabla de localidades si bien esta muy completa no se puede considerar como "final", puede que se requieran correcciones / agregado de datos, pero debo decir que es un excelente punto de partida.


Seguramente este aporte no será tan interesante para personas de otros países, si alguien tiene una base de datos con las provincias/ciudades/localidades/estados/etc. de otros países y quiere compartirla bienvenida sea, por lo pronto espero que este aporte le simplifique la vida a más de un desarrollador argentino.

Saludos a todos y buen código!
Etiquetas: Aporte - Base de Datos - MySQL - MySQL Desarrollo Votos: 10 - Respuestas: 15 - Vistas: 55 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 05-08-2016 00:44:38 Hola Fernando:

    A nivel mundial tenemos http://mapanet.eu/
    Contiene Base de datos de lugares y sus códigos postales; divisiones administrativas, ciudades, suburbios, áreas, calles y coordenadas geográficas.
    Regiones del mundo: África, América, Antárctica, Asia, Europa, Medio Oriente, Oceanía


    La descarga es de pago, que varía según lo solicitado (países, continentes, ...).

    La fecha de actualización vienen dada en el documento (y en la página antes de la descarga)
    Ejemplo:
    Argentina: 40 euros, actualizado el 24 de Junio de 2016 (http://mapanet.eu/Postal_Codes/?C=AR).
    España: 72 euros, actualizado el 4 de Agosto de 2016 (http://www.mapanet.eu/Postal_Codes/?C=ES).
    Sudamérica: Actualizado el 24 de Junio, (http://mapanet.eu/Buy/Buy.asp?C=SA&P=P&DL=5) varía de precio desde 380 euros (base de datos) hasta 2.280 euros con actualizaciones mensuales y licencia de distribución.

    Saludos.
      Votos: 4 - Link respuesta
     
  • Fecha: 05-08-2016 01:59:01 Por la línea de lo gratuito, Google Maps, en los códigos de búsqueda de direcciones, dispone en la opción de búsqueda, de mostrar el código postal de una dirección dada.
    En muchos casos puede ser suficiente.

    Pueden verlo en http://www.codigospostal.org/codigos-internacionales.html

    Si de forma específica alguien quiere mostrarlo en su página, es posible desarrollarlo.

    Claro que "no tenemos" la base de datos de los códigos postales sino que llamamos a la base de datos de Google Maps para que nos muestre sobre una dirección concreta.
      Votos: 4 - Link respuesta
     
  • Fecha: 05-08-2016 08:25:31 Muchas gracias Txema, muy buena info!

    Estaba viendo la base de pago de "mapanet", muy intersante la web, me fije para Argentina y veo que tiene un total de 21650 localidades, una cantidad menos a la de la base de datos que les comparto que tiene un total de 22963 localidades (como les decía, es un muy buen punto de partida).

    Como bien anticipas, la idea es poder tener acceso a esta información de forma offline, y si bien Google o alguna otra API gratuita puede darnos esta información, requiere que estemos conectados a Internet para hacer la consulta.

    ¿Donde aplicaríamos esta base de datos y por qué?

    Esta base de datos que comparto es muy necesaria para poder tener un sistema/base de datos "local" con sus datos normalizados, es decir que si alguno de nuestros sistemas requiere el ingreso de provincia/localidad/código postal (típico en la carga de cualquier dirección) teniendo esta base de datos podemos sugerir/restringir el ingreso a los preestablecidos por dicha base de datos.

    Por ejemplo, digamos que mi sistema de agenda local requiere el ingreso de una dirección de Argentina, si no tenemos una base de datos como esta en nuestra tabla deberemos ingresar a mano los datos de provincia, localidad y código postal, generando que dicha tabla no este normalizada, ya que no cumpliría con la forma normal #1, o sea, la 1NF, porque tendríamos "grupos repetitivos" perdiendo la atomicidad de los nombres, lo que puede llevar a tener cargada para (por ejemplo) la provincia "Buenos Aires" las variantes "Buenos Aires", "Bs. As.", "Bs As", "BA" y hasta errores tipográficos ("typo").

    También he visto en muchos sistemas de gestión y facturación que los datos de código postal no suelen estar ingresados, porque quien ingresa la dirección desconoce el número y lo deja "pendiente completar", produciendo así que luego se generen facturas/comprogantes con direcciones incompletas, y hasta erroneas, produciendo un dolor de cabeza a los contadores (seguramente más de uno se sentirá identificado con esto).

    Saludos a todos y buen código!

    PD: Txema, claro esta que toda esta explicación no la doy por vos, se que sos un experto en Geolocalización y otras yerbas, la idea es que sirva de ayuda para quien esta comenzando :)
      Votos: 3 - Link respuesta
     
  • Fecha: 05-08-2016 10:18:02 Algunos apuntes (y creo que tú, Fernando, lo entenderás perfectamente).

    En definitiva pretendemos ayudar y colaborar.

    Cuando trato datos de mi país, lo soy tan crítico como lo has hecho tú. Fuentes y comprobación.
    Quiero creer que una web de pago y que indica fecha de actualización, tiene información puntual. De otro modo sería un chantaje.
    Donde me pierdo es en la estructura de sus datos (y más cuando lo presentan a nivel mundial). Lo que en España llamamos Provincia, en Argentina (si mal no me equivoco) es Departamento. y desde aquí las estructuras administrativas varían. Google Places lo define como nivel administrativo 1, 2, 3 ... Lo cual no implica a que el código postal pueda agrupar varias zonas o separar una sola zona en varios códigos postales
    Cabe, además, pensar en el caso argentino si se han tenido en cuenta o no islas u otros territorios como es en vuestro caso, la antártida o en España las Islas Canarias, ... (¿¿??).

    Lo importante de mis enlaces es que, además de dar el código postal, me da las coordenadas. (Eso sí me importa para geolocalización, y creo que al usuario que haga uso de ello también).

    Por otra parte. orientados a su uso y al menos en España, la incidencia sobre correos es menor: importa a estamentos públicos y empresas de transporte/mensajería para ordenar sus distribuciones.
    La banca ha creado a nivel europeo otros parámetros.

    De cualquier modo es una muy buena base de trabajo para muchas empresas.
    Y, como siempre, si puedo ayudar, ...

    Saludos.
      Votos: 3 - Link respuesta
     
  • Fecha: 07-08-2016 03:57:22 Buenos días, Fernando, yo estoy utilizando dos tablas casi con la misma estructura. La diferencia está en la tabla localidad que posee otro campo llamado subpos que indica el código subpostal de la localidad ya que existen localidades que utilizan el mismo código postal pero se identifican con un código subpostal. Si te sirve o para que lo veas, te lo envío así queda un listado completo de localidades por provincia. En mi caso, solo tengo 19161 localidades, un poco menos que las tuyas

    Saludos

    DIEGO
      Votos: 2 - Link respuesta
     
  • Fecha: 07-08-2016 08:08:30 Amplío el tema (códigos postales en Google Maps) en .../obtener-el-codigo-postal-de-direccion-desde-google-maps   Votos: 2 - Link respuesta
     
  • Fecha: 08-08-2016 19:28:18 Hola Diego, gracias por tu comentario y ofrecer los datos sub postales, la verdad que no estaba en conocimiento de este subcódigo, ya que el Código Postal Argentino (CPA) segun el Correo Argentino esta compusto por:



    Al margen de esto, si podes enviarme esa info veré la forma de unificar estos código con los ya existentes, mi usuario de skype es "mosquera_f", agregame y coordinamos por ahí el tema del envío.

    Txema, Chapeau a tu aporte!.

    Muchas gracias a todos por colaborar para hacer que la información de dominio público este al alcance del publico y no blindada para solo algunas empresas.

    Saludos,
      Votos: 1 - Link respuesta
     
  • Fecha: 09-08-2016 09:16:22 Hola Fernando.

    Con tu último apunte me queda una duda sobre el código de Google Maps ya publicado sobre el Código postal.
    En mi caso (España) el resultado es el mismo, pero la estructura del Código Postal argentino puede arrojar resultados diferentes.

    En .../obtener-el-codigo-postal-de-direccion-desde-google-maps utilizaba yo la sentencia en Javascript, línea 65, (short_name) y Google Maps contempla también (siempre referidos al Código Postal) long_name

    ¿Hay diferencia en la utilización de una sentencia u otra en vuestro país?
    Para probarlo solamente tienes que cambiar el término.

    Me cuentas.
      Votos: 1 - Link respuesta
     
  • Fecha: 09-08-2016 14:51:09 Hola Txema, estuve analizando el tema, aquí mis conclusiones.

    Saludos!
      Votos: 1 - Link respuesta
     
  • Fecha: 31-12-2016 10:27:26 Hola Fernando, excelente lo compartido, justo estaba necesitando esto para un proyecto, es de libre uso?

    He estado mirando, no sé de donde lo has extraído, pero he notado que todas las localidades que contienen una Ñ en el nombre, están cortadas, me di cuenta al ver ciudades con nombres cortos, algunas las he arreglado a mano, filtrando con el strlen() pero me he dado cuenta que existen más opciones como "EL PE" o "EL BA" entonces ahi lleva más trabajo.

    Mi pregunta, tenés forma de extraer nuevamente ese listado y ver de corregir ese error? Si te puedo ayudar conta conmigo.

    Sino se puede, sigo fixeando las ciudades, y cuando lo termine lo comparto con ustedes.

    Muchas gracias!
      Votos: 2 - Link respuesta
     
  • Fecha: 21-03-2018 11:57:06 Fernando, puede ser que capital federal solo exista un código postal?
    Gracias
      Votos: 0 - Link respuesta
     
  • Fecha: 02-07-2018 05:51:33 A tener en cuenta, el listado de localidades que se presenta en el sitio http://mapanet.eu/ del partido de La Plata de la Provincia de Buenos Aires de Argentina. No están completas y hay varias que no son localidades sino más bien barrios.
    En Argentina, los partidos con mucha población presentan localidades y estas localidades presentan barrios, con lo cual quedaría País / Provincia / Partido / Localidad / Barrio... En el interior del país o en zonas con poca población a veces pueden no haber Localidades.

    Saludos !!
      Votos: 0 - Link respuesta
     
  • Fecha: 21-10-2018 03:27:58 Gracias por compartir la Base de datos   Votos: 0 - Link respuesta
     
  • Fecha: 12-04-2019 17:08:27 Hola, @Charly Novoa o o si alguien tiene y puede compartirme (csv/script db) las localidades de Arg con los siguientes datos: localidad_nombre | cod_postal | provincia_nombre | departamento_nombre | municipio_nombre | latitud | longitud. entiendo que mapanet tiene una base pero paga. Les dejo mi mail: madsebamax@gmail.com Gracias de antemano!   Votos: 0 - Link respuesta
     
  • Fecha: 26-05-2023 09:11:35 Muchisimas gracias, estuvimos buscando con mi compañero esto hace rato, excelente aporte a la comunidad   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com