Establecer tipos de geometría que se importan a PostGIS con OGR

8

Estoy usando ogr2ogrpara importar datos en una base de datos PostGIS. Cada conjunto de datos que necesito para importación tiene (en teoría) la misma estructura de datos exacta, pero parece que son no los mismos tipos de geometría. Ejemplo, ya importé la primera capa, y hay una capa llamada "calles". Al ejecutar este comando, importo la primera clase de entidad desde la primera base de datos (tengo GDAL configurado para leer .mdb):

ogr2ogr -f PostgreSQL PG:"host=localhost user=postgres dbname=database port=5432" city1.mdb streets -nln streets -nlt MULTILINESTRING -lco GEOMETRY_NAME=geometry

Cuando voy a agregar (usando la -appendbandera) la misma capa de calles city2.mdb, obtengo este error (presumiblemente debido a tipos de geometría en conflicto para las dos capas de "calles":

Warning 1: Geometry to be inserted is of type 3D Line String, whereas the layer geometry type is 3D Multi Line String.
Insertion is likely to fail
ERROR 1: INSERT command for new feature failed.
ERROR:  Geometry type (LineString) does not match column type (MultiLineString)

¿Existe una forma directa ogr2ogrde convertir geometrías al mismo tipo en la importación? ¿O una forma de manejar esto predefiniendo de antemano el esquema y las geometrías para cada tabla?

colemanm
fuente

Respuestas:

16

Usa la -nltopción. En este caso quieres:

-nlt MULTILINESTRING

También existe PROMOTE_TO_MULTI(GDAL 1.10 y posterior), que elige cualquiera MULTILINESTRINGo MULTIPOLYGONdependiendo de la capa de entrada. El caso de uso para esto es "hacer una conversión masiva de archivos de forma que [mezclan] diferentes tipos de geometrías".

Todd Owen
fuente