Soporte de codificación de caracteres en geodatabases y shapefiles


11

Tengo varias geodatabases que incluyen clases de entidad con letras griegas en muchos de los atributos. Cuando intento exportar una clase de entidad como un archivo de forma desde ArcCatalog, los atributos se matan en los datos del archivo de forma, algún tipo de problema de codificación de caracteres (se ven así en la forma: ?? etr ?? e?). Lo mismo sucede cuando uso ogr2ogr en FWtools para convertir capas de MDB a KML, shp, etc.

¿Alguien tiene experiencia tratando de lidiar con los formatos de codificación en los formatos de datos SIG?

El objetivo real aquí es obtener algunos datos de estas geodatabases de Esri en una base de datos Postgres / PostGIS, pero la codificación interrumpida no funcionará. Iba a exportar desde geoDBs a shapefiles, luego cargarlos con shp2pgsql. ¿Es ese el camino más fácil para llegar?


2
Puede usar QGIS para importar el archivo shap con la opción CP1256 y exportarlo con UTF8 para evitar problemas que no sean Unicode

Respuestas:


10

Creo que estás a medio camino. Puede usar iconvpara convertir de una codificación a otra, y puede usar esto como parte del shp2pgsqlproceso. Por ejemplo:

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

Si está trabajando en un entorno Linux, entonces ya iconvdebería estar instalado. Para Windows encontré LibIconv para Windows . Pero no tengo experiencia en el uso iconvcon Windows, por lo que no puedo garantizarlo.

¡Espero que esto ayude!

Jo


El problema ocurre antes de que se pueda aplicar shp2pgsql. Los atributos en el archivo de forma ya están rotos si entiendo correctamente.
oscuro


oscuro, tienes razón. Los datos son malos antes de que pueda llegar al paso shp2pgsql.
colemanm

Gracias, mwalker ... ¡la solución sobre eso funcionó fantásticamente hasta ahora! Cambié el formato de CodePage a UTF-8 y los datos DBF de shapefile muestran los caracteres correctos ahora. Y al usar el cargador de archivos de forma PostGIS en QGIS, los datos en la base de datos PostGIS también son correctos.
colemanm

6

Debajo de los detalles del proceso que utilicé para convertir un archivo GeoDataBase con campos árabes en archivos de forma con codificación UTF-8 que se abren felizmente tanto en QGIS como en ArcMap, mostrando el árabe y el inglés correctamente (sin usar extensiones para exportar o leer):

  • La idea básica es: desde el FGDB exportar un archivo de forma que incluye un .dbf (en la codificación incorrecta), luego exportar la tabla de atributos de la misma capa que el texto (en la codificación correcta, que es UTF-8), y usar otro programa para reemplazar el contenido del archivo de forma .dbf con los campos de datos UTF-8 adecuados y guarde el .dbf con la codificación UTF-8. Luego agregue un archivo .cpg a cada archivo de forma para informar a ArcGIS de la nueva codificación de .dbf. Pasos:

1) Agregue las capas del FGDB a ArcMap (utilicé 10.1, pero no hay absolutamente ninguna razón para que no funcione en versiones anteriores, porque el bit de codificación ocurre más tarde, fuera de Arc). Para exportar, haga clic con el botón derecho en una capa y elija Datos-> Exportar datos, haga clic en el botón de carpeta en el cuadro de diálogo de exportación para que aparezca el cuadro de diálogo Guardar y elija Shapefile como formato de salida.

1b) Método alternativo al anterior: navegue hasta el FGDB en ArcCatalog, haga clic con el botón derecho, elija Exportar -> A Shapefile (múltiple) y exporte todo el FGCB como una carpeta llena de shapefiles en una sola operación).

2) Ahora tiene un conjunto de archivos de forma con galimatías donde debería estar la escritura árabe (en mi máquina mostraba signos de interrogación en lugar de caracteres). Las porciones .dbf de los mismos archivos de forma, abiertos en Excel o lo que sea, tienen galimatías en lugar de árabe; no es simplemente un problema de visualización en el programa SIG, es que los archivos .dbf en sí mismos no contienen los caracteres árabes. No es útil por el momento.

