Hành vi dự định của -skipfailures trong ogr2ogr là gì?


9

Tôi đang cố gắng chạy ogr2ogr để chuyển đổi một số Geojson thành shapefile. Tất cả đều tốt cho đến khi bất kỳ tính năng Geojson nào có hình học không hợp lệ (ví dụ: mảng tọa độ của hình học điểm là trống).

Tôi đã bao gồm cờ -skipfailures, nhưng ogr2ogr thoát ngay khi nó chạm vào tính năng không hợp lệ đầu tiên. Tôi không làm điều gì sai ở đây?

Ví dụ cuộc gọi ogr2ogr:

ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson

Câu trả lời:


4

Hãy thử thêm -nlt geometryvào tập lệnh ogr của bạn:

ogr2ogr -skipfailures -f "ESRI Shapefile" myshape.shp mygeojson.geojson -nlt geometry

Tôi đã gặp phải sự cố mà bạn mô tả khi sử dụng ogr2ogr để dịch các bộ dữ liệu chứa cả các tính năng một phần và nhiều phần trong cùng một lớp; ví dụ: POINT và MULTIPOINT, LINE VÀ MULTILINE, và POLYGON và MULTIPOLYGON.

Theo mặc định, OGR muốn bạn tuân theo quy ước và chỉ sử dụng một loại tính năng cho mỗi tập dữ liệu. Nếu bạn phá vỡ quy tắc, OGR sẽ đưa ra một lỗi chung và đề xuất -skipfailurescờ. Điều này có thể gây hiểu nhầm nếu vấn đề thực sự là hỗn hợp / hình học phù hợp trong cùng một lớp.

Vì shapefile ESRI không cho phép các tính năng đơn / đa trong cùng một lớp, bạn cần nhận ra OGR có thể gây ra lỗi này ngay cả khi bạn có hình học hợp lệ. Trong kịch bản đó, bạn có hai tùy chọn: 1) Chuyển đổi các tính năng nhiều phần thành một phần (mà ogr có thể thực hiện thông qua -explodecollectionscờ) hoặc 2) sử dụng -nltcờ và chỉ định GEOMETRYlàm tùy chọn. Các -nlt GEOMETRYtùy chọn cho phép bạn kết hợp một hỗn hợp của các loại tính năng trong cùng một lớp. Tất nhiên, do đó, OGR sẽ không bảo vệ các thực tiễn tốt nhất.

Nếu tệp GeoJSON của bạn "bắt đầu cuộc sống" dưới dạng shapefile ESRI, có thể bạn có cả hai tính năng POINT và MULTIPOINT trong tập dữ liệu đó, trong trường hợp đó bạn có thể gặp phải vấn đề này ngay cả với các điểm hợp lệ.


2
 -skipfailures: Continue after a failure, skipping the failed feature.

Một lời giải thích cho hành vi bạn gặp phải có thể là tất cả các tính năng trong tệp GeoJSON của bạn bị hỏng. Bạn đã kiểm tra tính hợp lệ của chúng chưa, ví dụ như sử dụng "Kiểm tra tính hợp lệ hình học" của QGIS?


Tất cả các tính năng khác là hợp lệ. Nếu tôi sửa hình dạng một điểm được mô tả trong bài viết gốc của mình, tất cả các điểm Geojson khác sẽ được thêm vào shapefile đầu ra.
dùng890

1

Theo tôi hiểu hành vi dự định là nếu gặp phải một tính năng không hợp lệ, nó sẽ bị bỏ qua và chuyển đổi sẽ tiếp tục với tính năng hợp lệ tiếp theo thay vì dừng lại.

Có vẻ như bạn đang làm mọi thứ đúng cách, vì vậy tôi không biết điều gì sai! Bạn đã thử đi đến một định dạng khác chỉ để xem nếu nó hoạt động?

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.