Skip to content

gisce/catastrofe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

14 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ›๏ธ Catastrofe

Eina per processar dades del Cadastre espanyol. Inclou utilitats per dividir fitxers XML grans i exportar dades a CSV.

โœจ Caracterรญstiques

Split - Divisor de fitxers XML

  • ๐ŸŽฏ 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

Export CSV - Exportador de dades cadastrals

  • ๐Ÿ“„ 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

๐Ÿ“‹ Requisits

  • Python 3.11+
  • Rich library
  • Click library

๐Ÿš€ Instalยทlaciรณ

Des de codi font

# 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.

Binari precompilat (Linux)

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/catastrofe

๐Ÿ’ป รšs

Comando principal

catastrofe --help

Split - Dividir fitxers XML

Divideix 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 500

Export CSV - Exportar dades a CSV

Exporta 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, KK

Nota: Els valors es mantenen com a text per preservar els zeros inicials (ex: 0005).

๐Ÿ“ Estructura del projecte

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รณ

๐Ÿ“š รšs com a biblioteca

El paquet es pot utilitzar com a biblioteca Python en altres projectes:

XMLSplitter - Dividir XMLs

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}")

CatastroCSVExporter - Exportar a CSV

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.

๐ŸŽฏ Com funciona

  1. Llegeix el fitxer XML d'entrada
  2. Analitza l'estructura i identifica els elements repetitius (elements <DAT>)
  3. Divideix els elements en grups que no superin la mida mร xima especificada
  4. Mantรฉ l'estructura base XML (capรงaleres, namespaces, elements globals)
  5. Genera mรบltiples fitxers XML vร lids amb nomenclatura seqรผencial

Exemple d'estructura XML suportada

<?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.

๐Ÿ“Š 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

Exemple de sortida

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘           ๐Ÿ”ช 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    โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

๐ŸŽจ Per quรจ รฉs "cool"?

  • ๐ŸŒˆ 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

๐Ÿค Contribucions

Les contribucions sรณn benvingudes! Si tens idees per millorar l'eina:

  1. Fork el projecte
  2. Crea una branca per la teva feature (git checkout -b feature/AmazingFeature)
  3. Commit els canvis (git commit -m 'Add some AmazingFeature')
  4. Push a la branca (git push origin feature/AmazingFeature)
  5. Obre un Pull Request

๐Ÿ“ Llicรจncia

Aquest projecte รฉs de codi obert i estร  disponible sota llicรจncia MIT.

๐Ÿ‘จโ€๐Ÿ’ป Autor

Creat amb โค๏ธ i Python

๐Ÿ› Problemes coneguts / Limitacions

  • 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

๐Ÿ”ฎ Futures millores

  • 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! ๐ŸŽ‰

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages