1. Introducción

Este trabajo genera una capa cartográfica vectorial de códigos postales a partir de información libre –pública y gratuita– e implementa el procedimiento en software libre. Se inspira, por tanto, en la filosofía open data, y de reutilización de dichos datos. Lamentablemente la información sobre códigos postales en España es data, pero desde luego no es open.

Como daño colateral se ofrece un breve resumen de la codificación postal en España, así como de la información pública disponible al respecto, poniéndose de manifiesto algunas incongruencias entre las dos fuentes públicas de donde es posible obtener dicha información, así como algunas inconsistencias encontradas en la información utilizada.

La idea original procede de Sánchez (2020) en una entrada del blog NOSOLOSIG, de forma que mi contribución consiste básicamente en un refinamiento de esta idea inicial que ajusta los códigos postales a los contornos municipales de forma exacta e implementa el procedimiento de forma (casi) automática para el conjunto del Estado Español.

La información generada –la capa vectorial de códigos postales– está disponible si se solicita al .

La estructura del trabajo es la siguiente. El apartado 2 resume la estructura de códigos postales en España e indica las fuentes públicas de información disponibles para su obtención. También se compara la disponibilidad de información sobre códigos postales con la referente a otras entidades geográficas básicas, como los municipios o los distritos y secciones censales. El apartado 3 indica la información utilizada en el ejercicio y efectúa un análisis de calidad de la misma. El apartado 4 explica el algoritmo GIS utilizado en la generación de la capa de códigos postales. El apartado 5 ofrece un ejemplo de los resultados en el ámbito urbano. Unas breves reflexiones finales concluyen.

2. Códigos Postales de España

Los códigos postales son básicamente una delimitación de áreas de reparto del correo ordinario con el objeto de facilitar la logística en la distribución del mismo. La entidad competente en la delimitación de los códigos postales es Correos,1 una empresa pública que forma parte de la Sociedad Estatal de Participaciones Industriales.

Por definición, los códigos postales están ligados a las direcciones postales y allí donde no hay direcciones no son necesarios –en realidad no existen–, puesto que un código postal va ligado a una dirección y la ausencia de esta implica la inexistencia del código postal. Es, por tanto, un elemento ligado al callejero, en el que son competentes los Ayuntamientos, y cuya información debe ser remitida al Instituto Nacional de Estadística (INE) de forma periódica y normalizada.2 Podemos, sin embargo, pensar en los códigos postales como una subdivisión del territorio, y de hecho así lo hace Correos, como tendremos ocasión de comprobar.

A pesar de ello es importante tener presente que, desde esta perspectiva de división territorial, los códigos postales no son una subdivisión de los municipios. Hay municipios con código postal único, otros con diversos códigos postales y, por último, existen municipios que comparten código postal.

Los códigos postales, en el formato actual, fueron implantados de forma progresiva a partir de principios de los años 80 del siglo pasado coincidiendo con la puesta en marcha de procedimientos automatizados para clasificar la correspondencia, aunque con anterioridad existían, en las grandes ciudades, los denominados distritos postales, que ayudaban en las tareas de organización del reparto de la correspondencia. La codificación postal es, pues, algo posterior a la codificación municipal que data de la ordenación alfabética de los municipios aparecida en el Censo de 1970 (Goerlich, Ruiz, Chorén y Albert 2015).

Los códigos postales, al igual que los municipales, constan de 5 dígitos. Los dos primeros hacen referencia a la provincia, y son coincidentes con la codificación oficial de las mismas. Esta no es, sin embargo, una regla inmutable y tiene numerosas excepciones. Por ejemplo, el municipio de Petilla de Aragón pertenece a la provincia de Navarra, con código 31, pero su código postal es 50686, ya que se encuentra geográficamente3 en la provincia de Zaragoza, cuyo código es 50. El municipio de Montenegro de Cameros perteneciente a la provincia de Soria, con código 42, tiene un código postal que comienza por 26, que es el código de la provincia de La Rioja, con la que linda. Sin embargo, es vecino –tiene un linde común– de Vinuesa de la provincia de Soria, cuyo código postal comienza por 42. Por tanto, en el caso de municipios que pertenecen administrativamente a una provincia, pero se sitúan geográficamente en otra, o en las zonas limítrofes entre provincias, podemos encontrar excepciones a la regla general de codificación.

Tampoco siempre sucede así, por ejemplo, los municipios del Condado de Treviño, Condado de Treviño y La Puebla de Arganzón, pertenecientes a la provincia de Burgos, con código 09, se encuentran geográficamente en la provincia de Álava, cuyo código es 01. Sin embargo, los códigos postales de dichos municipios comienzan por el código 09, es decir, el de la provincia a la que pertenecen. Lo mismo pasa con los municipios del Rincón de Ademuz, cuyo código postal empieza por 46, que es el código de la provincia a la que pertenecen, Valencia, aunque se encuentran entre las provincias de Cuenca, código 16, y Teruel, código 44.

El mensaje es, pues, que la regla de que los dos primeros dígitos del código postal corresponden a la provincia del municipio al que pertenece no es una regla fija, pero tampoco parece que exista un criterio definido.

Los 3 dígitos restantes no guardan ninguna relación con el código del municipio al que pertenece el código postal. El tercer dígito indica el encaminamiento, el cuarto la ruta y el quinto el reparto. Se trata pues, como no podía ser de otra forma, de una codificación ajustada a las necesidades logísticas del reparto de correspondencia. Por razones históricas de implementación del sistema, en las capitales de provincia el tercer dígito es un 0. Sin embargo, esta regla también tiene excepciones, en Valencia, cuyo código municipal es 46250, encontramos códigos postales en los que el tercer dígito es un 1, en concreto, disponemos de los códigos postales 46111, 46112, 46131 y 46135.

