¿Se pasa por alto el límite de 10 caracteres del nombre del campo en los shapefiles?

39

Estoy exportando geometría con atributos de texto adjuntos desde la base de datos oracle al formato de archivo esri shape (.shp) con la biblioteca de Java y Geotools.

Las columnas de atributos en nuestra base de datos tienen nombres con más de 10 caracteres, y Geotools obliga a truncarlos. Entiendo que se debe a la especificación de los archivos .shp o .dbf.

Puedo solucionar esto creando un simple archivo txt con "shrtname"="El nombre completo y largo", pero obviamente no será comprendido ni importado por ningún otro software que no sea el nuestro.

¿Hay una forma oficial de realizar la asignación de nombres de campo cortos a nombres largos de texto completo?

Por ejemplo, archivo xml junto a todos los demás archivos .shp .dbf .shx.

    
pregunta denu 16.10.2011 - 01:13

5 respuestas

50

Lo siento, la respuesta es no. Debe implementar su propio asignador de campo y solo el software que use su asignador lo entenderá. Sin embargo, puede usar otros formatos que no tengan esta limitación (por ejemplo, geodatabase de archivos, espacialidad, etc.).

Algunos consejos sobre las soluciones de la experiencia personal.

Cuando las personas eligen los shapefiles (e insisten en ellos) como su formato principal, generalmente se elige para interoperabilidad : piense que se adhiere a una especificación. Si elige rodar su propio mapeador de campo, básicamente está haciendo todo lo contrario, ya que está haciendo cosas fuera de una especificación, ha creado su "especificación extendida".

¿He hecho esto en el pasado? Sí. Y lo más seguro es que siempre resulte más doloroso que resolver un problema porque cada vez que intentas abrir los shapefiles en cualquier otra cosa que pueda leer / escribir shapefiles, terminas con una tabla con un montón de campos difíciles de entender. .

En ese momento, te preguntaría, ¿por qué estás usando shapefiles? Puede idear una solución de flujo de trabajo que se adhiera a la especificación de shapefile y sus limitaciones, o cambiar los formatos de archivo. Todo lo demás es solo una receta para los dolores de cabeza.

    
respondido por el Ragi Yaser Burhum 16.10.2011 - 07:27
15

Hay una forma estándar de lidiar con esto, aunque es posible que sus clientes no estén del todo contentos: usted exporta dos archivos, un shapefile y un archivo de datos en un formato que su software puede leer. El shapefile solo tiene un identificador único, [Id], para los atributos. El archivo de datos tiene varios atributos: [Id] para coincidir con la forma, [Campo] para proporcionar el nombre del campo, [Tipo] para indicar su tipo, y un atributo de cada tipo de datos posible para almacenar el valor. Cada campo en el archivo original se almacena como un registro en este archivo de datos.

Por ejemplo, una tabla de origen con este aspecto:

[Shape] [Id] [Name]     [Population2010]
shape1  A1   California         37253956
shape2  A2   Texas              25145561
shape3  A3   Wyoming              563626

tendría un archivo de datos correspondiente

[Id] [Field]        [Type]  [Text]     [Integer]
A1   Name           Text    California    <Null>
A1   Population2010 Integer <Null>      37253956
A2   Name           Text    Texas         <Null>
A2   Population2010 Integer <Null>      25145561
A3   Name           Text    Wyoming       <Null>
A3   Population2010 Integer <Null>        563262

Debería ser obvio cómo usar estos datos en cualquier RDBMS y cómo convertir una y otra vez entre los dos formatos.

    
respondido por el whuber 16.10.2011 - 18:23
7

Si su cliente está utilizando ArcGIS, puede proporcionar un script para asignar alias de campo en masa . Esto les daría la apariencia de nombres de campo largos cuando están usando los datos.

Las secuencias de comandos similares pueden funcionar para proporcionar alias en otros paquetes GIS, también.

    
respondido por el user3461 16.10.2011 - 16:00
2

La ruta más sencilla es almacenar SOLAMENTE su geometría como un shapefile, por las excelentes capacidades de edición de geometría que existen en muchas aplicaciones GIS, YET almacena todos sus datos de campo (o la mayoría de ellos) en sqlite como tablas. Únase a ellos según sea necesario para investigar sus datos de campo.

PERO, si necesita editar las tablas mientras realiza consultas espaciales, o seleccionar las funciones de shapefile en QGIS, deberá olvidar [shapefiles unidos a tablas sqlite] como una opción, y en su lugar, exportar todo a Spatialite. Aprenda a usar Qspatialite y Spatialite_GUI (ambas son complementarias entre sí con muchas características que carecen de otras: las necesitará y usará ambas si hace muchas cosas con SQLITE)

Es importante tener en cuenta que esas tablas (unidas a shapefile) no se podrán editar al mismo tiempo que la combinación. Y así, la migración a Spatialite sería una excelente alternativa a los shapefiles. Mantiene la simplicidad y la portabilidad de los shapefiles mientras ofrece la mayoría de las virtudes de una base de datos SQL, sin la complejidad de PostgreSQL.

    
respondido por el user12711 11.09.2013 - 16:00
-2

La solución temporal puede ser, guardando como archivo TAB, que puede tener nombres de columna de hasta 31 caracteres.

    
respondido por el Bharadwaj A K 25.09.2018 - 15:48

Lea otras preguntas en las etiquetas