inigoflores / ds-codigos-postales-ine-es

134 stars 97 forks source link

una pena #5

Closed oantonioo closed 3 years ago

oantonioo commented 3 years ago

Pues es una pena que este proyecto se abandonara antes de acabarlo.

Tiene varios errores simples pero que dificultan el uso, no recomiendo su descarga si no podeis superar todos los fallos ya que perdereis el tiempo.

Para mi el unico fallo que me hizo dejarlo fue: 1 - que en el campo | nombre_entidad_singular | faltan poblaciones, aparecen todas las 'pedanias' o 'Localidades' pertenecientes al Municipo padre pero luego el municipio no aparece por ningun lado, esto ocurre DESGRACIADAMENTE con muchisima frecuencia.

nada! pero la verdad que GITHUB se esta volviendo en algo complicadisimo para encontrar cosas buenas o no abandonadas donde poder ayudar

inigoflores commented 3 years ago

Hola @oantonioo

El proposito de codigos_postales_municipios.csv es proporcionar un un código postal y asociarlo al código INE del municipio. Incluye un campo adicional, que es el de nombre_entidad_singular, que, como su propio nombre indica, hace referencia a una entidad singular que comparte ese código postal. El problema es que solo aparece una de las entidades singulares, y no todas, lo que no tiene mucha utilidad e induce a confusión.

Entiendo que es deseable poder obtener todas las entidades singulares asociadas a un código postal, por lo que en breve añadiré un dataset para esto.

Si lo que necesitas es el nombre de municipio, este lo puedes obtener de codigos_postales_municipios_join.csv.

nada! pero la verdad que GITHUB se esta volviendo en algo complicadisimo para encontrar cosas buenas o no abandonadas donde poder ayudar

Es sencillo, solo tienes que hacer un pull request de las modificaciones que hayas hecho en tu fork, si crees que pueden beneficiar al proyecto.

oantonioo commented 3 years ago

Lo primero! Pensaba que estaba abandonado, por las fechas de los archivos y los datos y comentarios sin respuesta.

Y lo segundo! Es que leyendo tu respuesta esta claro que no consegui explicarme.

Lo que tu llamas 'nombre_entidad_singular' yo lo llamo 'localidad' y siento mucho no mandarte a la wikipedia. Lo que paso es que confie, despues de pasarlo a la base de datos y programar un poco, me di cuenta de errores que se reportaban al no incluirse todos los 'municipios' como 'entidad_singular', la inmensa mayoria si aparecen pero solo falta que el 5% no y ya te la lia. Este fallo ocasiona un gran problema porque entre otras cosas, cuando buscas por 'codigo postal' puedes obtener una 'entidad_singular' erronea ya que en ocasiones esta mal ubicada con su codigo postal o nunca obtienes resultado para esa localidad real con su ayuntamiento.

Habia pensado en resolverlo y lo anoto aqui por si a alguien le da por hacerlo que vea el problema que tendra despues 1 - por PHP hice una busqueda de diferentes 'municipios' y dentro de ese bucle, hice una comparacion con otra consulta. Si no existe el (municipio en entiedad_singular) hago una busqueda (automatica) a geonames.org y extraigo los datos como codigo postal para crear el registro que falta.

Lo mejor es coger los datos de una fuente fiable (me refiero de pago), por ejemplo correos se que lo vende y claro debe ser fiable pero es muy feo que sea precisamente correos quien te cobre por esto y no poco.

es la primera vez que me meto en un proyecto asi, encontrare la solucion :)

inigoflores commented 3 years ago

Hola @oantonioo

Gracias por tus comentarios. Te contesto.

Lo que tu llamas 'nombre_entidad_singular' yo lo llamo 'localidad' y siento mucho no mandarte a la wikipedia.

Eres libre de utilizar la terminología que desees, pero al encontrarnos dentro del ámbito del INE, en este repositorio debemos utilizar la terminología oficial de la fuente original.

Es importante entender la diferencia entre los conceptos de municipio, entidad colectiva, entidad singular y núcleo de población. La agrupación de estas 4 divisiones define la unidad poblacional.

Cada unidad poblacional puede estar asociada a uno o más códigos postales y cada código postal puede estar asociado a uno o mas unidades poblacionales. Es una relación N:N. Ejemplo:

codigo_postal municipio_id codigo_unidad_poblacional entidad_singular_nombre nucleo_nombre
29610 29076 0001701 Ojen Ojen
29610 29076 0001702 Ojen Mairena (La)
29610 29076 0001799 Ojen diseminado
29612 29076 0001702 Ojen Mairena (La)

He actualizado el repositorio para incluir las unidades poblacionales.

oantonioo commented 3 years ago

Si, si entiendo las diferencias. La base de datos que estoy creando necesita tanto los municipios como las poblaciones y TAMBIEN entidad-singular.

y te explico el motivo. lo que pretendo es que el visitante, escriba lo que el entiende como 'donde vive' o la zona donde quiere buscar algo. Y con ese dato pretendo rellenar automaticamente (Poblacion - Codigo Postal) y como zona 'municipio o entidad singular' si es que este es diferente a poblacion.

Es mas muchas gente veo que busca incluso por el nombre de su urbanizacion, pero ya seria rizar demasiado el rizo. Si consigo completar todos estos datos ya sera un logro.

Por ahora estoy jugando tus datos y los de la agencia tributaria https://www.agenciatributaria.es/AEAT.internet/Inicio/Ayuda/Tablas_auxiliares_de_domicilios__provincias__municipios____/Tablas_auxiliares_de_domicilios__provincias__municipios____.shtml

