Closed pigreco closed 1 year ago
Ciao @pigreco nel tuo file di esempio il file si chiama butta15b_Dissolve1
e non butta15a_Dissolve1
.
E inoltre manca proprio quello con estensione shp, manca butta15b_Dissolve1.shp
.
Non ho capito qualcosa io?
Caro @pigreco il kernel linux sotto wsl, è ottimizzato per girare nelle cartelle linux di wsl.
La tua home linux la raggiungi con cd ~
. Se dai poi pwd
avrai la stampa del percorso (non serve, è soltanto per curiosità).
Crea qui una cartella di lavoro mkdir -p tmp
e poi entraci dentro.
Una volta dentro puoi aprirla in esplora risorse e metterci i tuoi file (basta che dai explorer.exe .
per aprire la cartella)
Rilancia il comando dalla shell da quella cartella (~/tmp
).
Detto questo, ogr non è una scheggia per queste cose, specie con i dbf. Da me lo fa in circa 8 secondi.
Magari da spatialite è tutto più rapido
Un'altra modalità potrebbe essere quella di estrarre il CSV da id15a_to_ZON_IN_12113_t
e poi usare mapshaper per un join tra l'shp e il CSV.
Immagino che sia molto veloce
ogr2ogr -f "CSV" id15a_to_ZON_IN_12113_t.csv id15a_to_ZON_IN_12113_t.dbf
E poi un esempio generale di JOIN in mapshaper è
mapshaper states.shp -join demographics.txt keys=STATE_FIPS,FIPS string-fields=FIPS -o out.shp
Con string-fields
forzi eventuali campi da forzare come stringa, e con keys
i campi chiave.
Caro @aborruso, ricordo che me lo hai già spiegato varie volte, ma utilizzandolo poco lo scordo sempre:
Da me lo fa in circa 8 secondi.
da me poco meno di 4 sec:
grazie :-)
@aborruso
Un'altra modalità potrebbe essere quella di estrarre il CSV ...
è imbarazzante, meno di un secondo:
nello script.sh
#!/bin/bash
ogr2ogr -f "CSV" id15a_to_ZON_IN_12113_t.csv id15a_to_ZON_IN_12113_t.dbf
mapshaper butta15a_Dissolve1.shp -join id15a_to_ZON_IN_12113_t.csv keys=FIRST_SubR,SubRegID string-fields=FIRST_SubR,SubRegID -o out.shp
Sarà una bella ricetta
Ricetta fatta e pubblicata
https://tansignari.opendatasicilia.it/ricette/bash/velocizzare_una_join_tabellare/
grazie mille chiudo
Il seguente costrutto permette di fare una join tabellare tra uno shapefile e una tabella dbf; entrambi i file hanno meno di 3000 record, ma la join impiega oltre 40 secondi.
ho letto qui che è possibile velocizzare le join creando un indice:
ma non noto benefici, anzi sembra che impieghi più tempo, dai 46 sec a 48 sec.
cosa sbaglio?
forse l'indice va creato su entrambi i campi correlati? no, non migliora :-(
--
file: dati_test.zip
uso
GDAL 3.4.0, released 2021/11/04
su Ubuntu 20.04