Además de los códigos postales vinculados a direcciones existen códigos reservados para usos especiales. Los códigos xx070 se utilizan para correspondencia postal y telegráfica, los códigos xx071 para organismos oficiales y los xx080 para apartados postales. Estos códigos postales no tienen una identificación geográfica y no son objeto de atención en este trabajo, ya que no pueden ser identificados sobre un mapa.

Conseguir un listado de municipios de España es fácil. El INE ofrece un listado de los mismos actualizado a fecha 1 de enero de cada año.

Conseguir un listado de códigos postales es algo más difícil, sobre todo si queremos que ese listado vaya asociado al municipio al que pertenece el código postal, una información que podríamos considerar de referencia –utilizando el argot de la información geográfica– y que por tanto debería ser gratuita y de dominio público. Ciertamente es posible obtener dicha información del Callejero del Censo Electoral del INE, pero también es cierto que una tabla de correspondencias entre códigos postales y municipios no existe en Correos, a no ser que estemos dispuestos a pagarle unos 1000€,4 alrededor del doble si queremos una tabla plus, es decir, con mayor detalle de correspondencia geográfica e información socioeconómica asociada.

Sin embargo, es cierto que procesar los ficheros del Callejero del INE no es inmediato. Debemos cargar y procesar, a partir de texto plano, el fichero de tramos de vía que contiene alrededor de 1 millón y medio de registros5 y que puede darnos el cruce entre todas las unidades geográficas elementales existentes en el sistema estadístico español, municipios, unidades poblacionales del Nomenclátor, secciones censales y códigos postales. ¡Requiere algo de trabajo, pero es posible! 👍 Si no queremos hacerlo nosotros –aunque en este caso si lo hicimos– Flores (2021) ofrece tablas de conversión actualizadas entre códigos postales y unidades poblacionales del Nomenclátor del INE desde 2012 con la frecuencia semestral de actualización del Callejero del INE.

De hecho, la información disponible en la web por parte de Correos sobre la base de datos de códigos postales plus permite intuir que su procedencia es la explotación del Callejero del Censo Electoral del INE, aunque no lo menciona expresamente.

Si lo que queremos es un mapa de códigos postales, entonces nos encaminamos hacia una misión imposible, o al menos altamente costosa. En principio parece raro, pero es así, 💩.

Si queremos una capa vectorial de secciones censales, de nuevo el INE nos la ofrece –en formato shape6– de forma gratuita, también fechada a 1 de enero de cada año desde 2001. Dicha capa nos permite enlazar con la información estadística sobre secciones censales derivada de la explotación estadística del Padrón.7 Naturalmente es posible agregar –disolver en el argot GIS– las secciones censales en municipios –o cualquier otra entidad geográfica de orden superior–, aunque los lindes no coincidirán de forma exacta con los que proporciona el Instituto Geográfico Nacional (IGN).

Si queremos una capa vectorial de municipios –provincias o Comunidades Autónomas– el Centro Nacional de Información Geográfica (CNIG), dependiente del IGN, ofrece dicha información para descarga en formato shape, de forma gratuita dentro de la denominada información geográfica de referencia.8 La información es de actualización continua, como suele ser habitual en la información geográfica, carece pues de una fecha de referencia clara, a diferencia de la información ofrecida por el INE. ¡Con lo fácil que sería hacer una foto y mantener una capa ajustada a los límites existentes a fecha de referencia 1 de enero de cada año! Afortunadamente, Goerlich y Pérez (2021) mantienen un histórico de capas de contornos municipales desde el Censo de 2001 que resuelve este problema de forma no oficial.

Si lo que queremos es una capa vectorial de códigos postales nos encontraremos con la sorpresa de que existir, existe, pero deberemos pagar a Correos unos 6000€ para su adquisición. No se trata de una licencia de por vida, sino de una descarga de los datos por una sola vez. Es más, si queremos la información con actualizaciones trimestrales durante un año el precio sube hasta los 7000€ aproximadamente. De forma gratuita, todo lo que la empresa pública Correos nos ofrece es un buscador on-line de códigos postales y un servicio de visualización WMSWebMapService– de los mismos a través del portal de Cartociudad. ¡Podemos verlos, pero no tocarlos! 😄

Lo curioso es que esto no fue siempre así. Naturalmente la misión de Correos no es difundir información geográfica o estadística, ¡aunque al parecer si venderla!, pero para ello nació Cartociudad. Circa 2016 la información vectorial de códigos postales procedente de Correos, y disponible en Cartociudad, podía ser descargada a través del CNIG, e incluía la capa de códigos postales con geometría poligonal, con el nombre CODIGO_POSTAL.9 Dicha información, y alguna otra, desapareció de Cartociudad para descarga a principios de 2017, de forma que actualmente solo pueden descargarse las capas de direcciones, PORTAL_PK, y de manzanas, MANZANA, además de una tabla de viales del municipio, MUNICIPIO_VIAL. El motivo fue un cambio en la política de datos de Correos que decidió no hacer pública esta información de forma gratuita para poder lucrarse con ella. Al parecer es una información muy golosa para las empresas de geomarketing. El resumen es que hemos dado un paso atrás a pesar de las iniciativas de datos abiertos y del portal de transparencia impulsadas por el Gobierno de España.

Afortunadamente, Flores (2017) descargó, procesó y puso a disposición de otros usuarios la información libre disponible en Cartociudad sobre códigos postales circa 2016, de forma que se dispone de una capa vectorial de códigos postales ajustada a dicha fecha.

