Eina per processar dades del Cadastre espanyol. Inclou utilitats per dividir fitxers XML grans i exportar dades a CSV.
- ๐ฏ Divisiรณ intelยทligent: Divideix fitxers XML mantenint l'estructura jerร rquica
- ๐ Interfรญcie visual: Utilitza Rich per una experiรจncia d'usuari espectacular
- โก Rร pid i eficient: Processa fitxers grans amb barra de progrรฉs en temps real
- ๐จ Output colorejat: Taules boniques amb estadรญstiques detallades
- ๐ง Configurable: Mida mร xima personalitzable per cada part
- ๐ Mรบltiples formats: Accepta fitxers .zip i .xml com a entrada
- ๐ Unificaciรณ de dades: Combina mรบltiples fitxers en un รบnic CSV
- ๐ข Preservaciรณ de zeros: Mantรฉ els zeros inicials dels camps numรจrics
- ๐ Camps detallats: Extreu tots els camps importants del cadastre
- โก Processament batch: Processa mรบltiples fitxers d'una sola vegada
- Python 3.11+
- Rich library
- Click library
# Clona el repositori
git clone <repository-url>
cd catastrofe
# Instalยทla el paquet (mode desenvolupament)
pip install -e .Aixรฒ crearร automร ticament el comando catastrofe al teu PATH.
Descarrega el binari des de GitHub Releases:
# Descarrega el binari
wget https://github.com/YOUR_USER/catastrofe/releases/latest/download/catastrofe
# Fes-lo executable
chmod +x catastrofe
# Mou-lo al PATH
sudo mv catastrofe /usr/local/bin/catastrofecatastrofe --helpDivideix fitxers XML grans en parts mรฉs petites.
# รs bร sic
catastrofe split girona_entrada.xml
# Especifica el directori de sortida
catastrofe split girona_entrada.xml -o resultats
# Canvia la mida mร xima per fitxer (en KB)
catastrofe split girona_entrada.xml -s 400
# Combina opcions
catastrofe split girona_entrada.xml -o sortida -s 500Exporta dades del Cadastre a format CSV. Accepta fitxers .zip o .xml com a entrada.
# Exporta un fitxer
catastrofe export-csv dades.zip -o sortida.csv
# Exporta mรบltiples fitxers (es combinen en un sol CSV)
catastrofe export-csv file1.zip file2.xml file3.zip -o sortida.csv
# El CSV generat contรฉ els segรผents camps separats per ;
# TV, NV, PNP, PLP, BQ, ES, PT, PU, PCA+CAR+CDC1+CDC2, PCA, CAR, CDC1, CDC2,
# CPO, CPA, KM, ESC, PLA, PUE, POL, PAR, SNP, SLP, KKNota: Els valors es mantenen com a text per preservar els zeros inicials (ex: 0005).
catastrofe/
โโโ catastrofe/ # Paquet principal
โ โโโ __init__.py # Exporta classes
โ โโโ xml_splitter.py # Classe XMLSplitter
โ โโโ csv_exporter.py # Classe CatastroCSVExporter
โ โโโ cli.py # CLI amb Click
โโโ output/ # Fitxers de sortida (generats automร ticament)
โโโ girona_entrada.xml # Fitxer d'exemple d'entrada
โโโ pyproject.toml # Configuraciรณ del paquet
โโโ requirements.txt # Dependรจncies de Python
โโโ README.md # Aquesta documentaciรณ
El paquet es pot utilitzar com a biblioteca Python en altres projectes:
from pathlib import Path
from catastrofe import XMLSplitter
# Divideix un fitxer XML
splitter = XMLSplitter(
input_file=Path("dades.xml"),
output_dir=Path("sortida"),
max_size_kb=450,
verbose=False # Sense sortida visual
)
output_files = splitter.split()
# output_files รฉs una llista de Path amb els fitxers generats
for file in output_files:
print(f"Generat: {file}")from pathlib import Path
from catastrofe import CatastroCSVExporter
# Exporta dades a CSV
exporter = CatastroCSVExporter(
input_files=[Path("file1.zip"), Path("file2.xml")],
output_file=Path("sortida.csv"),
verbose=False # Sense sortida visual
)
exporter.export()Consulta exemple_us_llibreria.py per a mรฉs exemples d'รบs.
- Llegeix el fitxer XML d'entrada
- Analitza l'estructura i identifica els elements repetitius (elements
<DAT>) - Divideix els elements en grups que no superin la mida mร xima especificada
- Mantรฉ l'estructura base XML (capรงaleres, namespaces, elements globals)
- Genera mรบltiples fitxers XML vร lids amb nomenclatura seqรผencial
<?xml version="1.0" encoding="utf-8"?>
<LISTADATOS xmlns="http://www.catastro.meh.es/">
<FEC>2026-02-06</FEC>
<FIN/>
<DAT>
<RC>000100100DG84D</RC>
<PRO>17</PRO>
<MUN>79</MUN>
</DAT>
<DAT>
<!-- Mรฉs elements DAT... -->
</DAT>
</LISTADATOS>L'eina preserva els elements <FEC> i <FIN> en cada fitxer generat, i distribueix els elements <DAT> entre els diferents fitxers de sortida.
L'eina mostra:
- ๐ Informaciรณ del fitxer d'entrada
- โ Nombre total d'elements trobats
- ๐ Barra de progrรฉs amb temps transcorregut
- ๐ Taula resum amb:
- Nom de cada fitxer generat
- Mida en KB (amb color segons si estร dins del lรญmit)
- Nombre d'elements per fitxer
- Totals acumulats
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ช XML Splitter โ
โ Dividint fitxers XML grans amb estil โจ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Llegint fitxer: girona_entrada.xml
โ Elements DAT trobats: 12120
โ Processant elements... โโโโโโโโโโโโโโโ 100% โข 12120/12120 elements
๐ Resum de fitxers generats
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโโฎ
โ Fitxer โ Mida โ Elements DAT โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโค
โ girona_entrada_part_001.xmlโ 449.2 KBโ 7500 โ
โ girona_entrada_part_002.xmlโ 422.8 KBโ 4620 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโค
โ TOTAL: 2 fitxers โ 872.0 KBโ 12120 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโฏ
โญโโโโโโโโโโโโโโโ Completat! โโโโโโโโโโโโโโโโฎ
โ โ Fitxers guardats a: /path/to/output โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
- ๐ Colors i emojis: Interfรญcie visual atractiva
- ๐ Taules boniques: Amb Rich, les dades es presenten de forma elegant
- โฑ๏ธ Progrรฉs en temps real: Saps exactament quรจ estร passant
- โจ Experiรจncia professional: No รฉs nomรฉs un script, รฉs una eina amb personalitat
Les contribucions sรณn benvingudes! Si tens idees per millorar l'eina:
- Fork el projecte
- Crea una branca per la teva feature (
git checkout -b feature/AmazingFeature) - Commit els canvis (
git commit -m 'Add some AmazingFeature') - Push a la branca (
git push origin feature/AmazingFeature) - Obre un Pull Request
Aquest projecte รฉs de codi obert i estร disponible sota llicรจncia MIT.
Creat amb โค๏ธ i Python
- El cร lcul de mida รฉs aproximat i pot variar lleugerament del fitxer final
- Assumeix que els elements repetitius sรณn
<DAT> - No valida l'esquema XML contra un XSD
- Suport per altres estructures XML
- Validaciรณ XML Schema (XSD)
- Compressiรณ automร tica dels fitxers de sortida
- Mode batch per processar mรบltiples fitxers
- Export de logs en format JSON
Gaudeix dividint XMLs amb estil! ๐