簡體   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