一次栅格化形状文件的多个字段



我必须栅格化每 62 列 30 个大 shapefile(>800 万个单元格),从而生成 1860 个栅格。

我能够在 R 中非常轻松快速地使用较小的形状(~ 8000 个特征)执行此操作。但是,当只是尝试在 R 中加载这个大形状时,我花了 2 个小时、16G RAM 和 47G 交换的 64%。调用光栅化函数时,由于内存问题,它无法运行。然而,我发现QGIS可以做得非常快,但是一次对每一列,这将花费我一生的时间来运行它。我尝试在QGIS中使用带有循环的Python控制台来迭代列,但没有成功。

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.gui import *
import processing
import sys
layer = "path/to/my.shp"
iface.addVectorLayer(layer, "pam", "ogr")
attrs = layer.attributes()
extent = layer.extent()
xmin = extent.xMinimum()
xmax = extent.xMaximum()
ymin = extent.yMinimum()
ymax = extent.yMaximum()
for n in attrs:
    processing.runalg("gdalogr:rasterize",
                   {"INPUT":layer,
                   "FIELD":n,
                   "DIMENSIONS":0,
                   "WIDTH":0.008333,
                   "HEIGHT":0.008333,
                   "RAST_EXT":"%f,%f,%f,%f"% (xmin, xmax, ymin, ymax),
                   "TFW":1,
                   "RTYPE":5,
                   "NO_DATA":0,
                   "COMPRESS":0,
                   "JPEGCOMPRESSION":1,
                   "ZLEVEL":1,
                   "PREDICTOR":1,
                   "TILED":False,
                   "BIGTIFF":2,
                   "EXTRA": '',
                   "OUTPUT":output/dir/test.tif})

我首先收到以下错误:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/tmp/tmpMAXfPw.py", line 11, in <module>
    attrs = layer.attributes()
AttributeError: 'str' object has no attribute 'attributes'

然后,似乎gdalogr:rasterize无法处理该FIELD = n,。我说的对吗?

你能帮我写这个代码吗?谢谢!

layer中,您只定义了带有字符串的 fine 路径。一个简单的 Python 字符串没有属性"属性"。您需要先实际创建图层:

layer_path = "/home/klab-guest/Documents/shared-klab/PAM/Grid/grid_pam_1988.shp"
layer = iface.addVectorLayer(layer_path, "pam", "ogr")
attrs = layer.attributes()

相关内容

  • 没有找到相关文章

最新更新