Définition des types de géométrie importés dans PostGIS avec OGR

8

J'utilise ogr2ogrpour importer des données dans une base de données PostGIS. Chaque jeu de données que je dois importer a (théoriquement) la même structure de données exacte, mais il semble que ce ne soient pas les mêmes types de géométrie. Par exemple, j'ai déjà importé la première couche, et il y a une couche appelée "rues". En exécutant cette commande, j'importe la première classe d'entités de la première base de données (j'ai configuré GDAL pour lire .mdb):

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

Lorsque je vais ajouter (à l'aide du -appenddrapeau) la même couche de rues city2.mdb, j'obtiens cette erreur (probablement en raison de conflits de types de géométrie pour les deux couches "rues":

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-t-il un moyen simple ogr2ogrde convertir des géométries du même type lors de l'importation? Ou un moyen de gérer cela en prédéfinissant le schéma et les géométries de chaque table au préalable?

colemanm
la source

Réponses:

16

Utilisez l' -nltoption. Dans ce cas, vous souhaitez:

-nlt MULTILINESTRING

Il y a aussi PROMOTE_TO_MULTI(GDAL 1.10 et ultérieur), qui choisit soit MULTILINESTRINGou en MULTIPOLYGONfonction de la couche d'entrée. Le cas d'utilisation pour cela est de "faire une conversion en masse de fichiers de formes qui [mélangent] différents types de géométries".

Todd Owen
la source