[Gfoss] Tabelle

Alessandro Furieri a.furieri a lqt.it
Lun 3 Mar 2008 10:59:55 CET



Andrea Peri ha scritto:
>> Questa cosa e' da non fare mai !!!
>> perche' si perde l'allineamento tra la parte geometrica (.shp) e
>> quella alfanumerica (.dbf).
>>
>> Nel senso che a 1 record nel dbf deve corrispondere 1 record nel file .shp.
>> E questa e' una regola ferrea per lo shapefile.
>>
>> Addirittura e' altrettanto importante che alla prima geometria
>> corrisponda il primo record nel dbf.
>> Alla seconda geometria corrisponda il secondo record.
>> Per cui altra cosa da non fare e' riordinare i records nel dbf !!!.
>>     
giusto amor di precisione, non è proprio esattamente così ...
a) il DBF ha una struttura con record a lunghezza fissa, e dichiara 
nell'header
    sia quanti record contiene che quale è la lunghezza record in bytes;
    quindi è molto facile sia leggerlo sequenzialmente oppure posizionarsi
    su di un record arbitrario a piacere
b) lo SHP ha una struttura con entità a lunghezza variabile [una polilinea
    con 2 vertici occupa ovviamente molto meno spazio di una con 1.000
    vertici]
c) poi però la "terna" shapefile prevede anche lo SHX, che ha una
    lunghezza record fissa, e che contiene l'OFFSET associato all'entità
    geometrica contenuta nello SHP
============================
Quindi il "modo giusto" per interpretare gli shapefiles è il seguente:
- si legge la riga N dello DBF e si recuperano gli attributi informativi
- se legge la riga N dello SHX
- quindi si "salta" [fseek() o anologhi] nello SHP all'offset indicato
   sullo SHX e si recupera l'entità geometrica corrispondente

Ergo non esiste nessun vincolo tale da imporre una corrispondenza
1:1 tra le righe del DBF e quelle dello SHP, almeno "da specifica ESRI".

Purtoppo molti pacchetti "shape-like" ignorano del tutto lo SHX,
o lo gestiscono in modo  molto fantasioso e/o perverso, e quindi
occorre utilizzare la "corrispondenza forzata 1:1" tra DBF e SHP
di cui parla Andrea come soluzione di ripiego per potere ignorare
gli SHX mal generati.

Insomma: "prima ci si distacca dallo standard, poi si
creano pastrocchi vari per sopravvivere al caos,
ed alla fine il pastrocchio diventa lo standard de facto"

... questa situazione non mi è nuova ...

ciao Sandro Furieri





Maggiori informazioni sulla lista Gfoss