Skip to main content

Description

Project description

ESCatastroLib

La librería ESCatastroLib proporciona una interfaz sencilla para consultar el Catastro de España y obtener información geográfica precisa. Con esta librería, puedes acceder a datos como la ubicación de parcelas, características de construcción y valores geográficos.

Clases

Clase Municipio

Representa un municipio (ciudad o pueblo).

Atributos/Inputs del constructor

provincia (str): El nombre de la provincia donde se encuentra el municipio. Un valor por defecto se establece y se puede proporcionar un valor diferente si es necesario.

municipio (str, opcional): El nombre del municipio. Si no se proporciona al crear una instancia, se lanzará una excepción. Si se especifica, debe coincidir al menos parcialmente con el nombre de un municipio válido encontrado en la base de datos o fuente de datos del sistema.

Excepciones

Exception: Si no se especifica el municipio o si es inválido, o si no corresponde a un municipio válido en la base de datos del sistema. Se lanzará una excepción con la lista de municipios en ese caso.

Clase Calle

La clase Calle es una entidad que representa una calle.

Atributos/Inputs del constructor:

municipio (Municipio) : Objeto que representa el Municipio al que pertenece la calle.

nombre_calle (str, opcional) : El nombre de la calle asignada.

tipo_via (str, opcional) : El tipo de vía de la calle asignada. Se trata de una serie de siglas que puedes consultar en utils.listar_tipos_via()

Excepciones

Exception: Si no existe la calle, o la calle tiene más de un tipo de vía. Devuelve una lista de calles en formato TipoVia NombreCalle

Clase ParcelaCatastral

Representa una parcela catastral.

Inputs del constructor:

  • rc (str, opcional): La referencia catastral de la parcela. Por defecto es None. Puede ser proporcionada sola; también puede haber otros parámetros para buscar una parcela específica en el sistema.

  • provincia (str, opcional): El nombre de la provincia. Por defecto es None. Se usa para buscar por dirección o parcela.

  • municipio (str, opcional): El nombre del municipio. Por defecto es None. Se usa para buscar por dirección o parcela.

  • poligono (int, opcional): El número del polígono. Por defecto es None y puede ser específico para zonas rurales.

  • parcela (int, opcional): El número de la parcela. Por defecto es None y se usa para buscar zonas rurales.

  • tipo_via (str, opcional): El tipo de carretera en la dirección. Por defecto es None y es útil al buscar direcciones urbanas.

  • calle (str, opcional): El nombre de la calle en la dirección. Por defecto es None y es útil para encontrar ubicaciones urbanas

  • numero (str, opcional): El número de la calle en la dirección. Por defecto es None y se usa para encontrar ubicaciones urbanas por número.

Excepciones:

  • ValueError: Si no has proporcionado suficiente información para realizar la búsqueda, o si el RC hace referencia a una MetaParcela.
  • ErrorServidorCatastro: Si hay un error con la base de datos del Catastral Server.

Atributos:

  • rc (str): La referencia catastral de la parcela.
  • provincia (str): El nombre de la provincia.
  • municipio (str): El nombre del municipio.
  • poligono (int): El número del polígono. Solo se usa para terrenos rurales.
  • parcela (int): El número de la parcela. Solo se usa para terrenos rurales.
  • tipo_via (str): El tipo de carretera en la dirección.
  • calle (str): El nombre de la calle en la dirección.
  • numero (str): El número de la calle en la dirección.
  • url_croquis (str): La URL del croquis de la parcela.
  • tipo (str): El tipo de terreno (urbano o rural).
  • antiguedad (str): La edad de la parcela (solo en lotes urbanos)
  • uso (str): El uso de la parcela (solo en lotes urbanos)
  • nombre_paraje (str): El nombre del área, solo se usa para terrenos rurales.
  • regiones (list): Una lista de regiones en la parcela con una descripción y superficie.
  • geocentro (dict): Las coordenadas del centro de la parcela. (Latitud y longitud)
  • geometria (list): Una lista de puntos que representan la geometría de la parcela. (Latitud y longitud)

Clase MetaParcela

Representa una MetaParcela, es decir, una gran parcela catastral con varias referencias catastrales (Parcels Catastrales más pequeñas).

