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
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[email protected]
http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.