Hãy thử thêm -nlt geometry
và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 -skipfailures
cờ. Đ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 -explodecollections
cờ) hoặc 2) sử dụng -nlt
cờ và chỉ định GEOMETRY
làm tùy chọn. Các -nlt GEOMETRY
tù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ệ.