codeforspain / ds-codigos-postales

Dataset de Códigos Postales
6 stars 39 forks source link

Dudas sobre Códigos Postales #1

Open fesja opened 8 years ago

fesja commented 8 years ago

Buenas,

Después de hacer varias pruebas, ya tengo sacados los códigos postales de un web service de Cartociudad. Sin embargo, sucede que Correos puede tener diversos municipios/geografías por cada códigos postal. Por ejemplo.

El tema de las geografías se soluciona uniendo las geografías o permitiendo múltiples geografías separadas.

La duda viene de qué municipio asociar a cada código postal si resulta que hay varios. Como veréis en el ejemplo que he puesto no hay ningún dato que nos ayude a identificar el principal. @inigoflores ha sacado los códigos postales del INE, y ahí parece que la relación es 1 a 1 (falta que nos lo confirme). Ahora se me ocurren varias opciones:

¿Qué opináis?

inigoflores commented 8 years ago

La relación que salía era 1 a 1 porque había supuesto erróneamente que un código postal no puede pertenecer a más de un municipio. He modificado el script para que agrupe por codigo_postal y municipio_id, y ahora se reproduce lo que comentas:

codigo_postal municipio_id nombre
01110 01017 Campezo/Kanpezu
01117 01017 Campezo/Kanpezu
01117 01056 Harana/Valle de Arana

Lista completa

En este caso, el código postal 01117 hace referencia a dos municipios diferentes.

Voy a evaluar las opciones que propones y te digo algo.

inigoflores commented 8 years ago

Después de analizar los datos, la primera conclusión a la que he llegado es que lo que nosotros llamamos un "código postal" no queda unívocamente identificado por su código de 5 dígitos (o nombreEntidad/nombre según Cartociudad), sino que además hay que adjuntar la información de municipio.

Es decir, se trataría de un clave primaria compuesta, formada por num_codigo_postal y municipio_id.

Sin embargo, observo que hay algunos polígonos asociados a códigos postales que no tienen información de municipio, como por ejemplo el polígono más al norte de los tres que componen código postal 01117.

<entidadLocal>
    <provincia>Araba/Álava</provincia>
    <municipio/>
</entidadLocal>

Desconozco la razón por la cual este dato no existe, pero me atrevo a suponer que es porque el polígono abarca dos o más municipios.

Este polígono no solo no incluye el nombre del municipio, sino que además hace uso de un identificador fid que puede inducir a errores:

<Entidad fid="18020000001">

Según la documentación técnica (pag. 25):

fid:  identificador  único  en  la  base  de  datos  de  CartoCiudad  (los  cinco  primeros  dígitos se corresponden con el código INE del municipio en el que se encuentra).  

Sin embargo el código INE 18020 se corresponde con el municipio Arenas del Rey en Granada, nada ver con Álava.

La solución fácil aquí es eliminarlo, como ha hecho Google Maps, donde se aprecia como han unido los polígonos de abajo en un solo, omitiendo el de arriba.

Sin embargo, creo que -tanto descartar polígonos, como agruparlos- supone perder información. En el caso de que quiera usar los datos para crear una aplicación que me permita pinchar sobre un mapa y obtener el código postal, si descartamos polígonos van a quedar zonas "desiertas".

Habida cuenta de que no se puede usar la clave compuesta num_codigo_postal, municipio_id, por lo descrito arriba, propongo usar una clave primaria única que identifique cada registro. La buena noticia es que este identificador ya existe, y es el parámetro fid que proporciona Cartociudad.

De esta manera, tendríamos una tabla parecida a lo siguiente:

fid codigo_postal municipio_id nombre poligono
10170000003 01117 01017 Campezo/Kanpezu {...}
18020000001 01017 {...}
10560000001 01117 01056 Harana/Valle de Arana {...}

Se podría incluir la información de provincia, así al menos quedaría localizado el código postal en ausencia del municipio:

fid codigo_postal municipio_id nombre poligono provincia_id
10170000003 01117 01017 Campezo/Kanpezu {...} 01
18020000001 01017 {...} 01
10560000001 01117 01056 Harana/Valle de Arana {...} 01

Otra ventaja de usar fidcomo clave primaria es que siempre se puede usar para enlazar con Cartociudad.

A ver que os parece.

inigoflores commented 8 years ago

Acabo de darme cuenta de que Google Maps no ha eliminado el polígono mencionado (18020000001), sino que le ha asignado el código postal 01200 en vez de 01117.

En codigospostales.com es sencillo visualizar las geometrías, y los datos parece que son los correctos.

01117

01200

Investigando un poco más, averiguo que el polígono en cuestión no ofrece información acerca del municipio por la sencilla razón de que... no pertenece a ningún municipio! La zona se llama Parzonería de Entzia.

