[Spanish] Re: Catastro + Python

Luis Franco Vázquez luis at piezas.org.es
Wed Jul 13 11:58:20 EDT 2011


¡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 at 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 at deimos-space.com> escribió:
>
>  Lo olvidaba. Es Python 2.7. Pasa igual con 2.6
>>
>> 2011/7/13 Jorge Arévalo <jorge.arevalo at 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 at 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 at 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
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/spanish/attachments/20110713/734badb1/attachment.html


More information about the Spanish mailing list