y completando los codigos postales que faltan con 'geonames.org' y 'googleMap' usando claro sus APIs y de forma automatica, pero no es facil porque ya lo he repetido varias veces haber si consigo encontrar la configuracion adecuada. Esto de ir haciendo consultas para rellenar la base de datos con geonames.org y googleMap tarda tiempo, ya que si lo hicera sin descanso, me tocaria 'pagar' pero programando que lo haga poco a poco sale gratis.

De todas formas si se te ocurre algo... :)

Y piensa en mi idea de consultar con 'geonames o googleMap' porque creo que puede serte util tambien o mirar el listado de agencia tributaria que es realmente bueno.

** edito. Se me olvidaba que tambien estoy registrando coordenadas, asi que aun es mas lio si luego tiene que estar el nivel de errores bajo, pero lo conseguire.

Un saludo y gracias

oantonioo commented 3 years ago

Por cierto! inigoflores

Acabo de probar tu actualizacion. Tu ultima actualizacion es genial, el programa que uso parar rescatar otro datos para complementarlo, apenas me dio errores graves como en el anterior.


70702,07032,Maó-Mahón,0010801,Mao,Mao 72318,42043,Burgo de Osma-Ciudad de Osma,0013601,Valdelubiel,Valdelubiel 80154,12077,Moncofa,0001701,Grao,Grao (El) 91319,33024,Gijón,0501299,Aguda,diseminado 91349,33024,Gijón,0504899,Carbaínos,diseminado

|codigoPostal - Municipio_ID - municipio_nombre|

_por alguna razon tu exportacion a cambiado el 'codigoPostal' con 'MunicipioID' Aunque veo que es un error que arrastras de los anteriores, yo lo arregle facil pero quizas este fallo haya probocado otros NADA: ni sustituyendolos queda bien, los codigos postales no estan en rango de zona, los borro


Si le echas un vistazo y actualizas todo, si te apetece comenta

gracias por tu tiempo.

inigoflores commented 3 years ago

Hola @oantonioo

Estoy intentando ver donde esta el error, pero no logro verlo. Porfa, a ver si me lo puedes aclarar.

oantonioo commented 3 years ago

Es cualquier archivo CSV que quieras abrir de la carpeta /data/

Por ejemplo: 1 - pinchale al primero 'codigos_postales_municipios.csv' 2 - y ve al final de la lista. 3 - tu lo tienes asi:

|codigo_postal| - |municipio_id| - |municipio_nombre| 70702 07032 Maó-Mahón 72318 42043 Burgo de Osma-Ciudad de Osma 80154 12077 Moncofa 91319 33024 Gijón 91349 33024 Gijón

Se ve facilmente porque en españa no tenemos codigos postales con esas numeraciones, ya que cada provinica inicia su codigo postal por su 'idProvincia' En principio, claramente se puede deducir que los datos de 'codigo_postal' se han cambiado por los de 'municipio_id' y eso fue lo que yo pense ya que el inicio de esos codigos si coinciden con su provincia. El problema es que me puse a comprobar por gps, y el nuevo codigo postal... no parecia ser exacto. (bueno, esto tambien ocurre con unas docena poblaciones mas pero es un pequeño error que no tiene importancia) El caso es que despues de perder un rato para arreglarlas manualmente, osea buscar sus codigos postales exactos.. no lo consegui, y como no son importantes (mirando claro entidad_singular y nucleo), decidi! siemplemente borrarlas para que mi script no se entretuviera.

Es la respuesta a si tu pregunta era aclarar donde vi el error, que fue lo que entendi

PERO SI TU PREGUNTA, ¿donde podria estar lo que genera ese error? No sabria decirte, no se como obtienes las listas, yo he pensado que harias como yo un script PHP que va cogiendo datos de INE y que ya descargaste y vas creando la lista juntando datos.

Es posible o que el archivo del INE ya venga con ese error o que las ultimas lineas de programacion de tu codigo tenga algun error, porque aparentemente el unico problema es que en esas ultimas cambia los datos de esas dos columnas

SanchezBelen commented 3 years ago

Hola oantonio

¿puedes compartir el script que usaste para conseguir incluir las coordenadas? Estoy intentando usar el script de inigoflores, ¿tu lo usaste para este fin o modificaste las tablas?

inigoflores commented 3 years ago

Hola @oantonioo

Perdona el retraso en contestarte.

Los datos generados a partir de la fuente parecen correctos.

Para el código postal 91349, existen dos registros en el fichero TRAM-NAL.F200630.

3302409013   05048999134900000            9134910001 0329    20200630 09013   0504899L'ABADÍA CENERO          CARBAÍNOS                *DISEMINADO*             91349DESPEÑAPERROS CENERO     00000                                                              9134910001 0329 
3302409013   05048999134900000            9134920002 0330    20200630 09013   0504899L'ABADÍA CENERO          CARBAINOS                *DISEMINADO*             91349DESPEÑAPERROS CENERO     00000  

Al tratarse de la misma unidad poblacional, estos dos registros quedan reducidos a uno solo.

Otra cosa es que la fuente esté mal. Esto ya se escaparía del ámbito de este dataset, cuyo objetivo es reproducir lo más fielmente posible la fuente del INE.

Haciendo una búsqueda en Google, vemos que aparece este código postal en alguna web. Posiblemente estén haciendo uso de esta misma fuente.

Revisando el código, he identificado un bug por el cual se estaban reescribiendo registros al estar usando un código de unidad poblacional insuficiente. Faltaba por añadir el código del municipio.