[Gfoss] Tabelle

a.furieri a lqt.it a.furieri a lqt.it
Lun 3 Mar 2008 13:41:54 CET


On Mon, 3 Mar 2008 11:16:43 +0100, Andrea Peri wrote
> Scusa, ma devo contraddirti decisamente.
> Il file .shx non ci entra niente con l'abbinamento tra 
> geometria e attributi.
> Esso contiene solo l'indicizzazione spaziale, e qui non centra,
> perche' l'indicizzazione spaziale non rappresenta il legame tra
> attributi nel dbf e geometria nel .shp.

Scusami te, ma rimango della mia idea.
Continuo a pensare che la via "meno rischiosa"
per associare geometrie ed attributi è proprio
quella di basarsi sull'SHX.

Sempre da http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
[i.e. la ben nota specifica ESRI ufficiale che rende 
shapefile un formato pubblicamente documentato]:

a) shp record header:
   Byte 0   Record Number   Integer BigEndian
   Byte 4   Content Length  Integer BigEndian

b) shx record:
   Byte 0   Offset Offset   Integer BigEndian
   Byte 4   Content Length  Integer BigEndian

- The main file is a direct access, variable-record-length 
  file in which each record describes a shape with a list 
  of its vertices. 
- In the index file, each record contains the offset of the
  corresponding main file record from the beginning of the 
  main file. 
- The dBASE table contains feature attributes with one record per 
  feature. The one-to-one relationship between geometry and 
  attributes is based on record number.

Quindi le strutture dati che consentono di associare
dinamicamente geometria ed attributi informativi con
accessi random che usano l'SHX come struttura guida
ci sono tutte. Poi però ti dicono anche:

- Attribute records in the dBASE file must be in the 
  same order as records in the main file.

Insomma, quanto meno ci sono un paio di ridondanze 
[ambiguità ? contraddizioni ?] di troppo che si prestano  
anche troppo bene ad interpretazioni ed implementazioni 
"varie", in primis da parte di ESRI stessa.

Infatti posso dirti per esperienza personale che tutti i 
non pochi shapes che mi sono capitati sotto mano che 
non presentavano per nulla una corrispondenza 1:1 
nell'ordinamento del DBF e dello SHP erano sicuramente 
stati generati con ArcView e/o ArcGis.

> Prova ne e' che in assenza del file .shx e' sempre possibile
> recuperare il corretto abbinamento tra dbf e shp. Al riguardo qualche
> mese fa' vi fu' un thread su questo argomento e su un programmino che
> si chiamava "shapecheck".

Qui siamo in pieno hacking "a rischio".
Uno shapefile privo di SHX [oppure che presenti uno SHX
corrotto / malformed] sarebbe sempre meglio considerarlo
come "non utilizzabile"; non dubito affatto che nel 90%
dei casi si possa ricostruire lo shx a partire dai soli
shp+dbf, ma si tratta comunque di "operazioni a luci rosse"

ciao Sandro Furieri




Maggiori informazioni sulla lista Gfoss