Domanda

Ho lavorato con il formato shapefile ESRI in questo momento e ho qualche problema con la modifica / modifica delle dimensioni del campo del database. Ho creato un campo con 200 lunghezza / dimensione e ora voglio solo 80 lunghezza / dimensione (spazio e altri miglioramenti).

Tuttavia non posso più modificare le dimensioni del campo :( qualcuno può indicare come cambiare le dimensioni del campo?

Tra l'altro ho provato utility come DBF Explorer che possono modificare la dimensione del campo, ma quando cambio la dimensione del campo sul campo char / text, i dati sul campo float / numerico vengono cancellati :(
DBF Explorer

PS: il database ESRI usa l'estensione .dbf, che penso fosse il formato DBASE III plus o DBASE IV

È stato utile?

Soluzione

Puoi modificare l'intestazione del file per cambiarlo con qualsiasi editor esadecimale.

byte 10-11: rappresenta il decimo di un record (prima il byte meno significativo)

a partire dal byte 48 una struttura ripetuta (48 byte ciascuno) che descrive il campo. Il byte 33 di questa struttura rappresenta la lunghezza.

Altri suggerimenti

NON modifica l'intestazione, i dati sono allineati da offset fisso e cambiando la dimensione del campo in qualcosa che non corrisponde al fisico lunghezza del record SARÀ corrotto il tuo tavolo.

Avrai bisogno di qualcosa in grado di leggere / scrivere DBF per farlo efficacemente. Una vecchia installazione di DBase funzionerà, anche se staresti meglio con Visual FoxPro (il comando FoxPro sarebbe MODI STRU che è l'abbreviazione di " MODIFY STRUCTURE ") . Vorrei anche cercare altri strumenti per spingere / estrarre i dati in altri formati. Se si ha accesso ad Access (scusate il gioco di parole), è sempre possibile importare i dati in Access come una tabella di Access, ristrutturare la tabella, quindi esportarla, anche se a partire da Access 2007, il supporto nativo DBF / FoxPro è stato più o meno rimosso, che richiede ODBC. Altre misure (che richiedono più tempo) sarebbero:

  • guarda usando Excel (a condizione che i dati hanno pochissime righe, le versioni precedenti possono gestire solo 32k o 64k righe in totale)
  • usa alcuni Python per leggere / scrivere dati (fai un cerca su SO per queste informazioni)
  • una variante di quanto sopra in Perl / Ruby / {inserire il linguaggio di scripting preferito con una libreria DBF}
  • usa ODBC + {inserisci database cheapo qui} + {inserire lo strumento di amministrazione cheapo per database cheapo che può modificare una tabella qui} + esportazione da {database cheapo}

Per modificare la dimensione del campo in un file .dbf uso OpenOffice. In OpenOfficeSpreadsheet il nome di dominio .dbf sarebbe presentato come "FEILDNAME, C, 200". Per modificare la dimensione da 200 - > 80 dovresti cambiare il nome del campo in: " FEILDNAME, C, 80 " e quindi salva il file .dbf.

Il suo DBASE III (sorta di).

Il file dbf contiene sia i metadati (come dimensioni e tipo di campo) sia i dati. Sono tutti memorizzati a dimensione fissa.

Non ricordo se esistono strumenti per modificare le dimensioni del campo, ma è possibile creare una nuova tabella e copiare i dati. Ma il formato non è così difficile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top