La capa de direcciones, PORTAL_PK, contiene (en teoría) todas las direcciones –portales– de los municipios de España, así como los puntos kilométricos procedentes de la Red de Transporte de la Información Geográfica de Referencia como objetos geográficos puntuales debidamente georeferenciados. Esta capa es la que jugará un papel determinante en la elaboración del mapa vectorial de códigos postales, tal y como se describe en el apartado 4.

Tres comentarios son pertinentes antes de finalizar esta sección.

  1. Curiosamente los códigos postales de la provincia de Navarra si están disponibles en el portal de datos abiertos del Gobierno de Navarra, donde no se menciona a Correos, figura como fecha original el 30/12/2010 –aunque en esa época no existía el portal de transparencia– y no se indica la frecuencia de actualización. También el Instituto de Estadística de la Comunidad de Madrid ofrece esta información es su web, con fecha de referencia 1 de enero de cada año desde 2009 hasta 2016. Resulta inexplicable que dicha información no se ofrezca, a nivel nacional, en el portal de datos abiertos del Gobierno de España o en la web de Correos o cualquier otra institución pública dedicada a la difusión estadística.

  2. La información sobre códigos postales se ofrece, para toda Europa, en el GISCO de Eurostat –el GIS de la Comisión Europea–, dentro de la sección de datos de referencia, aunque con geometría puntual y no poligonal. Parece pues que esta es una información relevante que debe ser pública desde la óptica europea, pero que es difícil de obtener incluso para Eurostat. La web de descarga nos advierte que “…note that due to the very diverse and complex situation in Europe, it is possible that not all existing postal codes are included or correctly located.” De hecho un pequeño análisis de la información para España indica que solo tiene información acerca de 6253 municipios, aunque dispone de 11423 códigos postales diferentes –más de los que obtendremos nosotros– y que 276 coordenadas están duplicadas, todas ellas con código postal diferente, lo que claramente es un error si la base de datos está ajustada a una fecha concreta. Así pues, no parece que Eurostat le pagara a Correos 6000€ por conseguir la información de los códigos postales. ¡Nosotros tampoco lo haremos! 😄

  3. El interés por la información relacionada con los códigos postales, su potencial uso comercial y el abusivo precio al que vende Correos la información ha generado algunas iniciativas individuales de recopilación de esta información, fundamentalmente en formato de tablas, así como su puesta a disposición del público en general mediante recursos libres en la web. El problema principal con estas iniciativas es que ofrecen una (casi) nula información sobre sus fuentes, como han sido obtenidos los datos originales, que tratamiento se les ha dado, la fecha de referencia de sus productos y quien hay detrás de ellos. Además de los trabajos mencionados de Flores (2017, 2021), debidamente documentados y replicables, hemos encontrado algunas direcciones web donde descargar información sobre códigos postales.

    • Una de ellas permite la consulta, pero no la descarga de datos, algo que ya hace Correos.

    • Otra permite, además de la consulta, la descarga de una relación entre códigos postales y municipios, incluyendo ademas coordenadas geográficas puntuales –longitud y latitud– de los códigos postales, aunque no se indica el origen de dicha información, ni a que lugar geométrico corresponde dicha coordenada.

    • Finalmente, otra permite la consulta y la descarga a nivel de relación entre el código postal y el tramo de vía, por lo que da la impresión de que el origen de la información es el Callejero del INE, pero la web parece indicar que se trata de un proyecto colaborativo.10 Esta última iniciativa incluye un visor cartográfico de los polígonos de los códigos postales por provincia, pero de nuevo se trata de una visualización, que no permite la descarga. No hay ninguna información sobre la precedencia de dicha información.11

3. Análisis de la información utilizada

Este apartado describe con detalle la información de partida para elaborar la capa vectorial de códigos postales, así como las dificultades encontradas en el tratamiento de los datos primarios.

La información para obtener el mapa de códigos postales procede, casi exclusivamente, de dos capas vectoriales, una poligonal y otra puntual: i) el mapa de contornos municipales del IGN, y ii) la capa de direcciones de Cartociudad, PORTAL_PK.

3.1. Contornos municipales

La capa de contornos municipales procede del centro de descargas del CNIG, dependiente del IGN, que es el competente en la delimitación de los lindes administrativos en nuestro país. Se distribuye, para descarga, en formato shape y coordenadas geográficas ETRS89 para la península y baleares y WGS84 para Canarias, en los ficheros diferentes. Después de transformar el fichero para Canarias a ETRS8912 se fusionaron ambos ficheros en uno solo que se proyectó a LAEA, de forma que la proyección de trabajo será ETRS89-LAEA13. La capa está ajustada a los municipios a 1 de enero de 2019 –desde esa fecha no se han producido alteraciones municipales por lo que a 1 de enero de 2022 disponemos de los mismos municipios–, y tiene un registro por municipio –no por polígono–. La codificación en la descarga se ajusta a la normativa INSPIRE para unidades administrativas, por lo que de esta se extrajo la codificación municipal de 5 dígitos, añadiéndose los campos correspondientes a los códigos y nombres de las provincias y Comunidades Autónomas. La capa forma parte de la librería de Goerlich y Pérez (2021).

En total disponemos de 8212 unidades administrativas, distribuidas entre 8131 municipios y 81 condominios o territorios mancomunados, es decir, territorios que no pertenecen a ningún término municipal en exclusiva y que disponen, en la cartografía, de polígonos independientes de los municipios. Se trata de una irregularidad en el sistema de división territorial del Estado (Goerlich, Ruiz, Chorén y Albert 2015, apéndice), pero con la que debemos contar a efectos de asignación de código postal. Una inspección visual sobre el WMS de direcciones de Cartociudad indica que estos territorios si tienen código postal asignado.