Atributos/Inputs del constructor:

  • rc (str|None): La referencia catastral de la MetaParcela. Puede ser proporcionada como None.
  • provincia (str|None): El nombre de la provincia donde se encuentra la MetaParcela. Por defecto, es None, lo que permite usar nombres generales.
  • municipio (str|None): El nombre del municipio donde se encuentra la MetaParcela. Por defecto, es None, lo que permite usar nombres generales.
  • poligono (int|None): El número del polígono en el que se encuentra la MetaParcela. Se utiliza para encontrar una parcela específica.
  • parcela (int|None): El número de parcelas dentro de la MetaParcela. Se utiliza para encontrar una parcela específica.
  • tipo_via (str|None): Tipo de camino en la dirección de la MetaParcela. Se usa para encontrar una parcela específica.
  • calle (str|None): Nombre de la calle de la MetaParcela. Se usa para encontrar una parcela específica.
  • numero (str|None): Número de casa de la MetaParcela.

Atributos:

  • rc (str): La referencia catastral de la MetaParcela.
  • parcelas (list): Una lista de ParcelaCatastral que representan las parcelas que componen la MetaParcela.

Funciones útiles

comprobar_errores()

Comprueba si la respuesta contiene errores.

Argumentos:

  • respuesta (dict): El diccionario de respuesta.

Excepciones:

  • El que venga de lanzar_excepcion (ErrorServidorCatastro): Si se encuentra un error en la respuesta.

Devuelve:

  • True si no se encuentran errores

listar_provincias()

Obtiene una lista de provincias.

Devuelve:

  • list: Una lista de nombres de provincias.

listar_municipios()

Obtiene una lista de municipios de España.

Argumentos:

  • provincia (str): El nombre de la provincia. Preferentemente en mayúsculas o capitalizado.
  • municipio (str, optional): El nombre del municipio. Por defecto es None.

Devuelve:

  • List[str]: Una lista de nombres de municipios.

Excepciones:

  • Exception: Si la provincia no existe. Muestra un mensaje con las provincias disponibles.

listar_tipos_via()

Retorna una lista de los tipos de vía disponibles.

Devuelve:

  • list: Una lista de los tipos de vía disponibles.

listar_calles()

Devuelve una lista de calles para una provincia y municipio dados.

Argumentos:

  • provincia (str): El nombre de la provincia.
  • municipio (str): El nombre del municipio.

Devuelve:

  • list: Una lista de calles en formato "tipo de vía nombre de vía".

Y esta librería... ¿Cómo se usa?

¡Buena pregunta! Os dejo algunos ejemplos:

from ESCatastroLib import Municipio, Calle, ParcelaCatastral, MetaParcela
from ESCatastroLib.utils import listar_provincias, listar_tipos_via, listar_calles, listar_municipios

print(listar_provincias())
# > ['A CORUÑA', 'ALACANT', 'ALBACETE', 'ALMERIA', 'ASTURIAS', 'AVILA', 'BADAJOZ', ...]

print(listar_tipos_via())
# > {'AC': 'ACCESO', 'AG': 'AGREGADO', 'AL': 'ALDEA, ALAMEDA', 'AN': 'ANDADOR', 'AR': 'AREA, ARRABAL', 'AU': 'AUTOPISTA', 'AV': 'AVENIDA', ... }

print(listar_municipios(provincia='Granada'))
# > ['AGRON', 'ALAMEDILLA', 'ALBOLOTE', 'ALBONDON', 'ALBUÑAN', 'ALBUÑOL', 'ALBUÑUELAS', 'ALDEIRE', ...]

print(listar_municipios(provincia='Granada', municipio='B'))
# > ['ALBOLOTE', 'ALBONDON', 'ALBUÑAN', 'ALBUÑOL', 'ALBUÑUELAS', 'BAZA', 'BEAS DE GRANADA', 'BEAS DE GUADIX', ...]

print(listar_calles(provincia='Granada', municipio = 'Baza'))
# > ['CL  PARAISO (BAU)', 'CL A ALTOS', 'CL A PAVON', 'CL ABAD NAVARRO', 'PZ ABASTOS', 'CL ABEDUL', 'CL ABELARDO LOPEZ DE AYALA', 'CL ABENAMAR', 'CL ACEQUITA', 'CL ADARVE MONJAS', 'CL ADMINISTRADOR', 'TR ADUANA', 'CL ADUANA', 'CL AGUILA', 'CL AIRE', 'CL AIXA', ...]

municipio = Municipio(provincia='Granada')
# [!] Exception: Error al asignar municipio. No has especificado el municipio. Estos son los municipios disponibles: AGRON,ALAMEDILLA,ALBOLOTE,ALBONDON ...

municipio = Municipio(provincia='Granada', municipio='B')
# [!] Exception: Error al asignar municipio. No has especificado el municipio completamente. Estos son los municipios disponibles con esa búsqueda: ALBOLOTE,ALBONDON,ALBUÑAN,ALBUÑOL,ALBUÑUELAS,BAZA,BEAS DE GRANADA, ...

