Supporto per la codifica dei caratteri in geodatabase e shapefile


11

Ho diversi geodatabase che includono classi di caratteristiche con lettere greche in molti attributi. Quando provo ad esportare una feature class come shapefile da ArcCatalog, gli attributi vengono macellati nei dati dello shapefile, una sorta di problema di codifica dei caratteri (si presentano così nella forma: ?? etr ?? e?). La stessa cosa accade quando uso ogr2ogr in FWtools per convertire i layer dall'MDB in KML, shp, ecc.

Qualcuno ha esperienza nel tentativo di gestire i formati di codifica in tutti i formati di dati GIS?

Il vero obiettivo qui è quello di ottenere alcuni dati da questi geodatabase Esri in un database Postgres / PostGIS, ma la codifica non funzionante non funzionerà. Stavo per esportare dai geoDB in shapefile, quindi caricarli con shp2pgsql. È questo il percorso più semplice per arrivarci?


2
È possibile utilizzare QGIS per importare il file shap con l'opzione CP1256 ed esportarlo con UTF8 per evitare problemi non Unicode

Risposte:


10

Penso che tu sia in parte lì. Puoi usare iconvper convertire da una codifica a un'altra e puoi usarla come parte del shp2pgsqlprocesso. Per esempio:

shp2pgsql *postgrestablename* | iconv -f *sourceencoding* -t *targetencoding* | psql -d *yourdatabase*

Se lavori in un ambiente Linux, iconvdovresti già installarlo. Per Windows ho trovato LibIconv per Windows . Ma non ho esperienza di utilizzo iconvin Windows, quindi non posso garantirlo.

Spero che questo ti aiuti!

Jo


Il problema si verifica prima che shp2pgsql possa essere applicato. Gli attributi nel file di forma sono già rotti se capisco correttamente.
underdark


underdark, hai ragione. I dati non sono corretti prima di poter accedere al passaggio shp2pgsql.
Colemanm,

Grazie, mwalker ... la soluzione ha funzionato in modo fantastico finora! Ho cambiato il formato CodePage in UTF-8 e i dati DBF dello shapefile mostrano ora i caratteri corretti. Inoltre, utilizzando il caricatore di shapefile PostGIS in QGIS, anche i dati nel database PostGIS sono corretti.
Colemanm,

6

Di seguito i dettagli del processo che ho usato per convertire un file GeoDataBase con campi arabi in shapefile con codifica UTF-8 che si aprono felicemente sia in QGIS che in ArcMap mostrando correttamente sia l'arabo che l'inglese (senza usare estensioni per esportare o leggere):

  • L'idea di base è: dall'FGDB esporta un file di forma che includa un .dbf (nella codifica errata), quindi esporta la tabella degli attributi dello stesso livello del testo (nella codifica corretta, che è UTF-8), e usa un altro programma per sostituire il contenuto del file di forma .dbf con i campi dati UTF-8 appropriati e salvare il file .dbf con codifica UTF-8. Quindi aggiungere un file .cpg a ciascun file di forma per informare ArcGIS della nuova codifica del file .dbf. passi:

1) Aggiungi i livelli dall'FGDB in ArcMap (ho usato 10.1, ma non c'è assolutamente motivo per cui non funzioni nelle versioni precedenti, perché il bit di codifica avviene in seguito, al di fuori di Arc). Per esportare, fai clic con il pulsante destro del mouse su un livello e scegli Dati-> Esporta dati, fai clic sul pulsante della cartella nella finestra di dialogo di esportazione per visualizzare la finestra di dialogo Salva e scegli Shapefile come formato di output.

1b) Metodo alternativo al precedente: vai all'FGDB in ArcCatalog, fai clic con il pulsante destro del mouse, scegli Esporta -> In Shapefile (multipli) ed esporta l'intero FGCB come una cartella piena di shapefile in una singola operazione).

2) Ora hai una serie di shapefile con incomprensioni dove dovrebbe trovarsi la scrittura araba (sulla mia macchina mostrava punti interrogativi al posto dei caratteri). Le porzioni .dbf degli stessi shapefile, aperte in Excel o qualsiasi altra cosa, sono incomprensibili anziché arabe; non è semplicemente un problema di visualizzazione nel programma GIS, è che i file .dbf stessi non contengono i caratteri arabi. Non ancora utile.

