ogr2ogr, GeoJson फ़ाइल> 200MB को परिवर्तित करने में विफल रहता है


15

मेरे पिछले प्रश्न के अनुवर्ती के रूप में ( SimpleGeo स्थानों GeoJSON फ़ाइल को आकार देने के लिए परिवर्तित करते हुए ), मैं अब इस बात से जूझ रहा हूं कि मुझे क्या महसूस हो सकता है कि यह एक ओग 2rr "मेमोरी" सीमा हो सकती है, लेकिन मुझे यकीन नहीं हो रहा है। मैंने SimpleGeo डंप फ़ाइलों को सफलतापूर्वक उचित जियोजोन फ़ाइलों में बदल दिया है (सत्यापित है कि सीधे QGIS में पठनीय हैं)।

अब मैं इस डेटा को SHP या अन्य प्रारूपों (SQLite, PostGIS) में बदलना चाहता हूं। मैं छोटी फाइलों पर सफलता के साथ निम्नलिखित कमांड चला रहा हूं (जहां "Places_fr.gejson" का फ़ाइल आकार ~ 118MB है):

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

जब मैं एक ही सटीक कमांड को जियोजोन फ़ाइल के साथ चलाने का प्रयास करता हूं जो कि 340MB है, दो में से एक में ogr2ogr क्रैश होता है:

  1. "lh_table_new: calloc विफल" ( पहला प्रयास )
  2. विंडोज फेंकता है "ogr2ogr.exe ने काम करना बंद कर दिया है। कृपया कार्यक्रम बंद करें।" ( बाद के प्रयास )

मैं 8GB स्थापित RAM (4GB उपलब्ध, 12GB वर्चुअल मेमोरी उपलब्ध) के साथ विंडोज 7 पर्यावरण के दोहरे कोर में FWTools के माध्यम से ogr कमांड चला रहा हूं। वहाँ ogr2ogr इन डेटासेट परिवर्तित करने के लिए एक स्मृति सीमा है? मैंने भी उसी परिणाम के साथ SQLite में परिवर्तित करने की कोशिश की है, इसलिए मुझे नहीं लगता कि यह SHP रूपांतरण मुद्दा है। धन्यवाद।


क्या आपको कभी यह काम करने के लिए मिला? मैं अब साधारण जीओजीएसएन फ़ाइल को shp में बदलने की कोशिश कर रहा हूं - मैंने आपकी स्क्रिप्ट को मूल पोस्ट में देखा है लेकिन मुझे यकीन नहीं है कि शिशु और पहनावा क्या हैं - फ़ाइल प्रारूप के संदर्भ में जो पढ़ा और लिखा जा सकता है?
क्फ्फ्लाव

कुछ भी नहीं है कि मैं काम कर रहा हूँ अब मैं shp
kflaw

जवाबों:


8

Forewarning : आपके द्वारा आपके सिस्टम पर रिपोर्ट किए जा रहे मेमोरी के एमाउट को देखते हुए, आप मानते हैं कि आप विंडोज के 64 बिट बिल्ड का उपयोग कर रहे हैं। यदि यह समाधान लागू नहीं होता है।

विंडोज पर सभी 32 बिट अनुप्रयोगों के लिए मेमोरी सीमा (विंडोज संस्करण की परवाह किए बिना, इसलिए यह 64 बिट विंडोज के लिए भी सच है) 2GB है। आप उस सीमा से टकराने वाले हो सकते हैं, जैसे कि कार्य प्रबंधक को चलाने के लिए ogr2ogr की पुष्टि करें और मेमोरी उपयोग की जांच करें।

यदि समस्या वास्तव में एक मेमोरी इश्यू के कारण है तो आप दो काम कर सकते हैं:

  1. अपने आप को GDAL के 64 बिट संस्करण का निर्माण करें (मैं आसानी से उपलब्ध बायनेरी नहीं पा सका)

  2. इस उपकरण के साथ ogr2ogr.exe पैच करें: http://ntcore.com/4gb_patch.php । पैचिंग के बाद (पाठ्यक्रम की एक बैकअप प्रतिलिपि बनाएं) बाइनरी को एक ग्रैंडटोटल 4 जीबी को संबोधित करने के लिए उपलब्ध होना चाहिए


3
मैंने संसाधन मॉनिटर देखा, और जैसे ही मेमोरी 2GB तक पहुंच गई, ogr2ogr प्रक्रिया क्रैश हो गई। यह निश्चित रूप से ogr2ogr / fwtools के भीतर 2GB का मेमोरी लिमिटेशन था, संभवतः क्योंकि इसे 32-बिट ऐप के रूप में संकलित किया गया था। मैंने आपके द्वारा सुझाए गए टूल के साथ ogr2ogr.exe को पैच किया और यह एक आकर्षण की तरह काम करता है। बेशक, अभी भी एक सीमा है जहां इसका उपयोग नहीं किया जा सकता है (जैसे 7 जीबी यूएस स्थानों की फाइलों के साथ), लेकिन कम से कम इस बात के लिए स्पष्टीकरण है कि ओग्रा 2 क्रोग विफल क्यों है। धन्यवाद!
रायनकेडलटन

क्या आप कभी भी 7GB यूएस फ़ाइल संसाधित करने में सक्षम थे?
Kflaw

3

यदि कोई समस्या है, तो यह ओजीआर जियोजोन चालक के लिए सबसे अधिक संभावना होगी और ओजीआर ही नहीं। नए बाइनरी का उपयोग करने का प्रयास करें (जैसे OSGeo4W से एक ) या इससे भी बेहतर, इसका 64 बिट संस्करण। क्षमा करें, जब तक आप इसे संकलित नहीं कर रहे हैं, मुझे नहीं पता कि आप विंडोज के लिए 64 बिट बाइनरी कहाँ प्राप्त कर सकते हैं - उबंटू लिनक्स और मैक किन्गचॉस बायनेरिज़ हालांकि 64 बिट होंगे।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.