8 votos

La exportación de PostgreSQL tabla FileGDB: wkbUnknown de la capa tipo de geometría

Estoy intentando exportar un PostGIS (1.5.3) tabla de base de datos como una geodatabase de Archivos utilizando el nuevo FileGDB OGR / GDAL 1.9.0 controlador:

$ ogr2ogr -overwrite -sql "SELECT * from db_pts LIMIT 1" \
    -f "FileGDB" /tmp/test.gdb \
    PG:"host='HOST' dbname='DB'"

Me sale este error:

ERROR 1: Error (-1): FGDB layers cannot be created with a wkbUnknown layer geometry type.
ERROR 1: Terminating translation prematurely after failed translation from sql statement.

La geometría de la columna en la tabla que estoy exportado está configurado correctamente y está en la geometry_columns tabla. Creo que el problema tiene que ver con la forma en que el -sql opción es regresar a la capa tipo de geometría. Por ejemplo, el acceso a la misma tabla de base de datos con ogrinfo:

$ ogrinfo -ro -sql "SELECT * from db_allobs LIMIT 1" PG:"host=HOST dbname='DB'"
Layer name: sql_statement
Geometry: Unknown (any)
Feature Count: 1
...
OGRFeature(sql_statement):0
...
  POINT (-151.472835 69.635245)

Es como si la consulta no se ve en geometry_columns cuando la construcción de la capa, pero más tarde, cuando la exportación de las filas se sabe que la geometría que se exporta un POINT (en este caso).

Cuando yo uso un comando similar para producir un shapefile, todo está bien, incluyendo la capa de la geometría, el cual está a punto.

Alguien tiene alguna idea?

8voto

rfadams Puntos 578

Lo siento por la mala forma, pero la respuesta es añadir el -nlt opción, que le permite establecer el tipo de capa cuando -sql se utiliza. He encontrado esto en http://trac.osgeo.org/gdal/ticket/4186.

En otras palabras:

ogr2ogr -overwrite -sql "SELECT * from db_pts LIMIT 1" \
        -f "FileGDB" /tmp/test.gdb \
        PG:"host='HOST' dbname='DB'" -nlt POINT

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