3) En ArcMap, abra la tabla de atributos de una capa desde el FGDB. La tabla se abre con el inglés y el árabe que se muestran correctamente (por eso se usó FGDB en primer lugar). En el menú Opciones de tabla de la ventana Tabla de atributos, elija Exportar, y en el cuadro de diálogo Exportar datos, haga clic en el botón de la carpeta de salida para acceder al cuadro de diálogo Guardar datos donde elija Archivo de texto como tipo de salida. Ahora tiene un archivo de texto que se abrirá en el Bloc de notas con delimitadores de coma, codificado como UTF-8, con inglés y árabe correctamente codificados (el árabe debería, en este punto, mostrarse correctamente en el Bloc de notas).

¡Ahora para obtener esa información en las partes .dbf de los archivos de forma!

4) Abra LibreOffice Calc, un clon de Excel gratuito y de código abierto que abre, manipula y guarda archivos .dbf fácilmente, para abrir el archivo .dbf de un shapefile.

Por cierto, en este caso no estoy usando LibreOffice en lugar de MS Office por razones ideológicas, sino simplemente porque no puedo entender cómo hacer que Excel guarde un archivo .dbf, que es fácil en Calc, de hecho es el opción predeterminada al presionar Guardar después de haber abierto y modificado un archivo .dbf en Calc, mientras que Excel en realidad declara que el archivo "no se puede guardar en el formato actual" y no ofrece tanta ayuda para "guardarlo como el último formato" (no aparece ninguna opción para .dbf). Hay extensiones / complementos para Excel que pretenden hacer el trabajo (

El archivo .dbf en Calc todavía muestra el galimatías en lugar del árabe. Además, abra el archivo .csv que exportó de la tabla de atributos del mismo archivo de forma, asegurándose de especificar UTF-8 como codificación (y comas como delimitadores) en el diálogo de apertura. Los archivos de texto deben abrirse en una segunda hoja de cálculo Calc con el árabe mostrado correctamente, y deben contener las mismas columnas que el .dbf más una columna OBJECTID al principio. Copie y pegue las columnas del .csv que contiene el árabe apropiado en el .dbf (en realidad acabo de copiar y pegar toda la tabla con la excepción de la columna de ID más a la izquierda para ahorrar tiempo; la información es idéntica de todos modos). Presiona Guardar en el .dbf modificado en LibreOffice (te preguntará si realmente quieres usar un formato tan extraño como .dbf; sí, lo haces).

Repita este proceso para todos los componentes .dbf de los archivos de forma del FGDB, reemplazando todas las columnas de galimatías con las cadenas árabes.

5) Tan pronto como haya guardado las porciones .dbf con las columnas árabes pegadas, puede abrir los archivos de forma en QGIS y funcionarán correctamente en ambos idiomas, siempre que especifique UTF-8 como codificación en el Vector de importación Diálogo de archivo. Sin embargo, todavía no funcionarán correctamente en ArcGIS (o al menos no en todas las versiones) porque ArcGIS no reconoce automáticamente la codificación ni le permite elegirla cuando agrega el archivo de forma a un proyecto. Arc necesita un componente separado para el archivo de forma, llamado archivo de conversión de página de código (.cpg), para indicarle qué codificación leer.

6) Utilice un editor de texto (bloc de notas, nano o lo que sea, pero no Word ni ningún otro procesador de textos) para crear un archivo de texto que contenga solo los cinco caracteres "UTF-8". Guárdelo como .cpg para cada uno de los archivos de forma (solo hago clic en una parte del archivo de forma en el diálogo Guardar como, luego borro la extensión y agrego .cpg), en la misma carpeta que el archivo de forma (básicamente se convierte en otra parte de Hola el shapefile de varias partes). La extensión .cpg le dice a Arc que este es un archivo que contiene información sobre la codificación del archivo .dbf; una vez que está incluido en el archivo de forma junto con sus hermanos con el mismo nombre pero con diferentes extensiones, ArcGIS reconoce automáticamente la codificación del archivo de forma.

7) Voila. Ahora tiene archivos de formas que contienen cadenas en inglés y árabe, por lo que puedo decir exactamente como estaban en el archivo GeoDataBase original. Se abren en mis instalaciones de ArcMap y QGIS, y en ambos casos las cadenas en ambos idiomas se muestran correctamente, incluso en las etiquetas de los mapas.

