ogr2ogr không chuyển đổi tệp GeoJson> 200MB


15

Như một câu hỏi tiếp theo của tôi ( Chuyển đổi tệp GeoJSON của GeoGSON thành shapefile ), bây giờ tôi đang vật lộn với những gì tôi nhận thấy có thể là giới hạn "bộ nhớ" ogr2ogr, nhưng tôi không thể chắc chắn. Tôi đã chuyển đổi thành công các tệp kết xuất SimpleGeo thành các tệp Geojson thích hợp (được xác minh có thể đọc trực tiếp trong QGIS).

Bây giờ tôi muốn chuyển đổi dữ liệu này sang SHP hoặc các định dạng khác (SQLite, PostGIS). Tôi đang chạy lệnh sau với thành công trên các tệp nhỏ hơn (trong đó "where_fr.gejson" có kích thước tệp ~ 118MB):

ogr2ogr -f "ESRI Shapefile" places_fr.shp places_fr.geojson

Khi tôi cố chạy lệnh chính xác tương tự này với tệp Geojson có dung lượng 340MB, ogr2ogr gặp sự cố theo một trong hai cách:

  1. "lh_table_new: calloc không thành công" ( lần thử đầu tiên )
  2. Windows ném "ogr2ogr.exe đã ngừng hoạt động. Vui lòng đóng chương trình." ( những lần thử tiếp theo )

Tôi đang chạy lệnh ogr qua FWTools trong lõi kép môi trường Windows 7 với 8GB RAM được cài đặt (có sẵn 4GB, bộ nhớ ảo 12 GB). Có giới hạn bộ nhớ để ogr2ogr chuyển đổi các bộ dữ liệu này không? Tôi cũng đã thử chuyển đổi thành SQLite với kết quả tương tự, vì vậy tôi không nghĩ đó là vấn đề chuyển đổi SHP. Cảm ơn.


Bạn đã bao giờ có được điều này để làm việc? Bây giờ tôi cũng đang cố gắng chuyển đổi tập tin Geojson đơn giản thành shp - tôi đã thấy tập lệnh của bạn trong bài viết gốc nhưng tôi không chắc là infile và outfile là gì - về định dạng tệp có thể đọc và viết?
kflaw

đừng để tôi làm việc mà bây giờ tôi đang bị kẹt khi chuyển đổi sang shp
kflaw 18/03/2015

Câu trả lời:


8

Mở đầu : được cung cấp bộ nhớ mà bạn đang báo cáo trên hệ thống của mình. Tôi cho rằng bạn đang sử dụng bản dựng 64 bit của Windows. Nếu không giải pháp này không áp dụng.

Giới hạn bộ nhớ cho tất cả các ứng dụng 32 bit trên Windows (bất kể phiên bản Windows, do đó, điều này cũng đúng với Windows 64 bit) là 2GB. Bạn có thể đạt giới hạn đó, để xác nhận chạy ogr2ogr và kiểm tra mức sử dụng bộ nhớ với trình quản lý tác vụ.

Nếu vấn đề thực sự là do vấn đề bộ nhớ, bạn có thể làm hai việc:

  1. xây dựng cho mình một phiên bản 64 bit của GDAL (Tôi không thể tìm thấy các tệp nhị phân có sẵn)

  2. vá ogr2ogr.exe bằng công cụ này: http://ntcore.com/4gb_patch.php . Sau khi vá (tạo một bản sao lưu tất nhiên), nhị phân sẽ có sẵn để xử lý một 4GB tổng cộng


3
Tôi đã xem trình giám sát tài nguyên và ngay khi bộ nhớ đạt 2GB, quá trình ogr2ogr đã bị sập. Đó chắc chắn là giới hạn bộ nhớ 2GB trong ogr2ogr / fwtools, có khả năng vì nó được biên dịch dưới dạng ứng dụng 32 bit. Tôi đã vá ogr2ogr.exe bằng công cụ mà bạn đề xuất và nó hoạt động như một lá bùa. Tất nhiên, vẫn còn một giới hạn mà nó không thể được sử dụng (như với các tệp 7GB của Hoa Kỳ), nhưng ít nhất có một lời giải thích cho lý do tại sao ogr2ogr bị lỗi. Cảm ơn!
RyanKDalton-OffTheGridMaps

Bạn đã bao giờ có thể xử lý tệp 7GB US chưa?
kflaw 18/03/2015

3

Nếu có vấn đề, rất có thể nó cụ thể đối với trình điều khiển Geojson OGR chứ không phải chính OGR. Hãy thử sử dụng một tệp nhị phân mới hơn (như bản nhị phân từ OSGeo4W ) hoặc thậm chí tốt hơn, phiên bản 64 bit của nó. Xin lỗi, trừ khi bạn đang biên dịch nó, tôi không biết bạn có thể lấy nhị phân 64 bit cho Windows ở đâu - các nhị phân Ubuntu LinuxMac KyngChaos sẽ là 64 bit.


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.