ogr2ogr ไม่สามารถแปลงไฟล์ GeoJson> 200MB


15

จากการติดตามคำถามก่อนหน้านี้ของฉัน (การแปลงไฟล์ SimpleGeo Places GeoJSON ไปเป็น shapefile ) ตอนนี้ฉันกำลังดิ้นรนกับสิ่งที่ฉันเห็นว่าอาจเป็นข้อ จำกัด "หน่วยความจำ" ogr2ogr แต่ฉันไม่แน่ใจ ฉันแปลงไฟล์ดัมพ์ SimpleGeo เป็นไฟล์ geojson ที่เหมาะสมได้สำเร็จ (ตรวจสอบแล้วว่าสามารถอ่านได้โดยตรงใน QGIS)

ตอนนี้ฉันต้องการแปลงข้อมูลนี้เป็น SHP หรือรูปแบบอื่น (SQLite, PostGIS) ฉันใช้คำสั่งต่อไปนี้โดยประสบความสำเร็จในไฟล์ขนาดเล็ก (โดยที่ "places_fr.gejson" มีขนาดไฟล์ ~ 118MB):

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

เมื่อฉันพยายามเรียกใช้คำสั่งเดียวกันนี้โดยใช้ไฟล์ geojson ที่มีขนาด 340MB ogr2ogr จึงขัดข้องด้วยวิธีใดวิธีหนึ่งจากสองวิธีนี้:

  1. "lh_table_new: calloc ล้มเหลว" ( ความพยายามครั้งแรก )
  2. Windows พ่น "ogr2ogr.exe หยุดทำงานโปรดปิดโปรแกรม" ( ความพยายามที่ตามมา )

ฉันกำลังเรียกใช้คำสั่ง ogr ผ่าน FWTools ในสภาพแวดล้อมแบบ dual-core Windows 7 สภาพแวดล้อมพร้อม RAM ขนาด 8GB ที่ติดตั้ง (มีให้ใช้ 4GB, มีหน่วยความจำเสมือน 12GB ให้ใช้งาน) มีการ จำกัด หน่วยความจำสำหรับ ogr2ogr การแปลงชุดข้อมูลเหล่านี้หรือไม่? ฉันได้ลองแปลงเป็น SQLite ด้วยผลลัพธ์เดียวกันดังนั้นฉันไม่คิดว่ามันเป็นปัญหาการแปลง SHP ขอบคุณ


คุณเคยได้รับสิ่งนี้ในการทำงานหรือไม่? ตอนนี้ฉันกำลังพยายามแปลงไฟล์ geGoson ของ SimpleGeo ให้เป็น shp - ฉันเห็นสคริปต์ของคุณในโพสต์ดั้งเดิม แต่ฉันไม่แน่ใจว่าไฟล์ infile และ outfile คืออะไรในรูปแบบของไฟล์ที่สามารถอ่านและเขียนได้?
kflaw

ไม่เป็นไรฉันได้ทำงานตอนนี้ฉันติดอยู่กับการแปลงเป็น shp
kflaw

คำตอบ:


8

คำเตือน : เนื่องจากจำนวนหน่วยความจำที่คุณรายงานบนระบบของคุณฉันคิดว่าคุณกำลังใช้ Windows 64 บิตในการสร้าง หากไม่ใช้วิธีนี้จะไม่สามารถใช้งานได้

ขีด จำกัด หน่วยความจำสำหรับแอปพลิเคชัน 32 บิตทั้งหมดบน Windows (ไม่ว่าจะเป็นรุ่น Windows ใดดังนั้นจึงเป็นจริงสำหรับ Windows 64 บิต) คือ 2GB คุณอาจกดขีด จำกัด นั้นเพื่อยืนยันการรัน ogr2ogr และตรวจสอบการใช้หน่วยความจำกับตัวจัดการงาน

หากปัญหาเกิดจากปัญหาหน่วยความจำคุณสามารถทำสองสิ่ง:

  1. สร้าง GDAL รุ่น 64 บิตด้วยตัวคุณเอง (ฉันหาไบนารีที่พร้อมใช้ไม่ได้)

  2. แก้ไข ogr2ogr.exe ด้วยเครื่องมือนี้: http://ntcore.com/4gb_patch.php หลังจากทำการปะแก้ (ทำสำเนาสำรองแน่นอน) ไบนารีควรพร้อมใช้งานเพื่อจัดการกับผลรวม 4GB


3
ฉันดูการตรวจสอบทรัพยากรและทันทีที่หน่วยความจำถึง 2GB กระบวนการ ogr2ogr จึงล้มเหลว มันเป็นข้อ จำกัด ของหน่วยความจำ 2GB ภายใน ogr2ogr / fwtools น่าจะเป็นเพราะมันถูกคอมไพล์เป็นแอพ 32 บิต ฉันแก้ไข ogr2ogr.exe ด้วยเครื่องมือที่คุณแนะนำและทำงานได้อย่างมีเสน่ห์ แน่นอนว่ายังมีข้อ จำกัด ที่ไม่สามารถใช้งานได้ (เช่นเดียวกับไฟล์สถานที่ 7GB US) แต่อย่างน้อยก็มีคำอธิบายว่าทำไม ogr2ogr ถึงล้มเหลว ขอบคุณ!
RyanKDalton

คุณเคยสามารถประมวลผลไฟล์ 7GB US ได้ไหม
kflaw

3

หากมีปัญหาจะเป็นไปได้มากที่สุดเฉพาะกับไดรเวอร์ OGR geojsonและไม่ใช่ OGR เอง ลองใช้ไบนารีที่ใหม่กว่า (เช่นเดียวกับOSGeo4W ) หรือดีกว่านั้นเป็นรุ่น 64 บิต ขออภัยเว้นแต่คุณจะรวบรวมมันฉันไม่ทราบว่าคุณจะได้รับไบนารี 64 บิตสำหรับ Windows - ไบนารีของUbuntu LinuxและMac KyngChaosจะเป็น 64 บิต


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.