Advertencias:

  • No todas las copias de ArcGIS parecen exportar la tabla de atributos como un archivo de texto debidamente poblado (al menos en una computadora, intentar exportar la tabla de atributos a un archivo de texto da como resultado un archivo con solo los encabezados, no las líneas de datos). NO es el comportamiento correcto de Arc (por supuesto, se supone que puede exportar Tablas de atributos como texto), pero puede aparecer para algunos usuarios, lo que hace que el resto de los pasos sean imposibles.

  • No parece que ArcGIS guarde nuevos archivos de forma con codificación UTF-8. Esto solo afectará a los usuarios que desean crear nuevos archivos de forma a partir de los datos, no a las personas que solo desean mostrarlos, modificarlos y usarlos para hacer mapas. La solución alternativa parece involucrar jugar con su registro de Windows como se detalla aquí: ( http://support.esri.com/cn/knowledgebase/techarticles/detail/21106 ). No he tenido que lidiar con esto porque mi ArcGIS y QGIS parecen reconocer felizmente los archivos de forma que guardé usando el proceso anterior, y puedo modificar la geometría y las entradas de la tabla o incluso agregar nuevos polígonos con más texto árabe sin ningún problema obvio ( a pesar de que Arc no parece querer guardar nuevos archivos de forma con codificación UTF-8, parece estar dispuesto a actualizarlos / guardarlos de nuevo).

  • Supongo que la funcionalidad de LibreOffice es la misma en Windows que en mi computadora. Uso GNU / Linux para la mayor parte de mi trabajo, y solo inicio en Windows si necesito usar ArcGIS o Autocad para alguna tarea u otra, así que hice la modificación del archivo .dbf en Libreoffice que se ejecuta en Fedora. Supongo que funciona de la misma manera en Windows, pero no puedo probar eso sin instalar LibreOffice en mi partición de Windows y mi conexión a Internet actual es un poco lenta para descargas no necesarias. Hay complementos para Excel que le permiten guardar archivos .dbf en una codificación seleccionada (exceltodbf.sourceforge.net/, por ejemplo), pero no los he probado. Puede haber otras formas de manipular y guardar .dbf, pero no las he investigado después de encontrar una manera razonablemente fácil de hacerlo con LibreOffice.

  • Todo el problema parece ser evitable si paga por la extensión de Mapeo de producción en ArcGIS, que le permite convertir directamente FGDB a archivos shape con codificación UTF-8 de acuerdo con esta página: http://resources.arcgis.com/en/help /main/10.1/index.html#//0103000001m1000000 . Por qué esta funcionalidad bastante básica (Unicode ha existido por un tiempo ahora, y hay muchos idiomas además del inglés) solo está disponible para aquellos clientes que pagan extra es una pregunta para ESRI.


0

Primero deberá averiguar en qué codificación se encuentran los datos de entrada, para que pueda decirle a sus herramientas cómo convertir los datos en una codificación adecuada. Si tiene acceso, intentaría exportar la tabla a texto directamente desde el MDB y establecería la codificación de salida en UTF8. Si abre el archivo de forma exportado en ArcGIS, ¿la codificación está configurada correctamente? DBF admite páginas de códigos , y es posible que OGR no elija la correcta para la conversión.

También hay formas de coaccionar MDBtools (utilizado como parte del controlador OGR) para establecer explícitamente la secuencia de entrada, pero primero probaría los otros enfoques.


0

Prefiero ir a ArcGIS way. Simplemente configure la codificación en UTF-8 en ArcGIS siguiendo las instrucciones de aquí . Después de esto, simplemente exporte las clases de entidad a ShapeFile. Ahora obtendrá un archivo adicional de CPG (archivo de página de códigos) con cada capa. Este es solo un archivo de texto con la cadena "UTF-8" y todos sus datos se codifican en UTF-8 automáticamente.

Si está interesado en utilizar otra codificación, solo consulte las instrucciones.

Lo importante es que después de finalizar esta asignación, debe cambiar esta configuración al valor predeterminado porque si mantiene este valor, por ejemplo, "UTF-8", en el futuro ArcGIS exportará todos los ShapeFiles usando la codificación "UTF-8".

Espero que te ayude.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.