ogr2ogr无法转换> 200MB的GeoJson文件


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

当我尝试使用340MB的geojson文件运行相同的命令时,ogr2ogr会以以下两种方式之一崩溃:

  1. “ lh_table_new:calloc失败”(第一次尝试
  2. Windows抛出“ ogr2ogr.exe已停止工作。请关闭程序。” (后续尝试

我正在Windows 7环境双核中通过FWTools运行ogr命令,该双核具有8GB的已安装RAM(4GB可用,12GB虚拟内存)。ogr2ogr转换这些数据集是否有内存限制?我也尝试过将结果转换为SQLite,因此我认为这不是SHP转换问题。谢谢。


你有没有得到这个工作?我现在还在尝试将simpleGeo位置geojson文件转换为shp-我在原始文章中看到了您的脚本,但是我不确定infile和outfile是什么-就可以读取和写入的文件格式而言?
kflaw

没关系,我现在可以工作了,我一直坚持转换为shp
kflaw

Answers:


8

预警:鉴于内存不足,您正在对系统进行报告,我想您使用的是64位Windows版本。如果没有,则此解决方案不适用。

Windows上所有32位应用程序的内存限制(与Windows版本无关,因此对于64位Windows也是如此)为2GB。您可能会达到该限制,以确认运行ogr2ogr并通过任务管理器检查内存使用情况。

如果问题确实是由于内存问题引起的,则可以执行以下两项操作:

  1. 构建自己的GDAL 64位版本(我找不到随时可用的二进制文件)

  2. 使用此工具修补ogr2ogr.exe:http ://ntcore.com/4gb_patch.php 。修补(当然要备份后)后,二进制文件可用于处理总计4GB的数据


3
我看了看资源监视器,当内存达到2GB时,ogr2ogr进程崩溃了。在ogr2ogr / fwtools中,绝对是2GB的内存限制,可能是因为它被编译为32位应用程序。我用您建议的工具修补了ogr2ogr.exe,它的工作原理很吸引人。当然,仍然存在无法使用的限制(例如使用7GB美国地方档案),但是至少有一个解释说明了为什么ogr2ogr会失败。谢谢!
RyanKDalton 2011年

您曾经能够处理7GB美国文件吗?
kflaw


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.