Los condominios tampoco tienen codificación municipal y no aparecen en el sistema estadístico del INE, aunque –hasta donde conocemos– la primera referencia de la existencia de estos territorios procede de una publicación del INE con ocasión del Censo de 1991 (INE 1994). El IGN los codifica actualmente con 5 dígitos, los 2 primeros son 53, y los 3 restantes un número correlativo. Sin embargo, en la codificación a nivel de provincia si les asigna la provincia a la que pertenecen.14

En la mayoría de los condominios no hay población residente, y por tanto son irrelevantes desde el este punto de vista del código postal al que pertenecen, pero esto no siempre es así, por ejemplo, en uno de esos territorios en la provincia de Madrid, conocido como Los Baldíos (53037), existen edificaciones, direcciones, carreteras y población residente –de hecho el Instituto de Estadística de la Comunidad de Madrid asigna dicho territorio al municipio de Cercedilla (28038), lo que está en contradicción con la información publicada por el IGN, pero quizá se ajuste más a la realidad–.

Como la información disponible para los condominios en la capa de direcciones de Cartociudad, PORTAL_PK, es escasa o nula,15 y en algunos casos en los que si existe es incorrecta,16 a estos territorios se les asignó el código postal por inspección visual al superponer los condominios sobre el WMS de direcciones de Cartociudad. Ello no aumentó el número de códigos postales existentes en Cartociudad, lo que indica que el código postal de los condominios existe en algún otro municipio.

3.2 Cartociudad

Los contornos municipales juegan el papel de ajuste de lindes de los códigos postales a los municipios, ya que las direcciones son una entidad municipal, pero la pieza fundamental en la generación de los polígonos de los códigos postales es la capa de direcciones de Cartociudad, PORTAL_PK, disponible en el centro de descargas del CNIG. La unidad de distribución de dicha capa es la provincia, por lo que se descargaron 52 ficheros de los que se extrajo dicha capa que proporciona geometría puntual para algo más de 12 millones de direcciones y puntos kilométricos. El formato de descarga es shape en coordenadas geográficas ETRS89.17 En el momento de la descarga –febrero 2022– la fecha de referencia de la información que constaba en el centro de descargas era 11/2021.

Los atributos de dicha capa incluyen el código postal e información sobre el tramo de vía o punto kilométrico al que hace referencia la coordenada según las especificaciones de Cartociudad (2021). De acuerdo con esta información existen en España 10825 códigos postales diferentes, en la fecha de referencia de la información –que no es conocida con exactitud–.

Llegados a este punto resultó conveniente comparar los códigos postales existentes en la base de datos de Cartociudad con los que se derivan del Callejero del Censo electoral del INE –ya que a efectos de conseguir tablas de correspondencias entre códigos postales y unidades administrativas esta información es mucho más manejable–. Utilizando el Callejero del INE a fecha 1 de enero de 2021, con el nuevo sistema de gestión que se basa en la agregación de los tramos de vía a partir de las aproximaciones postales, obtenemos que, según el INE, existen en España a esa fecha 11051 códigos postales. Podríamos pensar que las discrepancias se deben a las diferentes fechas de referencia de la información, aunque no parece que los códigos postales sufran tantas variaciones a corto plazo –entre enero de 2021 y julio de 2021 en el Callejero del INE desaparecen 8 códigos postales y aparecen 7 nuevos, con lo que el cambio neto es de 1 solo código postal. Por si esto no es suficientemente convincente, esta suposición se desvanece cuando comprobamos que en la base de datos de direcciones de Cartociudad existen 187 códigos postales que no aparecen en el INE y que, a su vez, en el Callejero del INE existen 413 códigos postales que no aparecen en la base de datos de direcciones de Cartociudad. El resumen es que son diferencias importantes. Aunque para las direcciones existen fuentes de información oficiales alternativas al Callejero del INE, en concreto la Dirección General de Catastro y los gobiernos de las Comunidades Autónomas con régimen foral –País Vasco y Navarra–, y que son las fuentes de las que parece se nutre mayoritariamente Cartociudad, el origen último sobre el callejero son los ayuntamientos y el origen único de los códigos postales es Correos. Por ello, estas discrepancias son, desde el punto de vista de un usuario de a pie, inexplicables, 👎.

Volviendo a las direcciones de Cartociudad, no existe entre los atributos de esta capa un identificador del código municipal al que pertenece la coordenada, pero hay dos campos de los que es posible extraer esta información, el identificador de portal –ID_PORPK– y el identificador de tramo –ID_TRAMO–, cuyos 5 primeros dígitos coinciden con el código municipal. Hay 11592 direcciones en los que el municipio identificado a través del portal no coincide con el municipio identificado a través del tramo. Como las observaciones son abundantes –de 12 millones de direcciones deberemos generar polígonos para 10825 códigos postales– el criterio de identificación fue utilizar las direcciones en las que el código de municipal era el mismo a partir de ambos identificadores18.

Se observó que los condominios están codificados con el código asignado por el IGN, es decir, comienzan por 53, por lo que su selección –y eliminación– fue sencilla. Como hemos indicado en el apartado anterior el código postal de los condominios se asignó mediante inspección visual sobre el WMS de Cartociudad. Los municipios disponibles en la base de datos de direcciones resultaron ser 8124, y se ajustaban a los existentes el 1 de enero de 2018 –por lo que no parece ser cierto que la frecuencia de actualización sea trimestral–, de forma que no existe en la información descargada una identificación alfanumérica de los 7 municipios creados con posterioridad a dicha fecha. Como la intención era ajustar la información generada a los municipios actuales (2019), para estos 7 municipios se procedió de forma individualizada. Al igual que se hizo con los condominios se identificaron los códigos postales de los municipios segregados mediante inspección visual sobre el WMS de Cartociudad. En 5 de los 7 casos el código postal del municipio segregado era único, con lo que se procedió a su asignación directa. En los 2 casos restantes el municipio segregado tenía 2 códigos postales completos del municipio del cual se había segregado, lo que permitió un ajuste del código municipal en la capa de direcciones de Cartociudad y aplicar directamente el algoritmo descrito en el apartado siguiente. El resumen es que, aunque el tratamiento tuvo que ser individualizado, el método de generación de los polígonos es el mismo que para el resto de los municipios.

