6 votos

OGR tipo entero a PostgreSQL BIGINT?

Tengo un problema con los tipos integer, cuando la importación de un archivo shape creado en OGR en PostGIS.

Empecé con un campo creado como ogr.OFTInteger64 en OGR/pyqgis de la siguiente manera:

field_defn = ogr.FieldDefn( fld, ogr.OFTInteger64 ) 
lyr.CreateField ( field_defn )

El campo tipo muestra como el tipo: qlonglongy nombre de tipo: Integer64 en QGIS.

Pero después de importar el archivo de forma en PostGIS con shp2pgsql,

shp2pgsql -Id -s 4326 my_lyr.shp my_lyr | psql

el campo terminó siendo un double precision campo \d+, y he tenido que convertir los valores en este campo BIGINT antes de su uso.

De acuerdo a la documentación de PostgreSQL, tanto bigint y double precision son tipos de 8 bytes (64 bits). ¿Cómo puedo evitar la confusión y obtener la intención de BIGINT de campo en PostGIS?

5voto

jlehenbauer Puntos 7749

Una rápida mirada a este, CreateField es una envoltura alrededor de C++Layer_CreateField. Se puede ver que bFID64 es compatible con la pgdatasource. Tal vez usted debe comprobar fuera de la ogr2ogr -f "PostgreSQL" en lugar de utilizar shp2pgsql.

PostGIS brinda shp2pgsql (no GDAL): no parece compatible con 64 bits enteros sin embargo, y en lugar de los valores predeterminados para FTDouble. Usted puede ver todos los tipos de soporte admitidos aquí o aquí. Usted puede ver la función que establece los tipos aquí.

Actualización, abrí un informe de error

Estas dos bases de código parecen tener una gran cantidad de solapamiento. Porque gdal es utilizado por PostGIS, parece que PostGIS debe trabajar para conseguir sus cambios a la ogr fuente de datos combinada de aguas arriba y la mantuvo allí.

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