7 votos

Interpretando el tipo y nombre del tipo de formato de datos en QGIS

Estoy tratando de entender cómo almacenar los valores de atributos de la manera más eficiente para un shapefile grande (>1 000 000 registros). He encontrado excelentes descripciones de representaciones de datos en 8 bits, 16 bits como entero vs. flotante, etc (por ejemplo, https://www3.ntu.edu.sg/home/ehchua/programming/java/datarepresentation.html). Pero no puedo encontrar las equivalencias entre QGIS y los nombres estándar para esos formatos. Además, QGIS utiliza diferentes términos dependiendo de la función para complicar las cosas aún más. ¿QGIS solo admite dos formatos enteros: 32 bits y 64 bits? ¿Se asignan los números reales a Float32 o Float64 según la longitud y precisión?

Los formatos que he encontrado al acceder a Propiedades y Campos de origen con las opciones correspondientes de agregar campo son:

  • tipo/nombre del tipo, selección desde añadir campo

  • double/real, Número decimal (real) con menos de 10 dígitos (¿32 bits?)

  • double/double, Número decimal (real) con más de 11 dígitos (¿64 bits?)

  • int/entero, Número entero (entero) (¿8 bits? ¿16 bits?)

  • qlonglong/integer64, Número entero (integer64)

Descripción de la imagen

Descripción de la imagen


El formato de ráster tiene las siguientes opciones con traducciones bastante directas entre nombres y tipos de datos:

Descripción de la imagen

3 votos

¡No utilices un shapefile para un conjunto de datos grande! Utiliza un GeoPackage y no te preocupes por los límites de tamaño, además puedes añadir índices.

1 votos

No estoy preocupado por los límites de tamaño en este caso -- solo quiero el archivo más pequeño posible. Con los raster, he reducido el tamaño del archivo de 30MB a 8MB al guardar el tipo de datos (que eran solo valores de 1 a 10) como entero de 8 bits en lugar de flotante de 32 bits. Además, GeoPackage aún no se ha popularizado en la mayoría de círculos: mis clientes solo aceptarán shapefiles. Espero convencerlos uno por uno, pero no es un cambio rápido.

1 votos

@IanTurton Y independientemente del tipo de archivo, todavía hay que tomar decisiones sobre el tipo de datos, que es el punto de mi pregunta.

2voto

arax Puntos 1122

Gracias a los comentarios, he llegado a comprender cómo se almacenan los datos en formatos vectoriales (por ejemplo, shapefiles). Lo más importante es que los valores de datos en formato vectorial y de ráster se almacenan de maneras completamente diferentes. Los datos de atributos de registro se almacenan en el archivo .dbf asociado con un shapefile utiliza el almacenamiento estándar de archivos dBase como se explica aquí:

Todos los valores de los campos ocupan la cantidad de bytes especificada en la propiedad de longitud del campo de su descriptor de campo.

Cada registro en cada atributo (es decir, cada valor de campo) ocupa la cantidad de bits/bytes establecida por la longitud del atributo independientemente del número de caracteres/números en una entrada dada. El tamaño es el mismo independientemente de si la entrada tiene dígitos o letras. La única diferencia entre un decimal y un entero en términos de almacenamiento es que el "." cuenta como un carácter. A diferencia del formato de ráster, no hay un salto repentino desde la cantidad de espacio ocupado por un número con 4 dígitos (16 bits) frente a 2 dígitos, menos de 256 (8 bits) ni una diferencia entre flotante y entero.

Basándome en el enlace que Joseph proporcionó, he elaborado la siguiente tabla con los formatos como los llama QGIS con los nombres que OGR utiliza.

QVariant::LongLong -- OFTInteger64 -- ogrWidth 1-21
QVariant::Int      -- OFTInteger   -- ogrWidth 1-10
QVariant::String   -- OFTString    -- ogrWidth 1-255
QVariant::Bool     -- OFSTBoolean  -- ogrWidth = 1
QVariant::Double   -- OFTReal      -- ?
QVariant::Date     -- OFTDate      -- ?
QVariant::Time     -- OFTTime      -- ?
QVariant::DateTime -- OFTDateTime  -- ?

Cada uno de los tipos de campo OGR se explica aquí, pero en su mayoría es intuitivo (real es Punto flotante de doble precisión y Entero es Entero simple de 32 bits).

El elemento esencial a considerar para minimizar el tamaño de almacenamiento que utiliza los datos de atributos es elegir la longitud mínima para cada atributo, como nos indica QGIS. ¡Así que, no lo pienses demasiado!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X