Existen casi 3000 direcciones que carecen de código postal y no son útiles para nuestros propósitos, por lo que fueron eliminadas. Cuando hacemos esto perdemos información adicional sobre 2 municipios, Cilleruelo de Abajo (09103) y Luquin (31160). Afortunadamente estos municipios son pequeños –815 y 148 direcciones respectivamente– y solo tienen un código postal que fue identificado en el WMS de Cartociudad.

Adicionalmente hay casi 200 mil coordenadas duplicadas que también fueron eliminadas –normalmente portales cercanos, pero diferentes según su identificador, ID_PORK– . La eliminación no afecta a los códigos postales, puesto que todas las duplicidades comparten el mismo código postal, pero curiosamente si a los códigos municipales. En algunos, muy pocos casos –para ser exactos 33 cuando el municipio se identifica a través del identificador de portal, ID_PORK–, las coordenadas duplicadas si afectan al municipio de asignación de la coordenada. ¡Claramente esto es un error!, puesto que una misma coordenada no puede pertenecer a dos municipios en un momento dado.

Después de estas depuraciones todavía disponemos de más de 12 millones de direcciones geocodificadas con las que construir los polígonos de códigos postales, de forma que la pérdida de información es mínima, y hemos solucionado de forma sencilla, aunque algo laboriosa, todos los casos problemáticos para los que no existe información a nivel de municipio o condominio en la base de datos de Cartociudad. Podemos pues generar el mapa de códigos postales con fecha de referencia circa 2021 y perfectamente ajustados a los lindes de los municipios existentes a 1 de enero de 2019.

3.3 Información auxiliar

Además de las capas esenciales, descritas en los dos apartados anteriores, se utilizó otra información de forma esporádica y para realizar comprobaciones o ajustes. Dos de estos recursos ya han sido mencionados.

Por una parte, el Callejero del Censo Electoral del INE, a efectos de comprobar discrepancias entre esta fuente de información y Cartociudad.

Por otra, el WMS de direcciones y códigos postales de Cartociudad, al objeto de resolver los casos en los que la base de datos descargada no ofrecía suficiente información. ¡Afortunadamente eran pocos casos!

La imagen adjunta proporciona una visión de los polígonos de los códigos postales proporcionados el WMS de Cartociudad con OpenStreetMap como mapa base de fondo. Los polígonos son visibles a partir de una escala 1:50000.


WMS de Cartociudad


Finalmente, también se utilizó el mapa de polígonos de códigos postales descargado por Flores (2017). Ello permitió comprobar ciertas correspondencias entre el WMS de Cartociudad –suponemos que actual– y la información disponible circa 2016.19 Además, pudimos ver la estructura de la capa vectorial distribuida en su momento, y que consta de un registro por el producto cartesiano de los polígonos municipales y los códigos postales, por lo que dispone de 16132 registros. También observamos que los contornos tienen algo menos de detalle que los actualmente distribuidos por el IGN, sobre todo en la linea de costa.

Dado que este mapa no es muy antiguo se podía haber planteado su actualización, pero se prefirió acometer un proceso de elaboración ex-novo, por dos razones. Primero, para adecuar la información a la más reciente disponible sin dependencias del pasado, ya que esto suele acarrear el mantenimiento de los errores iniciales. Segundo, para tratar, en la medida de lo posible, de automatizar el proceso, de forma que puedan generarse capas nuevas en el futuro conforme la información vaya actualizándose. ¡Si Correos sigue manteniendo sus precios, claro!

Todo el proceso se realizó en R (R Core Team 2021), desde el análisis y la depuración de datos, hasta la implementación del algoritmo que se describe en el apartado siguiente. La librería para la manipulación de la información GIS es sf (Pebesma). Así pues, no solo los datos son libres, sino también el proceso de implementación y ejecución, ¡además de enteramente replicable!

4. Algoritmo de generación del mapa vectorial de Códigos Postales a nivel de (polígono de) Municipio

El algoritmo para la generación del mapa vectorial de Códigos Postales toma la idea de Sánchez (2020) que es, en principio, muy sencilla.

A partir de una capa vectorial puntual de direcciones con el código postal y de otra capa poligonal de contornos administrativos las 3 operaciones básicas son:

  1. Generar una teselación de Voronoi a partir de las direcciones.

  2. Disolver la capa anterior por código postal.

  3. Recortar –clip– el resultado anterior con la capa poligonal.

El paso 1 convierte una geometría puntual en poligonal, manteniendo los atributos de cada punto.

El paso 2 agrega los polígonos por código postal, y pierde el resto de atributos.

El paso 3 ajusta la geometría al contorno deseado.

Puesto que los códigos postales no tienen polígonos definidos, y solo tienen sentido práctico allí donde hay direcciones, esta es una forma rápida, aunque algo burda de elaborar un mapa de códigos postales si la capa poligonal es muy extensa, por ejemplo, una provincia. Sin embargo, es perfectamente válida si no deseamos mucha precisión. ¡Nosotros la queremos! Así pues, refinaremos, y automatizaremos, este procedimiento para generar el mapa lo más parecido posible al mapa distribuido libremente por Cartociudad circa 2016 y descargado por Flores (2017), así como al que se observa en el WMS de Cartociudad. Inspección visual de esta información reveló como los códigos postales se ajustan a la mediana de los viales en las grandes ciudades, pero están trazados con tiralíneas en muchos casos en zonas rurales con amplios espacios vacíos demográficamente. En estos lugares los lindes no son de gran relevancia, puesto que allí no vive nadie.

