Đặt loại hình học nhập vào PostGIS bằng OGR


8

Tôi đang sử dụng ogr2ogrđể nhập dữ liệu vào cơ sở dữ liệu PostGIS. Mỗi tập dữ liệu tôi cần nhập có (về mặt lý thuyết) cấu trúc dữ liệu chính xác giống nhau, nhưng có vẻ như chúng không phải là cùng loại hình học. Ví dụ, tôi đã nhập lớp đầu tiên và có một lớp gọi là "đường phố". Chạy lệnh này, tôi nhập lớp tính năng đầu tiên từ cơ sở dữ liệu đầu tiên (tôi đã cấu hình GDAL để đọc .mdb):

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

Khi tôi thêm vào (sử dụng -appendcờ) cùng một lớp đường phố city2.mdb, tôi gặp lỗi này (có lẽ là do các loại hình học xung đột cho hai lớp "đường phố":

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)

Có cách nào đơn giản ogr2ogrđể đúc hình học cùng loại khi nhập không? Hoặc một cách để xử lý điều này bằng cách xác định trước lược đồ và hình học cho mỗi bảng trước?

Câu trả lời:


16

Sử dụng -nlttùy chọn. Trong trường hợp này bạn muốn:

-nlt MULTILINESTRING

Ngoài ra còn có PROMOTE_TO_MULTI(GDAL 1.10 trở lên), lựa chọn MULTILINESTRINGhoặc MULTIPOLYGONtùy thuộc vào lớp đầu vào. Các trường hợp sử dụng cho điều này là "làm một chuyển đổi khối lượng của shapefile rằng [trộn] loại khác nhau của hình học".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.