teamdigitale / confini-amministrativi-istat

Una collezione di applicazioni e risorse per facilitare il riuso dei dati sui confini amministrativi italiani.
Other
16 stars 6 forks source link

Primo test analisi geometrie #12

Open aborruso opened 4 years ago

aborruso commented 4 years ago

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.

aborruso commented 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

jenkin commented 4 years ago

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.

jenkin commented 4 years ago

La conversione in topojson dello shapefile aggiustato funziona, la puglia è recuperata! :)

jenkin commented 4 years ago

La conversione in geobuf fallisce in ogni caso.

jenkin commented 4 years ago

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.

aborruso commented 4 years ago

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

aborruso commented 4 years ago

Mi appunto ogr in modalità Python https://gis.stackexchange.com/questions/227396/python-ogr-sql-finding-invalid-geometry

Ma dubito che basti un pip.

jenkin commented 4 years ago

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! :)

jenkin commented 4 years ago

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.

jenkin commented 4 years ago

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

aborruso commented 4 years ago

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
jenkin commented 4 years ago

@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 commented 4 years ago

@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

aborruso commented 4 years ago

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 commented 4 years ago

Ti posso allegare il log della build del container: build.log.

aborruso commented 4 years ago

@jenkin ho visto il log e non vedo nulla di strano.

Ti chiederei di fare due cose:

Grazie

jenkin commented 4 years ago

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

aborruso commented 4 years ago

Mitico Ale!!!