Nuestro contorno administrativo de trabajo será el polígono del municipio. Aunque la mayoría de los municipios constan de un solo polígono, un número no despreciable de los mismos –703 en la capa de municipios distribuida por el IGN a escala aproximada de 1:25000– consta de varios polígonos, por lo que esta es la unidad más elemental con la que podemos trabajar, y en consecuencia la que nos proporciona mayor granularidad. El algoritmo es más intuitivo si tomamos como unidad el municipio, por lo que lo exponemos a partir de esta unidad administrativa.

Una vez depurada la base de datos de direcciones –identificado el código municipal de la dirección, eliminados los duplicados, las direcciones sin código postal y ajustados los casos que requieren tratamiento especial, como los condominios, las segregaciones o los municipios para los que no existe información en la base de datos de Cartociudad– disponemos de más de 12 millones de direcciones georeferenciadas con 2 atributos: código municipal y código postal. A partir de aquí iteramos por municipio de la siguiente forma:

  1. Extraemos, de la base de datos de Cartociudad, las direcciones de un municipio, y del mapa de contornos los lindes administrativos de dicho municipio.

  2. Hacemos un filtrado espacial de las direcciones por el linde administrativo con un buffer negativo de 20 metros –el objeto es evitar problemas de imprecisión geográfica en la información20–.

  1. Si el municipio tiene un solo código postal, entonces se le asigna directamente. Unos 5500 municipios en España tienen un solo código postal asignado, de forma que esto reduce el tiempo de cómputo de forma considerable. La imagen de abajo muestra un ejemplo de este caso, el del municipio de Kripan (01019). Los puntos son las direcciones geolocalizadas.

Ejemplo: Municipio con un solo código postal


  1. Si el municipio tiene más de un código postal, pero solo un polígono, aplicamos el algoritmo básico a todo el municipio:

    • Generamos una teselación de Voronoi a partir de las direcciones de Cartociudad –previa generación de un buffer sobre la bounding box del polígono municipal para evitar problemas en el recorte posterior–.

    • Recortamos –clip– la teselación por el contorno del municipio.

    • Disolvemos –disolve– por código postal.

    • Intersectamos con el poligono del municipio para transferir la información de los códigos postales al municipio. De esta forma dividimos el poligono del municipio en los polígonos de los códigos postales.

Las imágenes de abajo muestran un ejemplo de este caso, el del municipio de Aramaio (01003), con 3 códigos postales asignados sobre un único polígono de término municipal. Primero, con la información de partida, antes de obtener los polígonos de los códigos postales. Los colores de los puntos de direcciones representan los códigos postales asignadas a las mismas.

Ejemplo: Municipio con un polígono y varios códigos postales


Segundo, después de la aplicación del algoritmo anterior. Podemos ver los polígonos generados, junto con las direcciones de partida.


Si superponemos el WMS de Cartociudad sobre los polígonos de los códigos postales generados podemos ver la calidad del resultado –pasando el ratón sobre los polígonos de colores podemos ver el código postal del polígono en cuestión y seleccionado las capas en el menú de la izquierda es posible comparar los lindes generados por el proceso anterior con los ofrecidos por el WMS de Cartociudad–. Vemos que la coincidencia con los polígonos ofrecidos por el WMS es notable.


  1. Si el municipio tiene más de un polígono, entonces repetimos los pasos 2, 3 y 4 a nivel de polígono, en lugar de a nivel de municipio completo.
La secuencia de imágenes que siguen ilustra el caso de un municipio con dos polígonos. Se trata de Alegría-Dulantzi (01001). La información de partida es la siguiente.

Ejemplo: Municipio con varios polígonos y un solo código postal en cada polígono


Como cada polígono solo tiene asignado un código postal el paso 3 asigna directamente dicho código postal a cada polígono, sin cálculos adicionales.


Esta otra secuencia muestra un caso más complejo. Un municipio con 3 códigos postales y dos polígonos. Se trata de Amurrio (01002). Uno de los polígonos solo tiene asignado un código postal, pero en el otro polígono están presentes los 3 códigos postales.

Ejemplo: Municipio con varios polígonos y uno o varios códigos postales por polígono


El paso 3 asigna directamente el código postal al polígono que solo tiene ese código, sin cálculos adicionales. El paso 4 divide el otro polígono entre los códigos postales que tiene asignados a partir de la teselación de Voronoi de las direcciones geocodificadas.


Inspección sobre el WMS de Cartociudad permite ver que los polígonos estimados se ajustan con bastante fidelidad a los ofrecidos por Correos.


Puede observarse, en el WMS, como el código postal 01468 del polígono con múltiples códigos postales, está representado por un polígono único, mientras que en la estimación que hemos efectuado está representado por dos polígonos. Sin embargo, la imagen anterior, que superpone las direcciones de Cartociudad, permite observar cómo en este terreno no hay ninguna dirección, y por tanto su código postal es irrelevante. Por lo demás la correspondencia es casi perfecta.
  1. ¿Y si en el paso 5 hay algún polígono díscolo que no tiene ninguna dirección, y en consecuencia no hay información sobre que código postal asignarle? ¡Estos casos existen! y –suponiendo que la base de datos de Cartociudad sea completa– son espacios vacíos desde el punto de vista de las direcciones postales, por lo tanto, es indiferente el código postal que tengan. ¡No hay dirección a la que enviar la 💌! 📬 Por razones de consistencia y exhaustividad del territorio en la asignación de códigos postales, a estos espacios se les asigna el código postal del polígono más cercano con código postal asignado. Obsérvese que, dados los pasos anteriores, y puesto que el proceso se realiza a nivel de municipio, estos casos los encontramos en municipios con más de un código postal y más de un polígono, y el código postal asignado es siempre uno de otro polígono del mismo municipio. La misma regla se aplica en el caso de un municipio con un solo código postal y varios polígonos, donde en este caso el paso 3 ya no efectúa ninguna estimación ni comprobación adicional –por ejemplo, el municipio de Xàtiva (46145) tiene en nuestra capa 30 polígonos, algunos de ellos minúsculos, pero un solo código postal, 46800–.

