栅格化几何示例不起作用

时间:2018-08-09 17:13:06

标签: python python-3.x rasterizing rasterio

我正在尝试重新创建this rasterio example

import numpy as np
import rasterio
from rasterio.features import rasterize
from rasterio.transform import IDENTITY

rows = cols = 10

geometry = {
    'type': 'Polygon',
    'coordinates': [[(2, 2), (2, 4.25), (4.25, 4.25), (4.25, 2), (2, 2)]]
}


with rasterio.Env():
    result = rasterize([geometry], out_shape=(rows, cols))
    with rasterio.open(
            "test.tif",
            'w',
            driver='GTiff',
            width=cols,
            height=rows,
            count=1,
            dtype=np.uint8,
            nodata=0,
            transform=IDENTITY,
            crs={'init': "EPSG:4326"}) as out:
        out.write(result.astype(np.uint8), indexes=1)

我检查了rasterizeprint(result))的结果,该结果看上去正常且令人生厌,其结果是2x2像素的正方形:

[[0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 1 1 0 0 0 0 0 0]
 [0 0 1 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]]

但是我得到的是全黑图像(nodata图像)。

1 个答案:

答案 0 :(得分:0)

尽管我无法确定产生黑色.tif图像的原因,但我得出结论,该过程按预期进行,并且可以使用matplolib.pyplot看到视觉效果。

必须对示例进行如下修改才能使用pyplot

import rasterio
from matplotlib import pyplot
from rasterio.features import rasterize
from rasterio.transform import IDENTITY

rows = cols = 10

geometry = {
    'type': 'Polygon',
    'coordinates': [[(2, 2), (2, 4.25), (4.25, 4.25), (4.25, 2), (2, 2)]]
}


with rasterio.Env():
    result = rasterize([geometry], out_shape=(rows, cols))
    with rasterio.open(
            "test.tif",
            'w+', # Open the file in read/write mode
            driver='GTiff',
            width=cols,
            height=rows,
            count=1,
            dtype=rasterio.uint8,
            nodata=0,
            transform=IDENTITY,
            crs={'init': "EPSG:4326"}) as out:
        out.write(result.astype(rasterio.uint8), indexes=1)
        # Plot the image.
        pyplot.imshow(out.read(1))
        pyplot.show()