Catastro de Navarra, información alfanumérica

Posted on by - 0 comments

Catastro es una fuente de información esencial a la hora de obtener información sobre las características de un activo, pero, y los activos que se encuentran en Navarra o País Vasco, como se puede obtener información de ellos. Estas dos comunidades al tener su respectivos catastros no se pueden consultar con la misma facilidad, por lo tanto aquí va una pequeña herramienta que espero que les ayude con los activos de estas dos comunidades autónomas.

En este caso nos centraremos en la información alfanumérica de Navarra, si lo ven útil se puede hacer algo parecido con las provincias de País Vasco, cada una de estas tiene su respectivo catastro.

Primero se debe de buscar la web en cuestión del catastro que se quiere consultar, cosa que no es fácil, y buscar la página donde se puede consultar la información que se busca, en este caso es:

https://catastro.navarra.es/descargas/

En esta se encuentra un buscador por municipio, lo cual a la hora de evaluar diferentes activos de varias localidades, es un trabajo arduo. Descargamos la información para un municipio en cuestión. Si nos fijamos cada fichero de descarga, se descarga utilizando el código del municipio en cuestión, podemos ver un ejemplo en el siguiente enlace :

https://catastro.navarra.es/descargas/municipios/265/08/alfanumerico.zip

Si indagamos un poco, el último código del último pueblo, en orden alfabético, es el 265, por tanto ya nos surge una idea de como automatizar la descarga, se podría hacer un bucle que vaya del 1 al 265 y que para cada código descargue el fichero en cuestión.

Una vez descargado, en este caso nos vamos a fijar en el fichero municipio, pero en el resto de ficheros podemos encontrar información sobre parcelas urbanas, referencias catastrales, parcelas rurales, ... Lo dicho si ven interesante uno de ellos en cuestión, se podrá realizar otro post sobre este, cualquier petición, ponedla en los comentarios.

Para el caso del código 132 y el fichero municipio, nos encontramos lo siguiente:

132IZAGAONDOA                    Izagaondoa

Que es esta información? Pues bien si nos vamos al fichero .doc que se encuentra dentro de los ficheros descargados, este te indica que para este fichero:

132 es el código del municipio.
AGAONDOA es el nombre en Español.
Izagaondoa es el nombre en Euskera.

Esta delimitación no se podría automatizar? Ya que siempre son las mismas delimitaciones.

Pues bien, en el siguiente script en python, se enseñara como hacer este proceso de forma automática.

import io
import os
import pandas as pd
import requests
import zipfile

# Partes de la url de descarga
url_1 = 'https://catastro.navarra.es/descargas/municipios/'
url_2='/08/alfanumerico.zip'

# Se ha comprobado que el número máximo para un múnicipio es 265, por lo tanto para se hace un bucle de 1 a 300
# por si hay alguno modificación en el futuro que no sea necesario revisar el script
for i in range(1,300):
    try:
        # Se descarga el .zip y se descomprime en la carpeta static/files
        url = url_1 + str(i).zfill(3)  + url_2
        file_name = './static/files/' + str(i).zfill(3) + '/'
        r = requests.get(url)
        # Solo se descangan aquellos que tengan un fichero para descargar
        if r.status_code == 200:
            print(url)
            z = zipfile.ZipFile(io.BytesIO(r.content))
            z.extractall(file_name)
    except:
        # Si no existe un múnicipio con ese número se continua con el siguiente
        continue

# Se establece la variable para guardar los datos
municipios_array = []

# Se buscan los ficheros que se quieren en el directorio
for path, subdirs, files in os.walk('./static/files/'):
    for name in files:
        # En este caso se quiere el fichero que indica el nombre del municipio y su código
        if 'municipios' in name:
            with open(os.path.join(path, name), encoding='cp1252') as sourcefile:
                for line in sourcefile:
                    # Se delimita el fichero, segun las instrucciones del fichero .doc
                    slices = [(0, 3), (3, 33), (33,len(line))]
                    data = [line[slice(*slc)] for slc in slices]
                    municipios_array.append(data)

# Se almacena en una tabla, donde esta se puede guardar en formato csv, xlsx, ...
municipios = pd.DataFrame(municipios_array, columns=['Codigo', 'Nombre Castellano', 'Nombre Euskera'])
municipios['Nombre Euskera'] = municipios['Nombre Euskera'].replace('\\n','', regex=True)

# Se imprime por pantalla el resultado
print(municipios)

La salida de este proceso es:

  Codigo               Nombre Castellano Nombre Euskera
0    077  CORELLA                               Corella
1    263  ZUBIETA                               Zubieta
2    052  BELASCOÁIN                         Belascoáin
3    045  BARASOAIN                           Barásoain
4    174  MORENTIN                             Morentin

Mucho más fácil de leer en este formato no?¿


Comment




HTML Preview:


Comments

There's no comments...