Una vez terminado el proceso disponemos de una capa en la que todos los municipios y condominios tienen código postal asignado con geometría poligonal y lindes restringidos a los municipios. En dicha capa disponemos de los 10825 códigos postales de partida y consta de 20297 registros.

A partir de esta capa se generaron 3 productos para distribución en formato shape y la proyección de trabajo, ETRS89-LAEA:

  1. Una capa de códigos postales sin ningún atributo adicional y que consta de un registro por código postal: CodPost2019. Por tanto, tiene 10825 registros.

  2. Una capa en la que existe un registro por el producto cartesiano de municipios y códigos postales, y tiene los atributos del municipio y el código postal asignado: MunicipiosCodPost2019. Esta capa tiene 14601 registros y es, probablemente, la más útil.

  3. Una capa en la que existe un registro por polígono y tiene los atributos del municipio y el código postal asignado: MunicipiosCodPost2019poly. Esta capa tiene 22303 registros y es, en estructura, la más similar a la distribuida por Cartociudad circa 2016 y descargada por Flores (2017).

Toda la información se distribuye de acuerdo con la licencia de Cartociudad: Obra derivada de CartoCiudad 2006-2021 CC-BY 4.0 scne.es.

5. Ejemplo urbano

A título de ejemplo, y dado que los del anterior apartado son todos municipios pequeños y mayoritariamente rurales mostramos la estimación de los polígonos de los códigos postales de Valencia (46250), que dispone de casi 50 mil direcciones para estimar 31 códigos postales en 4 polígonos. La imagen de abajo ofrece el resultado de la aplicación del algoritmo anterior.

Podemos comprobar que, en las zonas urbanas, los polígonos de los códigos postales se ajustan con bastante fidelidad a los del WMS de Cartociudad. Naturalmente sus lindes no son líneas rectas trazadas a tiralíneas por la mediana de los viales, sino que zigzaguean entre los extremos de las calles, pero a todos los efectos prácticos los polígonos son útiles para integrarlos en otras bases de datos, numéricas o geográficas. ¡Y son más baratos que los de Correos! 😄


Ejemplo de Valencia: Polígonos generados sobre el WMS de Cartociudad


6. Reflexiones finales

Este trabajo muestra cómo crear un mapa de códigos postales que respete los lindes municipales a partir de información libre, pública y gratuita, e implementa el proceso con software libre. El único coste –no despreciable– ha sido el tiempo empleado en su elaboración. Esta es una información básica de referencia que debería ser pública, pero el organismo competente en dicha información, Correos, hace uso de su poder de monopolio para cobrar un precio totalmente abusivo por la misma.

Llama la atención que la información sobre códigos postales sea de tan difícil obtención, por ejemplo, no existe una institución pública donde se pueda encontrar un listado de códigos postales, incluso sin referencia a que municipio pertenecen. Ni siquiera es posible encontrar el número de códigos postales existente a una fecha de referencia concreta. Diferentes fuentes de información pública proporcionan estimaciones diferentes de esta información, sin que sea posible saber cuál es la correcta, ¡si es que alguna lo es!

El interés que suscita la información sobre códigos postales ha generado algunas iniciativas que tratan de difundir esta información sin las suficientes garantías de calidad. Por ejemplo, en nuestra opinión las iniciativas privadas mencionadas al final del apartado 2 solo hacen que contribuir a la confusión y falta de transparencia sobre una información que debería ser pública y gratuita.

Frente a esta situación, el trabajo ofrece información detallada de las fuentes de información oficial utilizadas y los procedimientos empleados en el tratamiento de los datos que permiten estimar los polígonos de códigos postales a nivel municipal. Toda la información generada está disponible si se solicita al .

Pese a ello seguimos pensando que la información debería ser suministrada, libre, gratuitamente y sin restricciones, por parte de las autoridades competentes.


