Mengatur tipe geometri yang mengimpor ke PostGIS dengan OGR

8

Saya menggunakan ogr2ogruntuk mengimpor data ke dalam database PostGIS. Setiap dataset yang saya perlu impor memiliki (secara teoritis) struktur data yang persis sama, tetapi tampaknya mereka bukan tipe geometri yang sama. Contoh, saya sudah mengimpor lapisan pertama, dan ada lapisan yang disebut "jalan". Menjalankan perintah ini, saya mengimpor kelas fitur pertama dari database pertama (Saya telah mengkonfigurasi GDAL untuk membaca .mdb):

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

Ketika saya pergi untuk menambahkan (menggunakan -appendbendera) dari lapisan jalan yang sama dari city2.mdb, saya mendapatkan kesalahan ini (mungkin karena jenis geometri yang saling bertentangan untuk dua lapisan "jalan":

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)

Apakah ada cara mudah ogr2ogruntuk melemparkan geometri ke jenis yang sama saat impor? Atau cara untuk mengatasinya dengan menentukan skema dan geometri untuk setiap tabel sebelumnya?

colemanm
sumber

Jawaban:

16

Gunakan -nltopsi. Dalam hal ini yang Anda inginkan:

-nlt MULTILINESTRING

Ada juga PROMOTE_TO_MULTI(GDAL 1.10 dan yang lebih baru), yang memilih salah satu MULTILINESTRINGatau MULTIPOLYGONtergantung pada lapisan input. Kasus penggunaan untuk ini adalah "melakukan konversi massa shapefile yang [mencampur] berbagai jenis geometri".

Todd Owen
sumber