[Gfoss] Segnalazione in merito a incompatibilita' sugli shapefiles di QGIS

a.furieri a lqt.it a.furieri a lqt.it
Gio 27 Ott 2016 12:43:25 CEST


On Thu, 27 Oct 2016 03:30:42 -0700 (MST), Marco Curreli wrote:
> Ho scoperto che i record cancellati si vedono se si apre il dbf con 
> un
> editore di testo, oppure con cat (su linux): logical-delete.dbf 
> aperto in
> questo modo ha una riga come questa:
>
>  a aa aaa aaaa 1.00000000000 11.00000000000  1*b bb bbb bbbb 
> 2.00000000000
> 22.00000000000 1*c cc ccc cccc 3.00000000000 33.00000000000 1
>
> (su un'unica riga, coi singoli campi molto piĆ¹ distanziati).
>

Marco,

esattamente: il problema e' proprio questo.

il formato DBF prevede che tutte le righe che iniziano con un
carattere '*' (asterisco) nel primo byte indicano una "cancellazione
logica", e la riga corrispondente dovrebbe essere sempre ignorata
proprio come se non esitesse affatto. di conseguenza anche per lo
shapefile nel suo complesso la feature corrispondente dovrebbe
essere completamente scartata.

se ci fai caso, sia davanti al record con tutte 'b' che davanti
a quello con tutte 'c' ci trovi l'asterisco, mentre sul primo
(quello con tutte 'a') ci trovi invece uno spazio, che indica
"ok, record perfettamente valido".

il problema vero e' che molte implementazioni che supportano
gli Shapefiles ignorano le "cancellazioni logiche", e quindi
poi ti trovi precipitato nel bel mezzo del girone infernale
abbondantemente descritto da Andrea Peri.

una buona implementazione realmente conforme e pienamente
interoperabile non dovrebbe _MAI_ lasciare record con le
micidiali "cancellazioni logiche" all'interno del DBF; le
dovrebbe sempre eliminare fisicamente facendo un'operazione
di REPACK prima di chiudere la sessione di lavoro.
se questo non e' assicurato entri in zona "allarme rosso"

ciao Sandro


Maggiori informazioni sulla lista Gfoss