Рассчитать границы растерио из файла Geojson в python - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь объединить 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)}

Любая помощь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...