繁体   English   中英

Python中大型Shapefile的内存错误

[英]Memory error on large Shapefile in Python

import shapefile
data = shapefile.Reader("data_file.shp")
shapes = data.shapes()

我的问题是,使用Pyshp时,从Shapefile阅读器获取形状会给我一个异常MemoryError

.shp文件很大,为1.2 gB。 但是我只使用机器32gB的3%,所以我听不懂。

我还能采取其他方法吗? 可以在Python中分块处理文件吗? 还是使用某种工具将文件撒到碎片中,然后分别处理它们?

引用托马斯的回答

您看到的MemoryError异常是可用RAM耗尽的直接结果。 这可能是由于Windows( 32位程序 )对每个程序施加了2GB的限制,或者计算机上没有可用的RAM。 (此链接是上一个问题)。 如果您使用的是Windows的64位副本,那么您应该能够使用Python的64位副本扩展2GB。

因此,请尝试使用64位的Python副本或提供有关您的平台和Python版本的更多详细信息。

尽管我无法对其进行测试,但是Pyshp应该能够读取它,而不管文件大小或内存限制如何。 创建Reader实例不会加载整个文件,只会加载标头信息。

这里的问题似乎是您使用了shapes()方法,该方法将所有形状信息立即读取到内存中。 通常这不是问题,但是文件很大。 通常,您应该改为使用iterShapes()方法,该方法iterShapes()读取每个形状。

import shapefile
data = shapefile.Reader("data_file.shp")
for shape in data.iterShapes():
    # do something...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM