Prise en charge du codage de caractères dans les géodatabases et les fichiers de formes

11

J'ai plusieurs géodatabases qui incluent des classes d'entités avec des lettres grecques dans de nombreux attributs. Lorsque j'essaie d'exporter une classe d'entités en tant que fichier de formes à partir d'ArcCatalog, les attributs sont supprimés dans les données du fichier de formes, une sorte de problème de codage des caractères (ils ressemblent à ceci sous la forme: ?? etr ?? e?). La même chose se produit lorsque j'utilise ogr2ogr dans FWtools pour convertir des couches de la MDB en KML, shp, etc.

Quelqu'un a-t-il de l'expérience en essayant de gérer les formats d'encodage à travers les formats de données SIG?

Le véritable objectif ici est d'obtenir des données de ces géodatabases Esri dans une base de données Postgres / PostGIS, mais un encodage cassé ne fonctionnera pas. J'allais exporter des geoDB vers des fichiers de formes, puis les charger avec shp2pgsql. Est-ce le chemin le plus simple pour y arriver?

colemanm
la source
2
Vous pouvez utiliser QGIS pour importer le fichier de formes avec l'option CP1256 et l'exporter avec UTF8 pour éviter les problèmes non Unicode

Réponses:

10

Je pense que vous êtes à mi-chemin. Vous pouvez utiliser iconvpour convertir d'un encodage à un autre, et vous pouvez l'utiliser dans le cadre du shp2pgsqlprocessus. Par exemple:

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

Si vous travaillez dans un environnement Linux, il iconvdoit déjà être installé. Pour Windows, j'ai trouvé LibIconv pour Windows . Mais je n'ai aucune expérience de l'utilisation iconvsous Windows, donc je ne peux pas en témoigner.

J'espère que cela t'aides!

Jo

Archaeogeek
la source
Le problème se produit avant que shp2pgsql puisse être appliqué. Les attributs du fichier de formes sont déjà cassés si je comprends bien.
underdark
underdark, vous avez raison. Les données sont mauvaises avant de pouvoir passer à l'étape shp2pgsql.
colemanm
Merci, mwalker ... la solution qui a fonctionné de façon fantastique jusqu'à présent! J'ai changé le format CodePage en UTF-8 et les données DBF du fichier de formes montrent maintenant les caractères corrects. Et en utilisant le chargeur de fichiers de formes PostGIS dans QGIS, les données de la base de données PostGIS sont également correctes.
colemanm
6

Ci-dessous les détails du processus que j'ai utilisé pour convertir un fichier GeoDataBase avec des champs arabes en fichiers de formes avec encodage UTF-8 qui s'ouvrent avec bonheur dans QGIS et ArcMap montrant correctement l'arabe et l'anglais (sans utiliser d'extensions pour exporter ou lire):

  • L'idée de base est la suivante: à partir de la FGDB, exportez un fichier de formes comprenant un .dbf (dans le mauvais codage), puis exportez la table d'attributs du même calque que le texte (dans le bon codage, qui est UTF-8), et utilisez un autre programme pour remplacer le contenu du fichier de formes .dbf par des champs de données UTF-8 appropriés et enregistrer le .dbf avec le codage UTF-8. Ajoutez ensuite un fichier .cpg à chaque fichier de formes pour informer ArcGIS du nouveau codage du .dbf. Pas:

1) Ajoutez les couches de la FGDB dans ArcMap (j'ai utilisé 10.1, mais il n'y a absolument aucune raison pour que cela ne fonctionne pas dans les versions antérieures, car le bit d'encodage se produit plus tard, en dehors d'Arc). Pour exporter, cliquez avec le bouton droit sur un calque et choisissez Données-> Exporter les données, cliquez sur le bouton du dossier dans la boîte de dialogue d'exportation pour faire apparaître la boîte de dialogue Enregistrer et choisissez Shapefile comme format de sortie.

1b) Autre méthode que ci-dessus: accédez au FGDB dans ArcCatalog, cliquez dessus avec le bouton droit, choisissez Exporter -> vers un fichier de formes (plusieurs) et exportez le FGCB entier sous forme de dossier plein de fichiers de formes en une seule opération).

2) Vous avez maintenant un ensemble de fichiers de formes avec charabia où le script arabe devrait être (sur ma machine, il affichait des points d'interrogation à la place des caractères). Les parties .dbf des fichiers de formes eux-mêmes, ouverts dans Excel ou autre, ont du charabia au lieu de l'arabe; ce n'est pas simplement un problème d'affichage dans le programme SIG, c'est que les fichiers .dbf eux-mêmes ne contiennent pas les caractères arabes. Pas encore utile.

3) Dans ArcMap, ouvrez la table d'attributs d'une couche à partir de la FGDB. Le tableau s'ouvre avec à la fois l'anglais et l'arabe montrant correctement (c'est pourquoi FGDB a été utilisé en premier lieu). Dans le menu Options de table de la fenêtre Table d'attributs, choisissez Exporter et dans la boîte de dialogue Exporter les données, cliquez sur le bouton du dossier de sortie pour accéder à la boîte de dialogue Enregistrer les données dans laquelle vous choisissez Fichier texte comme type de sortie. Vous avez maintenant un fichier texte qui s'ouvrira dans le Bloc-notes avec des délimiteurs de virgule, encodé en UTF-8, avec l'anglais et l'arabe correctement encodés (l'arabe devrait, à ce stade, s'afficher correctement dans le Bloc-notes).

Maintenant, pour obtenir ces informations dans les parties .dbf des fichiers de formes!

4) Ouvrez LibreOffice Calc, un clone Excel gratuit et open source qui ouvre, manipule et enregistre facilement les fichiers .dbf, pour ouvrir le fichier .dbf d'un fichier de formes.

Soit dit en passant, dans ce cas, je n'utilise pas LibreOffice au lieu de MS Office pour des raisons idéologiques, mais simplement parce que je ne peux pas comprendre comment faire Excel pour enregistrer un fichier .dbf, ce qui est facile dans Calc, en fait c'est le option par défaut lorsque vous appuyez sur Enregistrer après avoir ouvert et modifié un fichier .dbf dans Calc, alors qu'Excel, il indique en fait que le fichier "ne peut pas être enregistré au format actuel" et propose pas si utilement de "l'enregistrer au dernier format" (aucune option pour .dbf n'apparaît). Il existe des extensions / plugins pour Excel qui prétendent faire le travail (

Le fichier .dbf dans Calc montre toujours le charabia à la place de l'arabe. À côté, ouvrez le fichier .csv que vous avez exporté à partir de la table d'attributs du même fichier de formes, en vous assurant de spécifier UTF-8 comme codage (et des virgules comme délimiteurs) dans la boîte de dialogue d'ouverture. Les fichiers texte doivent s'ouvrir dans une deuxième feuille de calcul Calc avec l'arabe affiché correctement, et ils doivent contenir les mêmes colonnes que le .dbf plus une colonne OBJECTID au début. Copiez-collez les colonnes du .csv contenant l'arabe approprié dans le .dbf (je viens de copier-coller la table entière à l'exception de la colonne ID la plus à gauche pour gagner du temps; les informations sont identiques de toute façon). Appuyez sur Enregistrer dans le .dbf modifié dans LibreOffice (il vous demandera si vous voulez vraiment utiliser un format aussi étrange que le .dbf; oui, vous le faites).

Répétez ce processus pour tous les composants .dbf des fichiers de formes de la FGDB, en remplaçant toutes les colonnes charabia par les chaînes arabes.

5) Dès que vous avez réenregistré les portions .dbf avec les colonnes arabes collées, vous pouvez ouvrir les fichiers de formes dans QGIS et ils fonctionneront correctement dans les deux langues, à condition que vous spécifiiez UTF-8 comme encodage dans le vecteur d'importation Boîte de dialogue de fichier. Cependant, ils ne fonctionneront toujours pas correctement dans ArcGIS (ou du moins pas dans toutes les versions) car ArcGIS ne reconnaît pas automatiquement l'encodage ou ne vous laisse pas le choisir lorsque vous ajoutez le fichier de formes à un projet. Arc a besoin d'un composant distinct du fichier de formes, appelé fichier de conversion de page de code (.cpg), pour lui indiquer l'encodage à lire.

6) Utilisez un éditeur de texte (bloc-notes, nano ou autre, mais pas Word ou tout autre traitement de texte) pour créer un fichier texte qui ne contient que les cinq caractères "UTF-8". Enregistrez-le en tant que .cpg pour chacun des fichiers de formes (je clique simplement sur un morceau du fichier de formes dans la boîte de dialogue Enregistrer sous, puis effacez l'extension et ajoutez .cpg), dans le même dossier que le fichier de formes (il devient fondamentalement un autre morceau de Hi le fichier de formes en plusieurs parties). L'extension .cpg indique à Arc qu'il s'agit d'un fichier contenant des informations sur l'encodage du fichier .dbf; une fois qu'il est intégré dans le fichier de formes avec ses frères et sœurs de même nom mais avec une extension différente, le codage du fichier de formes est désormais automatiquement reconnu par ArcGIS.

7) Voila. Maintenant, vous avez des fichiers de formes qui contiennent à la fois des chaînes anglaises et arabes, pour autant que je sache exactement comme elles étaient dans le fichier GeoDataBase d'origine. Ils s'ouvrent dans mes installations d'ArcMap et de QGIS, et dans les deux cas, les chaînes dans les deux langues s'affichent correctement, y compris dans les étiquettes de carte.

