Open aborruso opened 4 years ago
@jenkin come vedi ci sono anche file che non ci dovrebbero essere. L'ho fatto di corsa e non mi ero accorto del cambiamento del line ending da LF a CRLF.
Non dovrebbero darti alcun problema. Nel caso "bocciami" e rifaccio per bene
Il primo problema che vedo è che lo shapefile pulito ha i nomi di colonna diversi da quello originale istat, sono tutti in minuscolo e c'è un pkuid
nuovo. Sarebbe meglio se la struttura dati e i nomi dei cambi non cambiassero.
La conversione in topojson dello shapefile aggiustato funziona, la puglia è recuperata! :)
La conversione in geobuf fallisce in ogni caso.
Domanda: si riesce a tradurre questo scrit bash che si appoggia a sqlite e ogr2ogr in python con solo dipendenze interne (quindi moduli python installabili via pip)?
Altrimenti l'unica soluzione che mi viene in mente è dockerizzare quello script e lanciare il container da python per avere tutto in un unico comando.
Caro @jenkin, quindi correggere le geometrie è cosa buona.
La conversione dei nomi di campo in minuscolo, è una normalizzazione che viene fatta in import e che credo si possa disabilitare. Il pkuid viene sempre inserito by default e si può "scartare". Per il momento volevo soltanto sapere se la correzione fosse utile.
Sul pythonizzare questo tipo di correzione, non credo ci sia una modalità così "pronta". Guardo un po' in giro
Mi appunto ogr in modalità Python https://gis.stackexchange.com/questions/227396/python-ogr-sql-finding-invalid-geometry
Ma dubito che basti un pip.
Caro @jenkin, quindi correggere le geometrie è cosa buona.
Assolutamente sì!
La conversione dei nomi di campo in minuscolo, è una normalizzazione che viene fatta in import e che credo si possa disabilitare. Il pkuid viene sempre inserito by default e si può "scartare".
Ok, credo sia meglio rimanere coerenti con il nome ufficiale istat dei campi, quindi disabilitiamola. Ok per il pkuid, lo scartiamo in output.
Per il momento volevo soltanto sapere se la correzione fosse utile.
Utilissima! :)
Ma dubito che basti un pip.
No, infatti, mi pare ci siano wrapper in python, ma le librerie di sistema devono essere installate. Prende quota l'ipotesi docker se vogliamo che tutta la pipeline sia portabile.
@aborruso ho provato a buttar tutto dentro docker in #13, ma temo che la tua installazione di spatialite abbia qualche particolarità per supportare la funzione MakeValid
.
caro @jenkin ecco come renderlo compliant a MakeValid
sudo apt-get install sqlite3
sudo apt-get install -y python3-dev build-essential wget libxml2-dev libproj-dev libgeos-dev libsqlite3-dev zlib1g-dev pkg-config && sudo apt clean
sudo apt-get install automake
sudo apt-get install autoconf
sudo apt-get install autotools-dev
git clone https://git.osgeo.org/gitea/rttopo/librttopo.git
cd librttopo
./autogen.sh
./configure
make
make check
sudo make install
wget "https://www.gaia-gis.it/gaia-sins/freexl-1.0.5.tar.gz" && tar zxf freexl-1.0.5.tar.gz \
&& cd freexl-1.0.5 && ./configure && make
sudo make install
cd ..
wget http://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-5.0.0-beta0.tar.gz
tar zxf libspatialite-5.0.0-beta0.tar.gz
cd libspatialite-5.0.0-beta0
./configure --enable-rttopo=yes --enable-gcp=yes
make -j8
sudo make install-strip
sudo /sbin/ldconfig -v
@aborruso ok, ho provato a metter dentro la compilazione delle librerie come indicato, ma l'errore rimane lo stesso... possibile che continui a usare la libreria di sistema (dal repo dei pacchetti) invece che quella compilata?
@aborruso ok, ho provato a metter dentro la compilazione delle librerie come indicato, ma l'errore rimane lo stesso... possibile che continui a usare la libreria di sistema (dal repo dei pacchetti) invece che quella compilata?
questo comando viene lanciato alla fine sudo /sbin/ldconfig -v
??
Si occupa di fare pulizia sui puntamenti alle librerie
questo comando viene lanciato alla fine
sudo /sbin/ldconfig -v
??Si occupa di fare pulizia sui puntamenti alle librerie
Scusami, ho visto che già è così :(
Mumble ....
@jenkin ho visto il log e non vedo nulla di strano.
Ti chiederei di fare due cose:
Grazie
@aborruso ho risolto con un link esplicito alla libreria.
Ora non resta che sostituire lo script bash con istruzioni all'interno di main.py e poi ci siamo.
Mitico Ale!!!
Caro @jenkin , ho creato uno script sh, basato su sqlite e spatialite, che a partire (al momento) da uno solo dei tuoi file di output, fa il check sulla presenza di geometrie con errori, e nel caso le "pulisce".
Per il momento è tutto nel branch "analisiGeoemtrie".
In output si ottiene:
Potresti provare se la parte python che al momento ti va in errore con alcune conversioni, non va in errore con l'output di questo processo.
Se sì, poi mettiamo tutto in un pipeline in loop.