Это мой первый вопрос, а также мое первое испытание с использованием python кодирования для обработки изображений. Я пытаюсь рассчитать различные индексы растительности по изображениям БПЛА, используя python для ускорения процесса. Проблема в том, что когда я сравнивал выходные файлы из arcmap и python кода, были некоторые различия. Во-первых, изображения из кода python сдвигаются с исходного географического положения. Во-вторых, файлы намного больше по размеру.
Итак, мои вопросы:
- Код ниже в порядке или его можно улучшить?
- почему размер выходных файлов в два раза больше?
- Почему географические положения выходных изображений слегка смещены?
Спасибо за вашу помощь.
Python код:
import os
import rasterio
import numpy as np
input_path = r"Z:\NewDeal\Input"
outDir = r"Z:\NewDeal\output"
for f in os.listdir(input_path):
if f.endswith(".tif"):
name1=f[:4]
raster = rasterio.open(os.path.join(input_path, f))
blue = raster.read(1).astype('float64')
green = raster.read(2).astype('float64')
red = raster.read(3).astype('float64')
np.seterr(divide='ignore', invalid='ignore')
#thies are the vegitation ideceis calcuilations
ExG = 2*green - red- blue
ro_name = "ExG"+ name1 +".tif"
outPath = os.path.join(outDir, ro_name)
output_name = rasterio.open(outPath,'w',driver='Gtiff',
width= raster.width, height = raster.height,
count=1, crs= raster.crs,
transform=raster.transform,
dtype='float64')
output_name.write_band(1,ExG)
output_name.close()
print('End of calculation and output')