Detecta edificios en régimen de propiedad vertical a partir de datos abiertos del Catastro español (formato CAT + shapefile).
Project description
Buscador de Propiedad Vertical en el Catastro español
Herramienta de línea de comandos que identifica edificios de viviendas en régimen de propiedad vertical a partir de los datos abiertos del Catastro español (fichero alfanumérico .CAT + shapefile de parcelas).
¿Qué es la propiedad vertical?
En una finca de propiedad vertical el edificio pertenece a un único titular: los distintos pisos no tienen referencia catastral individualizada. En el fichero CAT esto se traduce en que la parcela tiene un único registro de inmueble (tipo 15) de uso residencial, a diferencia de una comunidad de propietarios normal, donde existe un registro tipo 15 por cada piso o local.
Fuentes de datos
Los datos se descargan gratuitamente (con Cl@ve o certificado digital) desde:
- Fichero alfanumérico
.CAT— Sede Electrónica del Catastro → "Descarga de información alfanumérica por provincia (formato CAT)" - Cartografía vectorial (shapefile) — misma página → "Descarga de cartografía vectorial por provincia (formato Shapefile)" → capa
PARCELA.shp
Instalación
Opción recomendada: pipx
pipx instala herramientas de línea de comandos en entornos aislados, sin contaminar el Python del sistema:
pipx install buscador-propiedad-vertical
Con pip
pip install buscador-propiedad-vertical
Windows / macOS: las dependencias geoespaciales (
geopandas,shapely) pueden fallar al instalarse con pip en estas plataformas. Si ocurre, instálalas primero con conda/mamba y luego el paquete con pip:conda install -c conda-forge geopandas shapely contextily pip install buscador-propiedad-vertical
Desde el repositorio (sin publicar)
pip install git+https://codeberg.org/mig42/BuscadorPropiedadVertical.git
Uso
buscador_propiedad_vertical \
--cat datos/47_166_U_20240101.cat \
--shp datos/shp/PARCELA.shp \
--salida resultados/
Opciones
| Opción | Descripción | Valor por defecto |
|---|---|---|
--cat |
Ruta al fichero .CAT de Catastro (obligatorio) |
— |
--shp |
Ruta al shapefile PARCELA.shp (opcional; sin él no se genera mapa ni GeoJSON) |
None |
--salida |
Directorio de salida (se crea si no existe) | resultados/ |
--sup-minima |
Superficie construida mínima en m² para considerar un edificio | 100 |
--zoom-mapa |
Nivel de zoom del mapa base (1–19). 14 = barrio, 12 = ciudad, 10 = provincia | automático |
Salidas generadas
| Fichero | Descripción |
|---|---|
candidatos_propiedad_vertical.csv |
Tabla con todos los candidatos (RC, dirección, superficies, coordenadas) |
candidatos_propiedad_vertical.geojson |
Geometría de parcelas para QGIS / uMap (requiere --shp) |
mapa_propiedad_vertical.png |
Mapa de situación rápido (requiere --shp) |
Dependencias
pandas
geopandas
shapely
matplotlib
contextily
Instálalas con pip install -r requirements.txt.
Documentación
- Lógica de procesado — explica el pipeline completo y los criterios de detección en lenguaje no técnico.
Testing
pytest # ejecuta todos los tests
pytest -s # muestra la salida estándar
pytest -k _01 # ejecuta solo tests cuyo nombre contiene "_01"
Desarrollo local
Instala el paquete junto con las herramientas de desarrollo (ruff, bandit, mypy, pytest, pytest-cov):
make install
Los targets disponibles en el Makefile son:
| Target | Qué hace |
|---|---|
install |
pip install -e ".[dev]" — instala el paquete en modo editable |
lint |
Comprueba el estilo del código con ruff |
lint-fix |
Aplica las correcciones automáticas de ruff |
security |
Análisis estático de seguridad con bandit |
mypy |
Comprueba las anotaciones de tipos con mypy |
test |
Ejecuta los tests con pytest |
coverage |
Ejecuta los tests y muestra el informe de cobertura |
build |
Genera los artefactos de distribución (dist/*.whl y .tar.gz) |
publish |
Publica en PyPI (requiere PYPI_TOKEN en el entorno) |
check |
Lanza security + lint + mypy + test en orden (igual que el pipeline CI) |
El pipeline de integración continua sigue la misma secuencia:
security → lint + mypy + pyright (en paralelo) → test
Nota sobre el desarrollo
Este proyecto ha sido implementado con la asistencia de modelos de lenguaje (LLMs), bajo instrucción y supervisión de un ser humano. Todo el código ha sido revisado, validado y dirigido por el autor.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file buscador_propiedad_vertical-0.1.0.tar.gz.
File metadata
- Download URL: buscador_propiedad_vertical-0.1.0.tar.gz
- Upload date:
- Size: 775.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1829d033c7d3f58eead5dd08b5eacb3b68a3742e324a882c621dcf1b7e1dca44
|
|
| MD5 |
f1ca79fc96a3accda2821adde8a3ede2
|
|
| BLAKE2b-256 |
2ad93dd200ce783339ab0a8375c73ced3ed54452b909c82f679f46a988a9e44c
|
File details
Details for the file buscador_propiedad_vertical-0.1.0-py3-none-any.whl.
File metadata
- Download URL: buscador_propiedad_vertical-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b29d019a88abcd9b5a44111c8f76c0101d64411db1c63b0edaf7f026d2d8d314
|
|
| MD5 |
59a2016b6dfc8f93d84ddc68348d0aba
|
|
| BLAKE2b-256 |
e0b00dd261d7eb4b6ab6664c5befeba676c0ff9481d2672d634c3a6053c92b9c
|