3) In ArcMap, apri la tabella degli attributi di un livello dall'FGDB. La tabella si apre con l'inglese e l'arabo che mostrano correttamente (ecco perché FGDB è stato usato in primo luogo). Nel menu Opzioni tabella della finestra Tabella attributi, scegli Esporta e nella finestra di dialogo Esporta dati fai clic sul pulsante della cartella di output per accedere alla finestra di dialogo Salvataggio dei dati in cui scegli File di testo come tipo di output. Ora hai un file di testo che si aprirà in Blocco note con delimitatori di virgola, codificato come UTF-8, con inglese e arabo correttamente codificati (l'arabo dovrebbe, a questo punto, essere visualizzato correttamente in Blocco note).

Ora per ottenere queste informazioni nelle porzioni .dbf dei file di forma!

4) Apri LibreOffice Calc, un clone Excel gratuito e open source che apre, manipola e salva facilmente i file .dbf, per aprire il file .dbf di uno shapefile.

A proposito, in questo caso non sto usando LibreOffice invece di MS Office per motivi ideologici, ma semplicemente perché non riesco a capire come fare in modo che Excel salvi un file .dbf, che è facile in Calc, infatti è il opzione predefinita quando si preme Salva dopo aver aperto e modificato un file .dbf in Calc, mentre Excel indica in realtà che il file "non può essere salvato nel formato corrente" e offre in modo non molto utile di "salvarlo come formato più recente" (non viene visualizzata alcuna opzione per .dbf). Esistono estensioni / plugin per Excel che pretendono di fare il lavoro (

Il file .dbf in Calc mostra ancora il gibberish al posto dell'arabo. Inoltre, apri il file .csv che hai esportato dalla tabella degli attributi dello stesso file di forma, assicurandoti di specificare UTF-8 come codifica (e virgole come delimitatori) nella finestra di dialogo di apertura. I file di testo devono essere aperti in un secondo foglio di calcolo Calc con l'arabo visualizzato correttamente e devono contenere le stesse colonne del .dbf più una colonna OBJECTID all'inizio. Copia e incolla le colonne dal file .csv contenente l'arabo corretto nel file .dbf (in realtà ho appena incollato l'intera tabella con l'eccezione della colonna ID più a sinistra per risparmiare tempo; le informazioni sono comunque identiche). Premi Salva nel .dbf modificato in LibreOffice (ti chiederà se vuoi davvero usare un formato strano come .dbf; sì, lo fai).

Ripetere questo processo per tutti i componenti .dbf dei file di forma dall'FGDB, sostituendo tutte le colonne senza senso con le stringhe arabe.

5) Non appena hai salvato le porzioni .dbf con le colonne arabe incollate, puoi aprire gli shapefile in QGIS e funzioneranno correttamente in entrambe le lingue, a condizione che specifichi UTF-8 come codifica nel vettore di importazione Finestra di dialogo file. Tuttavia, non funzioneranno ancora correttamente in ArcGIS (o almeno non in tutte le versioni) perché ArcGIS non riconosce automaticamente la codifica né ti consente di sceglierla quando aggiungi lo shapefile a un progetto. Arc ha bisogno di un componente separato per lo shapefile, chiamato un file di conversione di code page (.cpg), per indicare quale codifica leggere.

6) Utilizzare un editor di testo (blocco note, nano o altro, ma non Word o qualsiasi altro elaboratore di testi) per creare un file di testo contenente solo i cinque caratteri "UTF-8". Salvalo come .cpg per ciascuno dei file di forma (faccio semplicemente clic su una parte del file di forma nella finestra di dialogo Salva con nome, quindi cancello l'estensione e aggiungo .cpg), nella stessa cartella del file di forma (diventa sostanzialmente un'altra parte di Hi il file di forma multiparte). L'estensione .cpg dice ad Arc che questo è un file contenente informazioni sulla codifica del file .dbf; una volta che è raggruppato nel file di forma insieme ai suoi fratelli con lo stesso nome ma con estensione diversa, la codifica del file di forma viene ora automaticamente riconosciuta da ArcGIS.

7) Voila. Ora hai shapefile che contengono stringhe inglesi e arabe, per quanto ne so esattamente come erano nel file GeoDataBase originale. Si aprono nelle mie installazioni di ArcMap e QGIS, e in entrambi i casi le stringhe in entrambe le lingue vengono visualizzate correttamente anche nelle etichette delle mappe.

