Tengo 4 cuadrículas ASCII separadas que contienen los mismos datos:
1 2 3 4
3 4 5 6
4 5 6 8
7 9 5 4
Los metadatos, sin embargo, son diferentes:
ncols 4
nrows 4
xllcorner x
yllcorner y
cellsize 1
nodata_value -9999
Dónde x
y y
toman los valores (0,0), (4,0), (4,4) y (0,4) respectivamente. A continuación, intento ejecutar una operación de fusión de la siguiente manera con rasterio
:
from rasterio.merge import merge
import rasterio
import glob
def merge_datasets(out_filename, dataset_list, driver):
print('running merge command and outputting mosaic')
mosaic, out_trans = merge(dataset_list)
print('updating metadata')
out_meta = dataset_list[0].meta.copy()
out_meta.update({"driver": driver, "height": mosaic.shape[1], "width": mosaic.shape[2], "transform": out_trans})
print('writing file')
with rasterio.open(out_filename, 'w', **out_meta) as dest: # YES, NO, IF_NEEDED, IF_SAFER
dest.write(mosaic)
out_dataset = rasterio.open(out_filename)
return out_dataset
if __name__=='__main__':
tiles_filename_list = glob.glob(r'test_data/*.asc')
tiles_dataset_list = open_dataset_list(tiles_filename_list)
merged_dataset = merge_datasets(r'test_data/out.asc', tiles_dataset_list, driver='AAIGrid')
Esto crea la siguiente cuadrícula incorrecta:
ncols 8
nrows 8
xllcorner 0.000000000000
yllcorner 0.000000000000
cellsize 1.000000000000
NODATA_value -9999
1 2 3 4 1 2 2 3
3 4 5 6 3 4 4 5
3 4 5 6 3 4 4 5
4 5 6 8 4 5 5 6
1 2 3 4 1 2 2 3
3 4 5 6 3 4 4 5
4 5 6 8 4 5 5 6
7 9 5 4 7 9 9 5
¿Alguien sabe por qué ocurre esto? Yo habría esperado:
ncols 8
nrows 8
xllcorner 0.000000000000
yllcorner 0.000000000000
cellsize 1.000000000000
NODATA_value -9999
1 2 3 4 1 2 3 4
3 4 5 6 3 4 5 6
3 4 5 6 3 4 5 6
4 5 6 8 4 5 6 8
1 2 3 4 1 2 3 4
3 4 5 6 3 4 5 6
4 5 6 8 4 5 6 8
7 9 5 4 7 9 5 4
He intentado buscar en las diferentes opciones del método merge en rasterio pero no encontré nada útil.