JOIN SHP-DBF

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

JOIN SHP-DBF

marcozanieri@geosweb.it
Salve,
sto provando ad eseguire una join fra uno shape ed una
tabella dbf utilizzando gli ftools, precisamente lo
strumento "Unisci Attributi"; quando vado ad inserire il
percorso della tabella dbf mi compare il seguente errore:

Errore durante l'esecuzione di codice Python:

Traceback (most recent call last):
  File "C:\Programmi\Quantum GIS
Mimas\python\plugins\fTools\tools\doJoinAttributes.py", line
137, in inFile
    self.updateTableFields()
  File "C:\Programmi\Quantum GIS
Mimas\python\plugins\fTools\tools\doJoinAttributes.py", line
145, in updateTableFields
    table = list(self.dbfreader(f))
  File "C:\Programmi\Quantum GIS
Mimas\python\plugins\fTools\tools\doJoinAttributes.py", line
327, in dbfreader
    assert terminator == '\r'
AssertionError

Versione Python:
2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit
(Intel)]

Sentiero Python:['C:/Programmi/Quantum GIS Mimas/./python',
'C:/Documents and
Settings/marco/.qgis//python/plugins\\symbology_ng',
'C:/Documents and
Settings/marco/.qgis//python/plugins\\symbology_ng',
'C:/Documents and Settings/marco/.qgis//python/plugins',
'C:/Programmi/Quantum GIS Mimas/./python/plugins',
'C:\\Programmi\\ArcGIS\\bin', 'C:\\Programmi\\Quantum GIS
Mimas\\bin\\python25.zip', 'C:\\Python25\\Lib',
'C:\\Python25\\DLLs', 'C:\\Python25\\Lib\\lib-tk',
'C:\\Programmi\\Quantum GIS Mimas', 'C:\\Programmi\\Quantum
GIS Mimas\\bin', 'C:\\Python25',
'C:\\Python25\\lib\\site-packages',
'C:\\Python25\\lib\\site-packages\\win32',
'C:\\Python25\\lib\\site-packages\\win32\\lib',
'C:\\Python25\\lib\\site-packages\\Pythonwin',
'C:\\Programmi\\Quantum GIS
Mimas\\python\\plugins\\fTools\\tools', 'C:\\Documents and
Settings\\marco\\.qgis\\python\\plugins\\cataloginpecreate\\logic'
, 'C:\\Documents and
Settings\\marco\\.qgis\\python\\plugins\\cataloginpecreate\\gui'
, 'C:\\Documents and
Settings\\marco\\.qgis\\python\\plugins\\cataloginpequicklookorder\\logic'
, 'C:\\Documents and
Settings\\marco\\.qgis\\python\\plugins\\cataloginpequicklookorder\\gui'
, '~/.qgis/python', 'C:\\Documents and
Settings\\marco\\.qgis\\python\\plugins\\GdalTools\\tools',
'/usr/share/qgis/python/', '/usr/share/qgis/python/', '.',
'.']

Sto utilizzando il Qgis 1.3 e l.4 dev su winxp....
E' un problema di librerie?
Dimenticavo...se provo ad eseguire la join fra 2 shapes
nessun problema...

Grazie a tutti.
marco zanieri
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/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.
Reply | Threaded
Open this post in threaded view
|

Re: JOIN SHP-DBF

Stefano Costa
Il giorno dom, 10/01/2010 alle 10.31 +0100, [hidden email] ha
scritto:

>
> sto provando ad eseguire una join fra uno shape ed una
> tabella dbf utilizzando gli ftools, precisamente lo
> strumento "Unisci Attributi"; quando vado ad inserire il
> percorso della tabella dbf mi compare il seguente errore:
>
> Errore durante l'esecuzione di codice Python:
>
> Traceback (most recent call last):
>   File "C:\Programmi\Quantum GIS
> Mimas\python\plugins\fTools\tools\doJoinAttributes.py", line
> 137, in inFile
>     self.updateTableFields()
>   File "C:\Programmi\Quantum GIS
> Mimas\python\plugins\fTools\tools\doJoinAttributes.py", line
> 145, in updateTableFields
>     table = list(self.dbfreader(f))
>   File "C:\Programmi\Quantum GIS
> Mimas\python\plugins\fTools\tools\doJoinAttributes.py", line
> 327, in dbfreader
>     assert terminator == '\r'
> AssertionError
Sembra che si aspetti di trovare un file DBF con linee che terminano in
'\r' (Carriage Return per capirci) e invece non è così.

Il DBF che usi come è creato?

Ciao,
steko

--
Stefano Costa
http://www.iosa.it/ Open Archaeology

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/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.

signature.asc (205 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: JOIN SHP-DBF

Andrea Peri
In reply to this post by marcozanieri@geosweb.it
>Sembra che si aspetti di trovare un file DBF con linee che terminano in
>'\r' (Carriage Return per capirci) e invece non è così.
>
>Il DBF che usi come è creato?

Permettetemi di contribuire con una utile informazione in merito al formato DBF, che conosco molto bene fin dai tempi di Aston-Tate.

Il formato dbf e' stato promulgato dalla societa' ASton-tate negli anni 80.
La versione piu' diffusa era la versione 3 (DbaseIII).
Una delle caratteristiche di tale formato. Quella che penso sia alla base dell'errore che state incontrando e' che
nel caso di campi testuali, il formato originale prevedeva che il campo venisse comunque sempre riempito con degli spazi,

ovvero se il campo testuale era di 20 caratteri e ci si voleva immettere il valore "pippo",
nel file dbf esso sarebbe stato memorizzato come

"pippo "

La ragione di questo era legata al fatto che i records erano posizioneli, ovvero
ogni record era sempre a lunghezza fissa e se si voleva rintracciare il 12-mo record
bastava moltiplicare il numero di record con l'ampiezza del record (che era fissa), ci si sommava l'header , anche esso a lunghezza fissa
e si otteneva cosi' l'offset che occorreva usare per rintracciare l'inizio del 12-mo record.

Purtroppo in seguito al grande successo che ottenne il formato dbf, molti produttori concorrenti, anche per non pagare eventuali royalites,
cominciarono a sviluppare delle librerie che inserivano piccole differente nel formato, sempre cercsndo di salvaguardare una certa compatibilita'.

Un esmepio di prodotto che usava il formato dbf era il compilatore "clipper".
Il quale pero' introdusse una variante.

Ovvero nel caso di campi testuali inseriva un carattere di fine testo, oltre a completare il campo con gli spazi (ovviamente).

per cui la famosa frase "pippo", che nel dbf standard veniva memorizzata come
"pippo "


nei dbf prodotti dal clipper veniva memorizzata come
"pippo\0 "


Chiaramente queste piccole differenze avevano l'effetto che in certi casi si aveva dei malfunzionamenti , specie quando avvenivano dei cross-exchange, ovvero
degli scambi tra file dbf prodotti in un ambiente e letti in un altro.

Io credo che nel vostro caso ci si trovi in una situzione analoga, ovvero il file dbf e' stato prodotto in un certo ambiente, pero' la libreria che
tenta di leggerlo (su python) si aspetti che i valori immessi nei campi testuali abbiano sempre il carattere \r.
Da qui l'errore.




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


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/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.