<div dir="ltr">Un saluto a tutta la comunità, <div>riscrivo qui in lista un post che ho scritto sul forum.</div><div>questo è il mio primo post, spero di non fare troppi errori da novellino  ;)<br>Dunque, sto sviluppando un'applicazione web (apache+php+jquery+tomcat+geoserver+postgres+postgis, il tutto gira su server debian), per alcune funzioni ho utilizzato python (finalmente ho avuto la possibilità di studiarmelo!), ma una in particolare mi sta dando un po' di problemi: <br>da una mappa con punti, linee e poligoni georeferenziati (gestiti da postgres/postgis e pubblicati con openlayers via geoserver), l'utente fa una ricerca e scarica i dati in diversi formati (shp, json, gml, csv). <br>Avrei potuto mandare una richiesta direttamente a geoserver ma volevo evitare di inserire un pulsante di download per ogni tipo di formato (considerate che per lo shape ho 3 diverse richieste poiché punti, linee e poligoni sono gestiti da tabelle diverse), da qui l'idea di utilizzare python per creare i vari file, zipparli e far partire il download cliccando su un solo pulsante. <br>Ho creato le varie funzioni, e salvato il file nella cartella cgi-bin (apache, ovviamente, è stato configurato per la gestione dei file python da cgi-bin). <br>Lo script crea i vari file, crea l'archivio zip e pulisce la cartella dai file creati lasciando solo lo zip...il problema arriva al download: nell'error.log di apache leggo "malformed header from script 'test.py': Bad header: Initializing..." <br><b>L'errore sparisce e il download va a buon fine se dallo script elimino le funzioni per la creazione degli shapefile!!! </b><br>Per creare gli shp utilizzo pgsql2shp e credo il problema stia nel fatto che il comando pgsql2shp produce output: <br><br>"Initializing...<br>Done (postgis major version: 2).<br>Output shape: MultiPoint<br>Dumping: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [5732 rows].<br>...<br>---"</div><div><br></div><div>La funzione completa (tralascio le cose superflue a favore di una maggiore leggibilità) per creare gli shape è: <br>"punti = 'pgsql2shp -f %s%s_punti.shp -h %s -p 5432 -u %s -P %s %s "SELECT ....;"'%(path,f,host,username,password,db)<br>linee = 'pgsql2shp -f %s%s_linee.shp -h %s -p 5432 -u %s -P %s %s "SELECT ...;"'%(path,f,host,username,password,db)<br>poligoni = 'pgsql2shp -f %s%s_poligoni.shp -h %s -p 5432 -u %s -P %s %s "SELECT ..."'%(path,f,host,username,password,db)</div><div><br></div><div>def shp():<br>    try:<br>      os.system(punti)<br>    except:<br>      return<br>    try:<br>      os.system(linee)<br>    except:<br>      return<br>    try:<br>      os.system(poligoni)<br>    except:<br>      return<br><br>mentre per lo zipfile e il download: <br><br>HEADERS = '\r\n'.join(["Content-type: %s;", "Content-Disposition: attachment; filename=%s","Content-Title: %s","\r\n"])<br>def zipFunc(cartella,nome):<br>        escludi = ['*.zip']<br>        for dirname, subdirs, files in os.walk(cartella):<br>            for filename in files:<br>                if not filename.endswith('zip'):<br>                    nome.write(os.path.join(dirname, filename), filename)<br>                    os.remove(os.path.join(dirname, filename))<br>out = StringIO()<br>zip = zipfile.ZipFile(out, "w", zipfile.ZIP_DEFLATED)<br>zipFunc(path,zip)<br>zip.close()<br>out.seek(0)<br>sys.stdout.write(HEADERS % ('application/zip', url,f))<br>sys.stdout.write(out.read())<br>out.close()<br><br>Secondo voi è corretto pensare che il problema sia l'output prodotto da pgsql2shp, se si come eliminare l'errore? Nella documentazione non c'è nessuna opzione che permetta di non stampare output. <br>Magari esiste un'altra strada per ottenere lo stesso risultato? <br>Grazie a tutti <br><br>-beppe- <br style="color:rgb(0,0,0);font-family:Arial,Verdana,Geneva,'Bitstream Vera Sans',Helvetica,sans-serif;font-size:14.6404px;line-height:17.8231px"><br style="color:rgb(0,0,0);font-family:Arial,Verdana,Geneva,'Bitstream Vera Sans',Helvetica,sans-serif;font-size:14.6404px;line-height:17.8231px"><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><font color="#000000" size="2"><b><u>Giuseppe Naponiello</u></b></font></div><div><font color="#000000" size="2"><b><u><br></u></b></font></div><div><b style="color:rgb(136,136,136)"><font size="4"><font color="#ff0000">A</font></font></b><b><font size="4" color="#000000">rc-</font></b><b style="color:rgb(136,136,136)"><font size="4"><font color="#ff0000">T</font></font></b><b><font size="4" color="#000000">eam srl</font></b><br style="color:rgb(136,136,136)"><font color="#000000">piazza Navarrino, 13 - 38023Cles (TN) <br>C.F. e P. IVA IT-01941600221 <br>cell.</font><font color="#888888"> </font><a value="+393476846599" style="color:rgb(17,85,204)">+393476846599</a><br style="color:rgb(136,136,136)"><font color="#000000">mail:</font><font color="#888888"> </font><a href="mailto:beppenapo@arc-team.com" style="color:rgb(17,85,204)" target="_blank">beppenapo@arc-team.com</a><br style="color:rgb(136,136,136)"><font color="#000000">pec:</font><font color="#888888"> </font><a href="mailto:arc-team@pec.it" style="color:rgb(17,85,204)" target="_blank">arc-team@pec.it</a><br style="color:rgb(136,136,136)"><font color="#000000">101 | <a href="http://www.arc-team.com/" style="color:rgb(17,85,204)" target="_blank">www.arc-team.com</a></font><br style="color:rgb(136,136,136)">110 | <a href="http://arc-team-open-research.blogspot.it/" style="color:rgb(17,85,204)" target="_blank">http://arc-team-open-research.blogspot.it/</a></div><div>000 | <a href="https://independent.academia.edu/GiuseppeNaponiello" target="_blank">https://independent.academia.edu/GiuseppeNaponiello</a></div></div></div></div></div>
</div></div>