municipio = Municipio(provincia='Granada', municipio='Baza')
# [OK] {'provincia': 'Granada', 'municipio': 'BAZA'}

calle = Calle(municipio=municipio)
# [!] Exception: Error al asignar calle. No has especificado la calle. Estas son las calles disponibles: CL  PARAISO (BAU),CL A ALTOS,CL A PAVON,CL ABAD NAVARRO,PZ ABASTOS,CL ABEDUL,CL ABELARDO LOPEZ DE AYALA, ...

calle = Calle(municipio=municipio, nombre_calle= 'M')
# [!] Exception: Error al asignar calle. No has especificado la calle completamente, o ese nombre está en varios lados (indica el tipo de vía que aparezca al principio de la vía como PZ o CL). Estas son las calles disponibles con esa búsqueda: CL ABENAMAR,CL ADARVE MONJAS,CL ADMINISTRADOR,CL ALAMEDA,CL ALAMILLOS,CL ALAMILLOS ALTOS,CL ALAMILLOS BAJOS,CL ALAMO,CL ALGAMASILLA,CL ALHAMBRA,...

calle = Calle(municipio=municipio, nombre_calle='Mayor', tipo_via='PL')
# [!] ErrorServidorCatastro: Error del Catastro. NO HAY COINCIDENCIAS EN LA BÚSQUEDA DE VÍAS

calle = Calle(municipio=municipio, nombre_calle='Mayor', tipo_via='PZ')
# [OK] {'calle': 'MAYOR', 'tipo_via': 'PZ', 'municipio': <ESCatastroLib.models.Municipio.Municipio at 0x7f0075209e10>}

pc = ParcelaCatastral(rc='22113U490470815583UK')
# [!] ErrorServidorCatastro: Error del Catastro. NO EXISTE NINGÚN INMUEBLE CON LOS PARÁMETROS INDICADOS

pc = ParcelaCatastral(rc='28067A023001490000FJ')
# [OK] {'rc': '28067A023001490000FJ', 'url_croquis': 'https://www1.sedecatastro.gob.es/CYCBienInmueble/SECImprimirCroquisYDatos.aspx?refcat=28067A023001490000FJ', 'municipio': 'GUADALIX DE LA SIERRA', 'provincia': 'MADRID', 'tipo': 'Rústico', 'parcela': '149', 'poligono': '23', 'nombre_paraje': 'PE¥ARRUBIA', 'regiones': [{'descripcion': 'PRADOS O PRADERAS', 'superficie': '250266'}, {'descripcion': 'MONTE BAJO', 'superficie': '187652'}, {'descripcion': 'PASTOS', 'superficie': '1814'}], 'geocentro': {'x': '40.76845', 'y': '-3.672895'}, 'geometria': [{'x': '40.764879', 'y': '-3.678524'}, {'x': '40.765874', 'y': '-3.678059'}, ...], 'superficie': 439732.0}

pc = ParcelaCatastral(rc='1541506VK4714B0002PK')
# [OK] {'rc': '1541506VK4714B0002PK', 'url_croquis': 'https://www1.sedecatastro.gob.es/CYCBienInmueble/SECImprimirCroquisYDatos.aspx?refcat=1541506VK4714B0002PK', 'municipio': 'MADRID', 'provincia': 'MADRID', 'tipo': 'Urbano', 'calle': 'CL ALFONSO XII', 'numero': '34', 'antiguedad': '1915', 'uso': 'Almacen-Estacionamiento.Uso Residencial', 'regiones': [{'descripcion': 'APARCAMIENTO', 'superficie': '37'}, {'descripcion': 'ELEMENTOS COMUNES', 'superficie': '2'}], 'geocentro': {'x': '40.414193', 'y': '-3.689266'}, 'geometria': [{'x': '40.414358', 'y': '-3.689164'}, {'x': '40.414359', 'y': '-3.689094'}, {'x': '40.414288', 'y': '-3.689092'}, ...], 'superficie': 39.0}

pc = ParcelaCatastral(provincia='Granada', municipio='Baza', poligono=16, parcela=128)
# [OK] {'provincia': 'GRANADA', 'municipio': 'BAZA', 'poligono': '16', 'parcela': '128', 'rc': '18024A016001280000GY', 'url_croquis': 'https://www1.sedecatastro.gob.es/CYCBienInmueble/SECImprimirCroquisYDatos.aspx?refcat=18024A016001280000GY', 'tipo': 'Rústico', 'nombre_paraje': 'BAICO', 'regiones': [{'descripcion': 'LABOR O LABRADÍO REGADÍO', 'superficie': '14608'}], 'geocentro': {'x': '37.544352', 'y': '-2.742683'}, 'geometria': [{'x': '37.543611', 'y': '-2.74347'}, {'x': '37.543717', 'y': '-2.743522'}, {'x': '37.543945', 'y': '-2.743435'}, ...], 'superficie': 14608.0}


