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

Andrea Peri aperi2007 a gmail.com
Gio 20 Ott 2016 14:01:23 CEST


SI, confermo.
Ma appunto il problema e' sapere quando siamo in una tale situazione.

Gia' sarebbe utile che qgis segnalasse la presenza di records cancellati.
Ma la risoluzione tramite l'esportazione poi introduce altri problemi.
(il mondo e' proprio difficile)

L'ideale sarebbe stato che QGIS, quando si apre lo shapefile in
editing e poi si richiude la sessione di editing, il QGIS anziche'
lasciare tutto intonso provvedesse lui a a rimuovere i records
cancellati logicamente.

Questo sarebbe preferibile piuttosto che costringere a esportarli.
Perche' la procedura di esportazione introduce altri tipi di problemi.

Un per tutti.
Nella versione 2.8 di qgis, ricordo bene che quando si esportava in
formato shapefile.
Ci si ritrovva con tutti i campi testuali a 255 caratteri.

Lo ricordobene perche' shapefiles con milioni di records divenivano giganteschi.
Te pensa infatti un dbf con 30 campi testuali da 10-15 caratteri
ciascuno = 450 bytes per record.
Se passi a 255 caratteri per campo testuale ti ritrovi che il singolo
record occuperebbe 7.650 bytes.
Se applichi questa cosa a uno shapefile che contiene chesso' 200.000
records vedi subito che ci sta la sua bella differenza.

Lo ricordo bene questo fatto su qgis 2.8
Da allora non esporto piu' gli shapefile da qgis, ma bensi' da spatialite.
Il quale a differenza di qgis esegue il conteggio dello spazio
occupato e mi ridimensiona i campi al mnimo necessario.

Per cui se vede che in un campo al massimo servoo 4 caratteri, crea un
campo da 4 caratteri.

QUESTO E' MEGLIO PERCHE' OCCUPA MENO SPAZIO DISCO E MENO BANDA A SCARICARE,
ma anche questo secondo me non va bene.

Perche' se io ho uno shapefile che da specifica , su un campo deve
avere 32 caratteri, ritrovarmi con uno shapefile che su tale campo ha
255 caratteri oppure ne ha 4 (perche' al momentolo shapefile al
massimo ha dati che occupano 4 caratteri) non e' corretto.

Perche' potrebbe succedere che poi devi aggiungervi un ulteriore
record che sfora i 4 caratteri, ma sempre dentro la specifica
originaledi 32 e scopri che lo shapefile non lo accetta.

Questo e' per dettagliare che l'esportzione porta dietro i suoi bei
problemini anche quella.
E quindi alla fine tra records cancellati logicamente ma sempre
prsenti, esportazioni che fannocrescere mmolto le dimensioni dei files
oppure che restringono i domini previsti per i campi,
ci si trova sempre in grossi dilemmi.

La migliore soluzione sarebbe che preso atto che la specifica
shapefile non ammette la presenza dei records cancellati logicamente,
i nuovi qgis dovrebbero segnalare la presenza di questi records e nel
caso correggerli di loro iniziativa quando si apre e si richiude una
sessione di editing.

Senza costringere a esportazioni che fanno poi nascere altri problemi.

Chiedo scusa se sono andato OT, ma immagino che queste cose siano
sostanzilament eutili per chi lavora in questo settore.
Considerato che non sono affatto cose banali nemmeno per chi ha riesce
a orizzontarcisi.


A.

Cosa che puo' provocare la crescita abnorme della compoenente dbf
nello shapefile.

A onor del vero questa cosa della conversione dei campi testo a 255
caratteri la scoprii su qgis 2.8.
Da allora non uso piu' qgis per generare gli shapefiles, ma passo
sistematicamente da spatialite che invece eseguendo ilconteggio dei
caratteri mi ottimizza lo spazio disco.

A onor del vero nessuno dei due andrebbe bene, perche' se io ho uno
shapefile con 52 caratteri su un campo testuale, vorrei che restassero
52 perche' sicuramente ci sar'a una specifica che dice cio'. E
ritrovarmi con campi di 255 caratteri mi porta a file abnormi, e
invece con campi minimizzati , rischio di divenire incompatibile con
la specifica.




Il 20 ottobre 2016 13:11, Sandro Santilli <strk a kbt.io> ha scritto:
> On Thu, Oct 20, 2016 at 12:56:20PM +0200, Andrea Peri wrote:
>
>> Se chi ha prodotto lo shapefile ha usato un qgis ed e' passato dalle
>> grinfie di un qgis inferiore alla 2.14.x esso puo' contenere dei dati
>> che non dovrebbero esserci (perche' cancellati).
>
> [...]
>
>> Le nuove versioni diqgis hanno risolto il problema in maniera parziale.
>> Infatti non marcano piu' una finta cancellazione sui dati che vengono editati.
>> Ma non correggono il problema sugli shapefile antecedenti.
>
> Non ho provato direttamente, ma mi e' stato detto che salvando
> lo shapefile incriminato, attraverso l'ultima versione di QGIS
> (2.17.x o 2.14.x), i record cancellati "logicamente" vengono
> definitivamente rimossi. Non confermi ?
>
>> Per risolvere non basta adottare l'ultima versione di GQIS; perche'
>> esso non consente di rilevare il problema negli shapefile e
>> correggerli.
>
> Credi debba solo avvertire, in fase di caricamento, della presenza di
> record cancellati ?
>
> Esiste un ticket sul bug tracker di QGIS attraverso cui seguire
> l'evoluzione di questo problema che mi pare ti affligga da tempo ?
>
> Io ho appena terminato di lavorare alla chiusura di bug marchiati
> come "severi" sul tracker, ma non ne ho visto nessuno a proposito
> di questo problema (forse non sono marchiati come "severi"?)
>
> --strk;



-- 
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------


Maggiori informazioni sulla lista Gfoss