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)
El formato de ráster tiene las siguientes opciones con traducciones bastante directas entre nombres y tipos de datos:
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.
0 votos
@user3386170 - Para shapefiles, esto está algo descrito en la sección Creation Issues de la página de información de shapefile OGR.
0 votos
@Joseph El enlace que compartiste fue muy interesante y me hace preguntarme si he malinterpretado cómo se almacenan los datos en un .dbf.
1 votos
@user3386170 - En formatos vectoriales, los valores
real
se considerandouble
. Los valoresFloat32
oFloat64
se ven principalmente en formatos raster.0 votos
@Joseph he actualizado mi pregunta con la información que obtuve de lo que escribiste y los enlaces. Si es correcto, podría cambiar el texto de mi actualización a una respuesta y marcarlo como
comunidad
. O, te invito (o a alguien más) a publicar una respuesta tomando tanto como desees de mi borrador.1 votos
@user3386170 - Gracias, pero te recomendaría que publiques tu edición como respuesta. Si alguien tiene más pruebas, siempre pueden publicar su propia respuesta o comentarla en la tuya :)