python - 在 Python 3.7 中与 Rasterio 合并
问题描述
我正在尝试运行此代码:
# -*- coding: utf-8 -*-
"""
Created on Wed May 13 12:43:07 2020
@author: Matthew Farnham
"""
import gdal
import os.path
import rasterio
from rasterio.merge import merge
from rasterio.plot import show
import glob
import os
import numpy as np
with rasterio.Env(GDAL_TIFF_INTERNAL_MASK=True):
PIXELTYPE = 'DEFAULT',
TFW='YES'
directory = r"H:\Projects\Countries\USA\State\Washington_DC\DTM\LIDAR\Datagateway\Unzipped\elevation"
Output = r"E:\Previsico\PERM\Matthew\Previsico\7_Model_Workings\DEM_Mosaic\Data_Testing_Keep_empty\Trial1\Test3.tif"
search_criteria = "*.tif"
q = os.path.join(directory, search_criteria)
print(q)
dem_fps = glob.glob(q)
print(dem_fps)
Mosaic_files = []
for i in dem_fps:
src = rasterio.open(i)
Mosaic_files.append(src)
out_meta = src.meta.copy()
mosaic, out_trans = merge(Mosaic_files)
out_meta = src.meta.copy()
out_meta.update({"driver": "GTiff",
"height": mosaic.shape[1],
"width": mosaic.shape[2],
"transform": out_trans,
"crs":"+proj= unknown",
"BigTIFF" : "yes",
}
)
with rasterio.open(Output, "w", BigTIFF = 'YES', **out_meta) as dest:
dest.write(mosaic)
我在 64 位环境中的 Python 3.7 中运行它。错误是:“MemoryError: Unable to allocate 17.4 GiB for an array with shape (1, 70544, 66261) and data type float32”
我正在尝试镶嵌(合并)栅格文件(.tif)以创建包含所有单个栅格文件的栅格数据集。有没有办法让 Python 先编写它而不是将所有内容存储到内存中?
谢谢大家的帮助!
解决方案
推荐阅读
- pandas - 在 Pandas 中向量化条件更新操作
- arrays - API 在反应中显示数组映射
- angular - 实施 Angular 国际化 (i18n) 后路线混乱
- php - ACF Wordpress 显示图像简码问题
- python - 在 Python 中安装 PyGame 时出现错误
- excel - 如何使一个字符串等于另一个字符串
- javascript - 以下代码是否同步返回已解决的承诺?
- powerbi - DAX:仅当数据集中所有年份的数据都存在时才计算
- r - 如何修复地图上不正确的自动标签(tmap)
- python - 如何将robotframework-hub生成的libdoc保存到本地