Referencias



  1. Legalmente Sociedad Estatal Correos y Telégrafos, S.A.↩︎

  2. Véase la Ley 4/1996, de 10 de enero, por la que se modifica la Ley 7/1985, de 2 de abril, Reguladora de las Bases del Régimen Local, en relación con el Padrón municipal, el Real Decreto 2612/1996, de 20 de diciembre, por el que se modifica el Reglamento de Población y Demarcación Territorial de las Entidades Locales aprobado por el Real Decreto 1690/1986, de 11 de julio y la Orden de 11 de julio de 1997 sobre comunicaciones electrónicas entre las Administraciones públicas referentes a la información de los Padrones municipales.↩︎

  3. Es decir, está rodeado totalmente de municipios que pertenecen a la provincia de Zaragoza.↩︎

  4. Precios de marzo de 2022.↩︎

  5. Ello con el nuevo sistema de gestión del callejero implantado a partir de enero de 2021 con ocasión del cambio de gestión del mismo asociado al Censo de 2021. Con el sistema de gestión anterior el volumen de registros del fichero de tramos de vía era superior a los 2 millones de registros. Con el nuevo sistema la pieza clave del conjunto de datos de tipo geográfico del INE pasan a ser las aproximaciones postales (apps) –definidas como la dirección postal hasta el portal–, para las que (en teoría) se dispone de su geocodificación, y los tramos de vía se obtienen por agregación. La información sobre las aproximaciones postales, incluida su geocodificación, no parece que vaya a ser pública por parte del INE.↩︎

  6. El INE también ofrece servicios de visualización WMS y de descarga WFS de las secciones censales.↩︎

  7. El cruce entre el vectorial de las secciones censales y las tablas de la información demográfica de Padrón del INE arroja algunas discrepancias en algunos años. A título de ejemplo, en el seccionado de 2018 hay un descuadre de 3 secciones censales, entre ambas fuentes de información, que corresponden al municipio de Agüimes (35002), provincia de Las Palmas, y en el seccionado de 2021 hay un descuadre de 1 sección censal que corresponde al municipio de El Casar (36334), provincia de Guadalajara.↩︎

  8. El CNIG también ofrece servicios de visualización WMS y de descarga WFS de las unidades administrativas de nuestro país. Todo ello accesible desde el portal de datos abiertos del Gobierno de España.↩︎

  9. Véase este post fechado, en su versión inicial, en diciembre de 2016.↩︎

  10. Concretamente se indica que “La base de datos está y estará tan actualizada como vosotros queráis. Hasta ahora la base se ha ido actualizando principalmente con las versiones anuales de la Guía de Códigos Postales y con los correos recibidos de nuestros visitantes. A partir del año 2010 el mantenimiento de los datos se realizará exclusivamente a través de las comunicaciones que recibamos a través del correo electrónico.” Énfasis añadido.↩︎

  11. Un correo a la dirección de contacto que figura en dicha web–, solicitando información, no obtuvo respuesta.↩︎

  12. Aunque en la práctica ambos sistemas de referencia son equivalentes a nuestros efectos.↩︎

  13. La rutina para efectuar la teselación de voronoi no triangula correctamente con coordenadas geográficas –longitud/latitud– por lo que fue necesario trabajar con coordenadas proyectadas.↩︎

  14. Esta codificación ha cambiado en el tiempo, y no ha sido siempre homogénea. Así, por ejemplo, una codificación más antigua por parte del IGN les asigna el código de la provincia a la que pertenecen –dos primeros dígitos–, el tercer dígito es un 8, y los 3 últimos un número correlativo dentro de la provincia.↩︎

  15. Solo existen 300 registros de direcciones en Cartociudad que hagan referencia a condominios, pero solo 31 de ellos tienen código postal asignado, de forma que la mayoría de condominios no están representados en Cartociudad.↩︎

  16. En el caso de Los Baldíos (53037), mencionado en el texto, encontramos 4 registros con código postal asignado, que corresponden a puntos kilométricos de la carretera M-601. En los cuatro casos el código postal asignado es el 40109, que corresponde a la provincia de Segovia, en concreto al municipio del Real Sitio de San Ildefonso (40181). Inspección visual del WMS de direcciones de Cartociudad reveló que el código postal correcto para Los Baldíos (53037) es el 28470, que corresponde al municipio de Cercedilla (28038), de la provincia de Madrid.↩︎

  17. ¡Incluido Canarias! ¡Curioso!↩︎

  18. Un criterio alternativo hubiera sido hacer la selección por intersección espacial entre coordenadas y polígonos municipales. Esta intersección forma parte del algoritmo de elaboración de los polígonos de códigos postales en una etapa posterior, de forma que se prefirió disponer de un identificador inicial del municipio al que corresponde la coordenada. Ello reduce los problemas asociados a la imprecisión geométrica de la información.↩︎

  19. Que parece ajustada a los municipios existentes en 2010.↩︎

  20. A pesar de todas las precauciones no todos los problemas de lindes se pueden evitar. Por ejemplo, Cartociudad atribuye, incorrectamente, 17 direcciones de Mislata (46169), con código postal 46920, a Valencia (46250). Si los lindes entre ambos municipios fueran correctos estas direcciones serían filtradas en este paso, pero no lo son –¡el linde entre Mislata y Valencia en el mapa del IGN es manifiestamente incorrecto!, no es un error de precisión geométrica–. También sucede a la inversa, algunas direcciones de Valencia (46250), con código postal 46014, son asignadas por Cartociudad de forma incorrecta a Mislata (46169) y un error de lindes –en este caso posiblemente debido a la precisión geométrica– hace que estas direcciones no sean filtradas. El buffer negativo trata, precisamente, de minimizar estos errores.

    La aplicación de dicho buffer hizo desaparecer 2 códigos postales, 02252 y 25333, al aplicar el algoritmo. Ello afecta a los municipios de Alcalá del Júcar (02007) y Penelles (25164). Investigada la situación se debe a 3 direcciones de carretera que están prácticamente en los límites del municipio y son eliminadas al aplicar el buffer. Lo curioso es que estos códigos postales solo tienen una dirección en Cartociudad, en el caso de 02252, y dos direcciones en el caso de 25333. Comprobados que estos códigos existen en el buscador de Correos y en el WMS de Cartociudad, se aplicó una excepción a estos municipios y no se les aplicó el buffer.

    Lo que esto demuestra es que las direcciones de Cartociudad no están totalmente depuradas y es probable que haya más errores de este tipo.

    Estos casos fueron corregidos manualmente antes de empezar el algoritmo de generación de los polígonos de los códigos postales, pero naturalmente la depuración de las direcciones de Cartociudad y de los lindes de los municipios distribuídos por el IGN está más allá del alcance de este trabajo. ¡Cuanto más precisa sea la información de partida, más precisos serán los resultados!↩︎