衛星画像に適用するランド マスクを作成しようとしています。これにより、ランド マスと交差するラスターのピクセルが 0 に設定されます。
gdal、skimage、pyplot などを試した後、rasterio クックブックに記載されている方法が迅速かつ簡単であることがわかりました。ただし、ポリゴンの外側のピクセルを0に設定していますが、これを逆にしようとしています。
可能であれば、rasterio を使用し続けます。地理空間座標のピクセル位置を計算したり、ラスターの範囲を超えて負になっているクリッピング フィーチャを処理したりする必要はありません。また、私が扱っている未加工の画像のファイルサイズにとって重要な FAST です。
私のコードは次のとおりです。
import fiona
import rasterio
from rasterio.tools.mask import mask
with fiona.open("/Users/Cate/UK_Mainland.shp", "r") as shapefile:
geoms = [feature["geometry"] for feature in shapefile]
with rasterio.open("jan_clip.tif") as src:
out_image, out_transform = mask(src, geoms, crop=True)
out_meta = src.meta.copy()
out_meta.update({"driver": "GTiff",
"height": out_image.shape[1],
"width": out_image.shape[2],
"transform": out_transform})
with rasterio.open("masked2.tif", "w", **out_meta) as dest:
dest.write(out_image)
ポリゴンと交差しない領域ではなく、交差する領域をマスクするにはどうすればよいですか?