[Las parzonerías] son instituciones de tremenda singularidad histórica. Modelos de gestión de los usos y aprovechamientos comunales de los montes, basados en la propiedad compartida en la que ninguna de las entidades que las integran posee una parte física del territorio. Su origen es ancestral y está arraigado en sistemas de organización y costumbres pastoriles. Las parzonerías están reconocidas como verdaderas entidades locales, dotadas de personalidad y capacidad jurídica propia y cuyos acuerdos son ejecutivos. No hay que confundirlas con las mancomunidades porque, a diferencia de éstas, son dueñas de sus terrenos.

Fascinante! Nunca te acostaras sin aprender algo nuevo.

¿Por qué Google Maps le asigna el código postal 01200? Veamos...

La Parzonería de Entzia la integran los municipios de Agurain -con una participación del 25%-, Asparrena con un 12,75%, Donemiliaga con un 12,75% y los pueblos de Roitegi, Onraita, Kontrasta, Ullibarri-Arana y San Vicente de Arana con un 50%.

Resulta que el municipio Agurain/Salvatierra es el partícipe mayoritario, y su código postal es 01200. En Google habrán pensado que asignar este código postal a la Parzonería de Entzia es lo correcto. Pero están equivocados, pues su verdadero código postal -según Correos- es 01117.

fesja commented 8 years ago

@inigoflores es brutal tu respuesta, muchísimas muchísimas gracias y perdona por el retraso!

tinproject commented 8 years ago

Investigando un poco el tema, parece que la unica construcción habitable en la Parzonería de Entzia es la Granja Iturrieta que al parecer es un centro público para el estudio de la mejora de la patata. Al ser un territorio sin catergoría de municipio, basicamente un monte público, imagino que Correos no le asignaría un codigo postal al uso en su momento, sino que le asimilaría el de la oficina de correos más cercana.

También creo que la diferencia entre el dato de Google y el de Cartociudad se basa en una discrepancia de la fecha en que tomaron los datos, es probable que el servicio postal de la Granja Iturrieta se haya transferido de oficina de correos, y de ahí el cambio.

Tampoco hemos de olvidar que los códigos postales están hechos para la clasificación de los envíos postales por parte de Correos, no para determinar una superficie geográfica. En el momento que alguién decidió que todo tenía que tener un código postal estos casos atípicos son los que muestran las inconsistencias de esa asociación.

Estaría bien que un/a cartero/a de la zona nos sacase de dudas. ;-)

inigoflores commented 8 years ago

@fesja gracias!

@tinproject creo que no vas mal encaminado del todo, y que los datos de Google Maps estén desactualizados puede ser la razón más probable por la cual no coinciden con los de Correos. Aunque -por lo visto el asunto- es algo más complejo.

Recordemos que oficialmente Correos asigna a toda la Partzonería de Entzia el código postal 01117.

Se me ha ocurrido llamar hace un rato a la oficina de Correos de Salvatierra/Agurain para salir de dudas, y una señora muy amable me ha confirmado que la Parzonería de Entzia no tiene un único código postal:

Buscando en la web de Correos datos acerca de la oficina de Campezo, me he quedado un tanto perplejo al descubrir que no aparece por ningún lado. No existe! Sin embargo, Google sí que me proporciona alguna pista. La única referencia que encuentro es la de la web del Ayuntamiento de Campezo:

No hay dirección ni teléfono, y el horario de atención al público es muy reducido. Deduzco que no se trata de una oficina de Correos propiamente dicha, sino de una pequeña oficina dependiente de la oficina de Salvatierra/Agurain alojada en las dependencias del Ayuntamiento y que da servicio al propio pueblo (código postal 01110) y a la zona sur de la Parzonería de Entzía (01117).

La duda que surge es por qué Correos no establece esta división, que parce que existe de facto, creando dos polígonos independientes para la Parzonería de Entzia, una al norte y otra al sur, asignando el código postal correspondiente a cada zona. A lo mejor es que se trata de una operativa de ámbito local que no se está recogida en la información que proporciona Correos.

Esta presunta falta de rigor no debería ser demasiado preocupante si nos limitamos al servicio postal. Sin embargo, como comenta @tinproject, cuando se usan los códigos postales para otros menesteres para los que no están previstos (como el calculo de rutas, portes, etc. :), entonces surgen los problemas!

Con independencia de todo este rollo que acabo de contar, y en lo que afecta a este dataset, hay que ceñirse a una fuente, y la de Correos (a través de Cartociudad) debería seguir siendo la más fiable.

otundra commented 4 years ago

Tremendo post, gracias

Hay alguna tabla con el código FID?