Я получаю изображение Sentinel-2 с метаданными с сервера ArcGIS REST API. Это строка байтов. В настоящее время я сначала записываю данные в tif-файл с помощью f.write (). Затем я открываю его с помощью imageio, а затем сохраняю как geoTIFF с помощью gdal.
Я хотел бы сохранить изображение напрямую как geoTIFF с помощью gdal. Но я не понял, как извлечь изображение в виде массива numpy непосредственно из байтовых данных или как использовать gdal для записи изображения непосредственно из байтовых данных. Я использую Python 3.8 и Windows 10.
import requests
from imageio import imread
from osgeo import gdal
response = requests.get(im_url, auth=auth) # call image url
im_binary = response.content # the image in binary format
im_newpath = 'testimage.tif'
with open(im_newpath, 'wb') as f:
f.write(im_binary)
print(type(im_binary))
print(im_binary[0:50])
возвращает:
<class 'bytes'>
b'II*\x00\x08\x00\x00\x00\x15\x00\x00\x01\x03\x00\x01\x00\x00\x00X\x02\x00\x00\x01\x01\x03\x00\x01\x00\x00\x00\x90\x01\x00\x00\x02\x01\x03\x00\r\x00\x00\x00\n\x01\x00\x00\x03\x01\x03\x00'
Мои попытки декодировать данные пока не дали результатов.
decoded = im_binary.decode('utf_16')
UnicodeDecodeError: 'utf-16-le' codec can't decode bytes in position 364-365: illegal UTF-16 surrogate
Игнорирование или замена ошибок дает различные c символы, отличные от nunmeri. Есть какие-нибудь советы?