Как я могу преобразовать набор данных MADR (многоугловой спектроскопический радиометр) уровня 2 AOD (MIL2ASAE) в данные сетки - PullRequest
0 голосов
/ 23 марта 2019

Я могу конвертировать как пакетный набор данных «Aerosol_Optical_Depth» внутри MISR (многоуглового спектро-радиометра изображения) уровня 2 (MIL2ASAE) в данные сетки, которые находятся в формате .nc, и в 2-мерном измерении, используяgdal_translate и gdal_warp.Для этого я использую следующий код gdal.

# get the reprojection information, stuff it into
 a virtual file (.vrt)
gdal_translate -of VRT HDF5:"$1"://4.4_KM_PRODUCTS/"$2" misr.vrt

# delete the bad ground control points
sed '/X=\"-9.999000000000E+03"/d' misr.vrt > final.vrt

# grab the filename without an extension
filename=$(basename "$1") `filename="${filename%.*}"

# reproject the data using the cleaned up VRT file
gdalwarp -overwrite -tr 0.1 0.1 -of GTIFF -tps -r near -t_srs EPSG:4326 final.vrt "/mnt/d/my/output/path/$filename_$1.tif"

Я сохраняю этот код в файле .sh и помещаю его в папку, где находятся мои входные файлы, и запускаю следующую команду в командной строке linux

/ mnt / d / my / inputfolder $ для i в * .nc;do ./gdal_swath2grdmisr.sh $ i Aerosol_Optical_Depth;done

это будет пакетная обработка файлов внутри папки, преобразующая мой требуемый набор данных Aerosol_Optical_Depth из полосы обзора в сетку.Но теперь проблема в том, что во входном файле есть другой набор данных с именем "Spectral_AOD_Scaling_Coeff", мне нужно преобразовать его из полосы в сетку. На самом деле я хочу AOD уровня 2 для MISR на 660 нм, используя эту переменную, я могу сделать это.Я попытался сделать то же самое, но в результате выдается сообщение об ошибке:

Размер входного файла равен 3, 496 ОШИБКА 1: Невозможно вычислить преобразование между пикселем / линией и координатами с географической привязкой для final.vrt * на основе GCP_TPS1010 *

Код загружает входной файл размером: входной файл имеет размер 3, 496, но на самом деле файл имеет размер 4032 x 496 x 3, это трехмерная матрица размера xyz, я думаю, что ошибка заключается в том, чтоКод принимает свои размеры Y и Z.Я уже пробовал этот код для переменной mod2 lOD AOD "Deep_Blue_Spectral_Aerosol_Optical_Depth_Land", это также 3d-матрица, и код работает очень хорошо для этого, тогда я не знаю, почему gdal_translate принимает значения y и z вместо значений xy MISRПеременная AOD "Spectral_AOD_Scaling_Coeff".Есть ли способ, с помощью которого gdal_translate позволяет пользователю указать размер входного набора данных.Если у кого-то есть идеи или предложения по моей проблеме, пожалуйста, помогите мне.Если мне известны какие-либо другие методы, кроме использования GDAL для решения моей проблемы, я тоже могу использовать этот метод. Я намерен только преобразовать эту переменную из полосы в таблицу, любой метод осуществим.Я прилагаю файл примера (https://drive.google.com/open?id=1Cio_A7OxpPp7p_W35D8DhRH0AtpZWDCI) и файл кода (https://drive.google.com/open?id=1U_RqDulomDoQL15hPVqjz0_qf4TzgULh)

)
...