Avvertenze:

  • Sembra che non tutte le copie di ArcGIS esportino la tabella degli attributi come file di testo correttamente popolato (su almeno un computer, il tentativo di esportare la tabella degli attributi in un file di testo genera un file con solo le intestazioni, non le righe di dati. NON è il comportamento corretto di Arc (ovviamente dovrebbe essere in grado di esportare le tabelle degli attributi come testo), ma potrebbe presentarsi per alcuni utenti, il che rende impossibile il resto dei passaggi.

  • Non sembra che ArcGIS salverà nuovi shapefile con codifica UTF-8. Ciò riguarderà solo gli utenti che desiderano creare nuovi shapefile dai dati, non le persone che desiderano semplicemente visualizzarli, modificarli e utilizzarli per creare mappe. La soluzione alternativa sembra comportare problemi con il registro di Windows come dettagliato qui: ( http://support.esri.com/cn/knowledgebase/techarticles/detail/21106 ). Non ho dovuto occuparmene perché il mio ArcGIS e QGIS sembrano entrambi riconoscere felicemente gli shapefile che ho salvato usando il processo sopra descritto, e posso modificare la geometria e le voci della tabella o persino aggiungere nuovi poligoni con più testo arabo senza evidenti problemi ( anche se Arc non sembra voler salvare nuovi shapefile con la codifica UTF-8, sembra disposto ad aggiornarli / salvarli).

  • Suppongo che la funzionalità di LibreOffice sia la stessa in Windows come sul mio computer. Uso GNU / Linux per la maggior parte del mio lavoro e avvio su Windows solo se ho bisogno di usare ArcGIS o Autocad per un compito o un altro, quindi ho fatto la modifica del file .dbf in Libreoffice in esecuzione su Fedora. Suppongo che funzioni allo stesso modo su Windows, ma non posso verificarlo senza installare LibreOffice sulla mia partizione di Windows e la mia connessione Internet corrente è un po 'lenta per i download non necessari. Esistono plugin per Excel che ti consentono di salvare i file .dbf in una codifica selezionata (exceltodbf.sourceforge.net/, ad esempio), ma non li ho provati. Potrebbero esserci altri modi per manipolare e salvare .dbf, ma non li ho esaminati dopo aver trovato un modo ragionevolmente semplice per farlo con LibreOffice.

  • L'intero problema sembra essere evitabile se si paga l'estensione per Mapping di produzione in ArcGIS, che consente di convertire direttamente FGDB in file di forma con codifica UTF-8 in base a questa pagina: http://resources.arcgis.com/en/help /main/10.1/index.html#//0103000001m1000000 . Perché questa funzionalità piuttosto basilare (Unicode è in circolazione da un po 'di tempo e ci sono molte lingue diverse dall'inglese là fuori) è disponibile solo per quei clienti che pagano un extra è una domanda per ESRI.


0

Dovrai prima capire in che codifica si trovano i dati di input, così puoi dire ai tuoi strumenti come convertire i dati in una codifica appropriata. Se hai Access, proverei ad esportare la tabella in testo direttamente dall'MDB e impostare la codifica di output su UTF8. Se si apre lo shapefile esportato in ArcGIS, la codifica è impostata correttamente? DBF supporta le code page ed è possibile che OGR non raccolga quello corretto per la conversione.

Ci sono anche modi per forzare MDBtools (usato come parte del driver OGR) per impostare esplicitamente il flusso di input, ma prima proverei gli altri approcci.


0

Preferirò andare alla maniera di ArcGIS. Basta impostare la codifica su UTF-8 in ArcGIS seguendo le istruzioni da qui . Dopodiché, esporta le classi di entità geografiche in ShapeFile. Ora otterrai un file CPG aggiuntivo (file della tabella codici) con ogni livello. Questo è solo un file di testo con dentro la stringa "UTF-8" e tutti i tuoi dati vengono automaticamente codificati in UTF-8.

Se sei interessato a utilizzare altre codifiche, consulta le istruzioni.

La cosa importante è che dopo aver terminato questa assegnazione è necessario modificare questa impostazione sul valore predefinito perché se si mantiene questo valore, ad esempio "UTF-8", in futuro ArcGIS esporterà tutti gli ShapeFile utilizzando la codifica "UTF-8".

Spero che ti possa aiutare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.