Configurando tipos de geometria importados para PostGIS com OGR

8

Estou usando ogr2ogrpara importar dados para um banco de dados PostGIS. Cada conjunto de dados que preciso importar possui (teoricamente) a mesma estrutura de dados exata, mas parece que eles não são os mesmos tipos de geometria. Por exemplo, eu já importei a primeira camada e há uma camada chamada "ruas". Executando este comando, importo a primeira classe de recurso do primeiro banco de dados (tenho o GDAL configurado para ler .mdb):

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

Quando vou anexar (usando a -appendbandeira) a mesma camada de ruas city2.mdb, recebo esse erro (provavelmente devido a tipos de geometria conflitantes para as duas camadas "ruas":

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 uma maneira simples ogr2ogrde converter geometrias para o mesmo tipo na importação? Ou uma maneira de lidar com isso, predefinindo previamente o esquema e as geometrias para cada tabela?

colemanm
fonte

Respostas:

16

Use a -nltopção Nesse caso, você deseja:

-nlt MULTILINESTRING

Há também PROMOTE_TO_MULTI(GDAL 1.10 e posterior), que escolhe MULTILINESTRINGou MULTIPOLYGONdepende da camada de entrada. O caso de uso para isso é "fazer uma conversão em massa de arquivos de forma que [misturam] diferentes tipos de geometrias".

Todd Owen
fonte