Я пытаюсь объединить 4 сторожевых изображения из 2-х часов, используя инструмент rasterio.merge.merge и используя границы из файла геоджона для обрезки изображения.Я не могу узнать, как правильно преобразовать файл geojson в правильные границы.
Я могу объединить 4 растровых изображения в обычном режиме, если для границ установлено значение Нет.Я попытался ввести границы вручную из файла geojson [bounds = (слева, снизу, справа, сверху)].Но это дает мне выходной растр без данных.Если распечатать обычный объединенный файл и просмотреть границы и другие данные, я вижу, что границы представляют собой большие числа со значениями в метрах и относятся к некоторому часовому поясу UTM.
import rasterio
from rasterio import merge
import glob
import os
SAVE_Location = 'E:/Products/2016-1-1 - 2017-4-1_galway/20160101 -
20170204/True_Colour_Image/'
search_criteria = "T*.tiff"
q = os.path.join(SAVE_Location, search_criteria)
print(q)
Files_for_Mosaic = glob.glob(q) #search for .tiffs in folder
print(Files_for_Mosaic)
src_files_to_mosaic = []
for fp in Files_for_Mosaic: #open tiff files and add there values to list.
src = rasterio.open(fp)
src_files_to_mosaic.append(src)
top = 53.352190769802725 #bounds from .geojson file
left = -9.3878173828125
bottom = 53.097322593577
right = -8.8714599609375
bounds = (left, bottom, right, top)
mosaic, out_trans = rasterio.merge.merge(src_files_to_mosaic, bounds =
None) #Merge rasters, bounds = None or bounds
print(mosaic)
print(out_trans)
out_meta = src.meta.copy() #Copy the metadata
out_meta.update({"driver": "GTiff", # Update the metadata
"height": mosaic.shape[1],
"width": mosaic.shape[2],
"transform": out_trans,
#"crs": "+proj=utm +zone=35 +ellps=GRS80 +units=m
+no_defs "
}
)
saveLocationName = SAVE_Location + 'Mosaic.tiff'
with rasterio.open(saveLocationName, "w", **out_meta) as dest: #Write the
mosaic raster to disk
dest.write(mosaic)
image = rasterio.open('E:/Products//2016-1-1 - 2017-4-1_galway//20160101 -
20170204/True_Colour_Image/Mosaic.tiff', 'r') #open created mosaic to view
properties
print('bounds = ', image.bounds)
print('transform = ', image.transform)
print('crs =', image.crs)
print('meta =', image.meta)
Мне нужен какой-то способ для преобразования границ геоджона в нечто, что rasterio.merge исключит, и, надеюсь, сделает это, просто прочитав файл .geojson.Я считаю, что это как-то связано с transform и crs входных файлов tiff, но у меня закончились идеи о том, как заставить это работать.
Я получаю следующий вывод из приведенного выше кода:
bounds = BoundingBox(left=399960.0, bottom=5790240.0, right=609780.0,
top=6000000.0)
transform = | 10.00, 0.00, 399960.00|
| 0.00,-10.00, 6000000.00|
| 0.00, 0.00, 1.00|
crs = EPSG:32629
meta = {'driver': 'GTiff', 'dtype': 'uint16', 'nodata': None, 'width':
20982, 'height': 20976, 'count': 3, 'crs':
CRS.from_dict(init='epsg:32629'), 'transform': Affine(10.0, 0.0, 399960.0,
0.0, -10.0, 6000000.0)}
Любая помощь очень ценится.