Mises en garde:

  • Toutes les copies d'ArcGIS ne semblent pas exporter la table attributaire en tant que fichier texte correctement rempli (sur au moins un ordinateur, une tentative d'exportation de la table attributaire dans un fichier texte se traduit par un fichier contenant uniquement les en-têtes, pas les lignes de données. PAS le bon comportement d'Arc (bien sûr, il est censé être capable d'exporter des tableaux d'attributs sous forme de texte), mais il peut arriver pour certains utilisateurs, ce qui rend le reste des étapes impossible.

  • Il ne semble pas qu'ArcGIS enregistre de nouveaux fichiers de formes avec l'encodage UTF-8. Cela n'affectera que les utilisateurs qui souhaitent créer de nouveaux fichiers de formes à partir des données, pas les personnes qui souhaitent simplement les afficher, les modifier et les utiliser pour créer des cartes. La solution de contournement semble impliquer de jouer avec votre registre Windows comme détaillé ici: ( http://support.esri.com/cn/knowledgebase/techarticles/detail/21106 ). Je n'ai pas eu à m'en occuper car mes ArcGIS et QGIS semblent tous deux reconnaître avec plaisir les fichiers de formes que j'ai enregistrés en utilisant le processus ci-dessus, et je peux modifier la géométrie et les entrées de table ou même ajouter de nouveaux polygones avec plus de texte arabe sans aucun problème évident ( même si Arc ne semble pas vouloir enregistrer de nouveaux fichiers de formes avec l'encodage UTF-8, il semble disposé à les mettre à jour / réenregistrer).

  • Je suppose que la fonctionnalité de LibreOffice est la même sous Windows que sur mon ordinateur. J'utilise GNU / Linux pour la plupart de mon travail, et ne démarre sur Windows que si j'ai besoin d'utiliser ArcGIS ou Autocad pour une tâche ou une autre, j'ai donc fait la modification du fichier .dbf dans Libreoffice fonctionnant sur Fedora. Je suppose que cela fonctionne de la même manière sous Windows, mais je ne peux pas tester cela sans installer LibreOffice sur ma partition Windows et ma connexion Internet actuelle est un peu lente pour les téléchargements non nécessaires. Il existe des plugins pour Excel qui vous permettent d'enregistrer des fichiers .dbf dans un encodage sélectionné (exceltodbf.sourceforge.net/, par exemple), mais je ne les ai pas essayés. Il peut y avoir d'autres façons de manipuler et d'enregistrer .dbf, mais je ne les ai pas examinées après avoir trouvé un moyen raisonnablement facile de le faire avec LibreOffice.

  • L'ensemble du problème semble être évitable si vous payez pour l'extension Production Mapping dans ArcGIS, qui vous permet de convertir directement les FGDB en fichiers de formes avec l'encodage UTF-8 selon cette page: http://resources.arcgis.com/en/help /main/10.1/index.html#//0103000001m1000000 . Pourquoi cette fonctionnalité plutôt basique (Unicode existe depuis un certain temps maintenant et il y a beaucoup de langues autres que l'anglais) n'est disponible que pour les clients qui paient un supplément est une question pour ESRI.

Ivan Gayton
la source
0

Vous devrez d'abord déterminer le codage des données d'entrée, afin de pouvoir indiquer à vos outils comment convertir les données en un codage approprié. Si vous avez accès, j'essayerais d'exporter le tableau en texte directement à partir de la MDB et de définir le codage de sortie sur UTF8. Si vous ouvrez le fichier de formes exporté dans ArcGIS, le codage est-il correctement défini? DBF prend en charge les pages de codes et il est possible que OGR ne sélectionne pas la bonne pour la conversion.

Il existe également des moyens de contraindre MDBtools (utilisé dans le cadre du pilote OGR) pour définir explicitement le flux d'entrée, mais j'essaierais d'abord les autres approches.

scw
la source
0

J'irai plutôt vers ArcGIS. Définissez simplement l'encodage sur UTF-8 dans ArcGIS en suivant les instructions à partir d' ici . Après cela, exportez simplement les classes d'entités vers ShapeFile. Maintenant, vous obtiendrez un fichier CPG (fichier de page de code) supplémentaire avec chaque couche. Il s'agit uniquement d'un fichier texte contenant la chaîne "UTF-8" et toutes vos données sont automatiquement encodées en UTF-8.

Si vous souhaitez utiliser un autre encodage, consultez simplement les instructions.

L'important est qu'après avoir terminé cette affectation, vous devez modifier ce paramètre à sa valeur par défaut, car si vous conservez cette valeur, par exemple "UTF-8", ArcGIS exportera désormais tous les ShapeFiles à l'aide du codage "UTF-8".

J'espère que cela vous aidera.

iRfAn
la source