[Spanish] Re: Catastro + Python

Fabio Rueda Carrascosa avances123 at gmail.com
Wed Jul 13 12:12:54 EDT 2011


Hola, saltate el puteo de los zips asi: en ubuntu:

sudo aptitude install p7zip-full
man 7z
leer un poquito que quieres hacer

luego haces un system call desde tu python

import os
cmd = '7z extraer o lo que convenga'
os.system(cmd)

Es mi primer mail en la lista y ya llevo tiempo, un saludo a todos

El 13 de julio de 2011 17:58, Luis Franco Vázquez <luis en piezas.org.es>escribió:

> ¡Ah! y borra los zip originales, perdona, no me daba cuenta. Si quieres que
> no haga eso comenta:
>  unlink($archivoZip->getPathname());
>
> Un saludo
>
> El 13 de julio de 2011 17:56, Luis Franco Vázquez <luis en piezas.org.es>escribió:
>
> Hola Jorge:
>>
>> yo estaba haciendo lo mismo con PHP.
>> Prueba este script y me cuentas (ejecútalo si quieres desde consola con
>> php nombre_script.php).
>> Cambia la ruta del directorio y ya se encarga él de buscar todos los zip y
>> de extraerlos en el mismo sitio.
>>
>> Ya me dirás.
>> Un saludo
>> <?php
>>
>> /**
>>  * Librería que extiende  el FilterIterator del SPL de PHP
>>  * para filtrar sólo los archivos de un tipo
>>  *
>>  */
>> class FiltroDirectorio extends FilterIterator
>> {
>>     private $_tipo;
>>
>>     /**
>>      * Constructor
>>      *
>>      * @access public
>>      * @return void
>>      */
>>     public function __construct($path,$tipo)
>>     {
>>         parent::__construct(new DirectoryIterator($path));
>>         $this->_tipo = '.' . strtolower($tipo);
>>     }
>>
>>     /**
>>      * Comprueba si durante una iteración se cumplen las condiciones
>>      *
>>      * @access public
>>      * @return Boolean $aceptable
>>      */
>>     public function accept()
>>     {
>>         $aceptable = FALSE;
>>         $iteradorDirectorio = $this->getInnerIterator();
>>         $aceptable = $iteradorDirectorio->isFile();
>>         if ($aceptable)
>>         {
>>             $aceptable = (bool)
>> substr_count(strtolower($iteradorDirectorio->getFilename()), $this->_tipo);
>>         }
>>         return $aceptable;
>>     }
>>
>> }
>>
>> $rutaDirZip =
>> '/home/usuario/Escritorio/catastro/muestras/urbana_sin_historia/';
>> $dir = new FiltroDirectorio($rutaDirZip,'zip');
>> foreach ($dir as $archivoZip)
>> {
>>     $zip = new ZipArchive;
>>     if ($zip->open($archivoZip->getPathname()) === TRUE) {
>>         $zip->extractTo($rutaDirZip);
>>         $zip->close();
>>         echo 'Extrayendo '.$archivoZip->getPathname().PHP_EOL;
>>         echo 'Borrando '.$archivoZip->getPathname().PHP_EOL;
>>         unlink($archivoZip->getPathname());
>>
>>     } else {
>>         echo 'Fallo extracción: '.$archivoZip->getPathname().PHP_EOL;
>>     }
>> }
>> ?>
>> El 13 de julio de 2011 17:31, Jorge Arévalo <
>> jorge.arevalo en deimos-space.com> escribió:
>>
>>  Lo olvidaba. Es Python 2.7. Pasa igual con 2.6
>>>
>>> 2011/7/13 Jorge Arévalo <jorge.arevalo en deimos-space.com>:
>>> > Buenas,
>>> >
>>> > Estoy procesando datos catastrales con Python, y me estoy encontrando
>>> > con un problema bastante molesto. Os cuento lo que hago:
>>> >
>>> > 1.- Con certificado digital, me bajo unos shapefiles de prueba del
>>> > servicio de descarga masiva de datos catastrales
>>> > (https://www.sedecatastro.gob.es/OVCFrames.aspx?TIPO=TIT&a=masiv).
>>> > Elijo la opción "rústica con historia". Me baja un fichero zip
>>> >
>>> > 2.- Con Python, descomprimo ese fichero zip. Dentro tiene más ficheros
>>> > zip (PARCELA.zip, SUBPARCE.zip, etc).
>>> >
>>> > 3.- Intento descomprimir cada uno de los ficheros por separado, y con
>>> > todos ellos Python me da una excepción "BadZipFile: File is not a zip
>>> > file". Llamando al método "is_zipfile"
>>> > (http://docs.python.org/library/zipfile.html), efectivamente, me
>>> > devuelve FALSE. He estado buscando por Internet gente que ha tenido un
>>> > problema similar, pero no he encontrado ninguna respuesta
>>> > satisfactoria todavía. En StackOverflow hay un par de hilos sin
>>> > respuesta sobre el tema. Por lo que he podido sacar, será que los
>>> > ficheros no están en el formato PKZIP. 7-zip me los abre sin
>>> > problemas, y el unzip de Ubuntu lo mismo.
>>> >
>>> > Hasta donde yo creía saber, el algoritmo PKZIP era el implementado
>>> > para la compresión ZIP, y pensé que cualquier librería que soportara
>>> > archivos zip no tendría problemas con dicho formato, pero se ve que
>>> > no.
>>> >
>>> > ¿Alguien tiene experiencia con los ficheros del catastro?, ¿o con este
>>> > tipo de problema en ficheros zip?
>>> >
>>> > Gracias por anticipado, y saludos,
>>> >
>>> > --
>>> > Jorge Arévalo
>>> > Internet & Mobility Division, DEIMOS
>>> > jorge.arevalo en deimos-space.com
>>> > http://es.linkedin.com/in/jorgearevalo80
>>> > http://mobility.grupodeimos.com/
>>> > http://gis4free.wordpress.com
>>> > http://geohash.org/ezjqgrgzz0g
>>> >
>>>
>>>
>>>
>>> --
>>> Jorge Arévalo
>>> Internet & Mobility Division, DEIMOS
>>> jorge.arevalo en deimos-space.com
>>> http://es.linkedin.com/in/jorgearevalo80
>>> http://mobility.grupodeimos.com/
>>> http://gis4free.wordpress.com
>>> http://geohash.org/ezjqgrgzz0g
>>> _______________________________________________
>>> Spanish mailing list
>>> http://lists.osgeo.org/mailman/listinfo/spanish
>>> http://es.osgeo.org
>>> http://twitter.com/osgeoes
>>>
>>
>>
>
> _______________________________________________
> Spanish mailing list
> http://lists.osgeo.org/mailman/listinfo/spanish
> http://es.osgeo.org
> http://twitter.com/osgeoes
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.osgeo.org/pipermail/spanish/attachments/20110713/67b4a354/attachment-0001.html


More information about the Spanish mailing list