pc = ParcelaCatastral(provincia='Madrid', municipio='Madrid', poligono='1', parcela='1')
# [!] ErrorServidorCatastro: Error del Catastro. Esta parcela tiene varias referencias catastrales. Usa un objeto MetaParcela.

mp = MetaParcela(provincia='Madrid', municipio='Madrid', poligono='1', parcela='1')
# [OK] {'provincia': 'Madrid', 'municipio': 'Madrid', 'poligono': '1', 'parcela': '1', 'parcelas': [<ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7f61b2298040>, <ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7f61b13407f0>, <ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7f61b223a830>, <ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7f61b223a350>, <ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7f61b13400a0>]}

pc = ParcelaCatastral(provincia='Granada', municipio='Guadix', tipo_via='CL', calle='Largacha', numero=6)
# [!] ErrorServidorCatastro: Error del Catastro. Esta parcela tiene varias referencias catastrales. Usa un objeto MetaParcela.


pc = ParcelaCatastral(provincia='Granada', municipio='Guadix', tipo_via='PZ', calle='Catedral', numero=1)
# [OK] {'provincia': 'GRANADA', 'municipio': 'GUADIX', 'calle': 'PZ CATEDRAL', 'numero': '1', 'rc': '8085801VG8288E0001FA', 'url_croquis': 'https://www1.sedecatastro.gob.es/CYCBienInmueble/SECImprimirCroquisYDatos.aspx?refcat=8085801VG8288E0001FA', 'tipo': 'Urbano', 'antiguedad': '1750', 'uso': 'Religioso', 'regiones': [{'descripcion': 'RELIGIOSO', 'superficie': '3308'}], 'geocentro': {'x': '37.301262', 'y': '-3.136249'}, 'geometria': [{'x': '37.301298', 'y': '-3.136662'}, {'x': '37.301316', 'y': '-3.136699'}, {'x': '37.301376', 'y': '-3.136711'}, ...], 'superficie': 3308.0}

mp = MetaParcela(provincia='Granada', municipio='Guadix', tipo_via='CL', calle='Largacha', numero=6)
# [OK] {'provincia': 'Granada', 'municipio': 'Guadix', 'calle': 'Largacha', 'numero': 6, 'parcelas': [<ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7ff4441944c0>, <ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7ff44507e770>, <ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7ff444194160>, <ESCatastroLib.models.InfoCatastral.ParcelaCatastral object at 0x7ff44507e110>]}

¿Cómo puedo contribuir?

Sigue las instrucciones de CONTRIBUTING.md y el Código de Conducta.

Agradecimientos

  • Al Catastro por hacer un Endpoint público.
  • A GISCE-TI por currarse una librería similar, basándose en los endpoints JSON.
  • A mi abuelo y mi tío por pedirme que os eche una mano buscando tierras.
  • A Juanlu Cano por darme la idea de extender el primer concepto en la PyConES para convertirlo en esta librería.
  • A Jaime Gómez-Obregón por animar de forma muuuy indirecta a "hackear las Administraciones públicas".

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ESCatastroLib-0.0.1rc0.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ESCatastroLib-0.0.1rc0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file ESCatastroLib-0.0.1rc0.tar.gz.

File metadata

  • Download URL: ESCatastroLib-0.0.1rc0.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for ESCatastroLib-0.0.1rc0.tar.gz
Algorithm Hash digest
SHA256 83f1d683667a0e7e3ed02dd16ff8ffdbc8232b892369b243a73c163ab39b7a39
MD5 3dfe383e8c5bb030c176f928870428db
BLAKE2b-256 87d4efb4eea9f6b9e109ae49fc8525e8b7499f9cae3481a0838b035527bbc8fc

See more details on using hashes here.

File details

Details for the file ESCatastroLib-0.0.1rc0-py3-none-any.whl.

File metadata

File hashes

Hashes for ESCatastroLib-0.0.1rc0-py3-none-any.whl
Algorithm Hash digest
SHA256 a1b849190f79b993cfd0224caec2861f862cc4ce4dfbc08feb8ec8e4e1e74db6
MD5 2136223e9727e53c37fe593dbbf75f3a
BLAKE2b-256 84e8c2570c3c8c4136a177e4f2b91b04ae7f8e81dff3c9f001a4fbec2acc3235

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page