FY-3 калибровка: как получить level 1b данные?

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
cmath10
Новоприбывший
Сообщения: 7
Зарегистрирован: 30 янв 2016, 13:07
Репутация: 0

FY-3 калибровка: как получить level 1b данные?

Сообщение cmath10 » 31 янв 2016, 10:27

Здравствуйте! Недавно начал заниматься ДЗЗ, пока что с навыками и опытом в этой области туго. Возникла необходимость поработать со снимками китайского спутника FY-3 (A/B/C), конкретно с инструментами MERSI и VIRR. Документации по ним маловато в сети (на доступных мне языках - русском и английском), по запросу в Google "MERSI calibration" нашел пару документов, там пишется, что нужно воспользоваться формулой Reflectance = Slope*(EV-SV)*d^2/(100*cos(SolZ)), Slope = k0+k1*DSL, k0 и k1 извлекаются из файла с данными уровня 1a; DSL - дней со дня запуска; SolZ - зенитный угол солнца, в градусах; d - расстояние от Земли до Солнца в а.е., EV,SV - Earth View и Space View, также берутся из файла с данными. Файлы поставляются в формате HDF5. Сайт CMA (китайская метеорологическая служба), откуда эти данные берутся, софта для преобразования данных 1a в 1b не предоставляет, поэтому пишу свой (на C#). Попробовал применить формулу к данным - получил значения в диапазоне [0.0, 2.1] что, по всей видимости, неправильно. ЧЯДНТ? На сайте разработчиков про эти инструменты (MERSI и VIRR) пишут "MODIS-like radiometers", беда в том, что и с MODIS-ом пока что иметь дел не приходилось (можно ли применить хоть как-нибудь документацию MODIS?). Если есть возможность - подскажите какую-нибудь лит-ру или документацию на RUS/ENG, пожалуйста. Или толкните в верном направлении, чтобы получить l1b данные. Any kind of help will be appreciated.
***
Сайт CMA: http://satellite.cma.gov.cn/PortalSite/Default.aspx
Update: есть какой-то FENGYUN Toolkit v1.1, но почему-то не качается, даже нет возможность взглянуть, что внутри.
***
P.S. По VIRR нашел только для его IR каналов, как калибровать остальные - засада :( .

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение gamm » 31 янв 2016, 13:59

некоторые мысли :D

а метаданные для этого чуда есть какие-то, или только HDF? (да и внутри него могут быть массивы с коэффициентами).

(EV-SV) - намекает, что это уже пересчитано из попугаев DN (в которых идет поток с борта) в radiance TOA (top of atmosphere), про это что-нибудь написано? обычно в исходном файле DN, которые пересчитываются в radiance (хотя это может быть спрятано в k1). И судя по всему, SV используется как "уровень черного" для получения излучения собственно Земли

единственное, что вызывает сомнения, это k1*DSL - получается, что линейка быстро деградирует со временем. И какие там значения для k1, k2? И уж совсем детские вещи нужно посмотреть в программе, типа перевода зенитного угла в радианы, и т.д. Лучше для начала положить d=1, SolZ=0 (хотя и множитель 100 при косинусе тоже вызывает подозрение, разве что для нормировки k1, k2).

В общем, для начала нужно попробовать посчитать radiance TOA, убрав все остальное, считая зенитный угол нулем и расстояние 1, и сравнить с данными других приборов типа MODIS для того же сезона. А вот радианс уже пересчитывается одинаково для всех.

cmath10
Новоприбывший
Сообщения: 7
Зарегистрирован: 30 янв 2016, 13:07
Репутация: 0

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение cmath10 » 31 янв 2016, 16:18

Про EV в файле (в атрибутах):
long_name - TOA Reflectance Factor (0-100) for 1 KM Reflective Solar Bands
Там есть атрибуты slope = 0.01 и intercept = 0, сами данные в диапазоне 0-10000, т.е. на выходе я получаю slope*EV-intercept и значения 0-100. Данный датасет называется EV_1KM_RefSB.

k0 и k1 берутся из датасета RSB_Cal_Cor_Coeff, есть и k2 (очень маленькие значения ~0):

Для примера:
k0 k1 k2
0.0287 7.65E-6 -3.53E-9

SV для каждого канала - вектор 1x2000 (EV - матрица 2000x2048). Я думаю важно, чтобы reflectance оказался в допустимом диапазоне - ведь значения ~2 это что-то ненормальное, так?
***
Углы в радианы переводим стандартненько pi/180 * angle
Еще в атрибутах датасета RSB_Cal_Cor_Coeff нашел: Calibration Model:Slope=k0+k1*DSL+k2*DSL*DSL;RefFacor=Slope*(EV-SV);Ref=RefFacor*d*d/100/cos(SolZ)
***
P.S.
Есть еще такие данные в файле:
EVS_Attitude_Angles
EVS Orb Position
Spave View DN Average (BB_DN_average)
Land/Sea Mask
CV Moon Vector
Quality Assurance Index
Range
Spave View DN Average (SV_DN_average)
CV Sun Vector
Spave View DN Average (VOC_DN_average)
Азимутальный и зенитный углы сенсора, азимутальный угол солнца\
LandCover
Lat/Lon

cmath10
Новоприбывший
Сообщения: 7
Зарегистрирован: 30 янв 2016, 13:07
Репутация: 0

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение cmath10 » 31 янв 2016, 17:54

Вот что еще нашел в файле:
Вложения
meta.txt
Метаданные из HDF5
(221.05 КБ) 715 скачиваний

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение gamm » 31 янв 2016, 18:42

загадочный какой-то спутник ... нужно обработки пример искать. Странно как-то все выглядит. Все, что находится (по именам параметров типа IR_DN_Normalized_Coeff - например тыц) - на китайском, нужно засовывать в переводчик (там ваши формулы видны, но поясниловка на китайском).

только там немного другое, Ref=(a2×EV^2+a1×EV+a0)×d^2/100/cos(SolZ) и т.д.

cmath10
Новоприбывший
Сообщения: 7
Зарегистрирован: 30 янв 2016, 13:07
Репутация: 0

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение cmath10 » 01 фев 2016, 13:04

gamm писал(а):только там немного другое, Ref=(a2×EV^2+a1×EV+a0)×d^2/100/cos(SolZ) и т.д.
Google переводчиком с китайского на english перевел, там вроде эта формула упоминается как старая модель, затем приводятся мои формулы как новая модель на замену. При этом про коэффициенты a не слова. Попробую поискать еще инфы, если будут результаты - отпишусь. Хотя с примерами туго, на китайском это что-ли вбить... :?

Pilot
Активный участник
Сообщения: 128
Зарегистрирован: 26 апр 2006, 12:28
Репутация: 36
Откуда: Петропавловск-Камчатский

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение Pilot » 01 фев 2016, 16:32

у китайцев есть два модуля для первичной обработки данных FY-3 MPT/HRPT Data Preprocessing software packages
FY3L0pp 1.1 version, FY3L1pp 1.1 version http://www.nsmc.cma.gov.cn/en/NSMC/Cont ... ils01.html
Также можете обратиться в Сканэкс, у них есть модуль обработки данных FY-3 от raw до l1b уровня.

cmath10
Новоприбывший
Сообщения: 7
Зарегистрирован: 30 янв 2016, 13:07
Репутация: 0

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение cmath10 » 02 фев 2016, 02:19

Pilot писал(а):у китайцев есть два модуля для первичной обработки данных FY-3 MPT/HRPT Data Preprocessing software packages
FY3L0pp 1.1 version, FY3L1pp 1.1 version http://www.nsmc.cma.gov.cn/en/NSMC/Cont ... ils01.html
Этот софт мне не нужен. Смотрите стартовое сообщение темы. Я работаю с l1a данными, а указанный софт преобразует бортовые данные в l0 и l1a, но l1a я могу скачать прямо с их сайта (по квотам, но все же).
Pilot писал(а):Также можете обратиться в Сканэкс, у них есть модуль обработки данных FY-3 от raw до l1b уровня.
У меня, к сожалению, нет денег, чтобы покупать сейчас проприетарное ПО. Да и наверняка их модуль тоже требует какой-нибудь проги вроде ENVI. Пиратским софтом мне пользоваться никак нельзя (разве что как вспомогательным средством, не более, которое потом откинем).

pendduduk
Активный участник
Сообщения: 179
Зарегистрирован: 05 июл 2009, 22:18
Репутация: 47

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение pendduduk » 02 фев 2016, 19:25

Добрый день,

Если Вам нужно получить значения отражательной способности на кромке атмосферы (TOA Reflectance), то:

1. Читайте из HDF массив с коэффициентами (множитель и сдвиг, подряд по каждому каналу) "RefSB_Cal_Coefficients" - для VIRR
2. Читаете массив с зенитным углом Солнца "SolarZenith".
3. Приводите массив углов к градусам применив slope и intercept.
4. Переводите массив углов в радианы.
5. Читаете массив DN яркости и для каждого пикселя выполняете Pn=(DNn*gain[n]+DNn*bias[n])/cos(Z). Z - зенитный угол в радианах.

значения будут примерно 0-3, в среднем 0.1-0.4

cmath10
Новоприбывший
Сообщения: 7
Зарегистрирован: 30 янв 2016, 13:07
Репутация: 0

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение cmath10 » 03 фев 2016, 13:40

pendduduk писал(а):Добрый день,

Если Вам нужно получить значения отражательной способности на кромке атмосферы (TOA Reflectance), то:

1. Читайте из HDF массив с коэффициентами (множитель и сдвиг, подряд по каждому каналу) "RefSB_Cal_Coefficients" - для VIRR
2. Читаете массив с зенитным углом Солнца "SolarZenith".
3. Приводите массив углов к градусам применив slope и intercept.
4. Переводите массив углов в радианы.
5. Читаете массив DN яркости и для каждого пикселя выполняете Pn=(DNn*gain[n]+DNn*bias[n])/cos(Z). Z - зенитный угол в радианах.

значения будут примерно 0-3, в среднем 0.1-0.4
Там идут 14 чисел в строчку, я так понимаю там gain и bias вперемежку, они там чередуются? СПС за помощь, попробую в ближайшее время, отпишусь о результатах. Значения reflectance >1 это я так понимаю "сбойные" пиксели?
***
А по mersi что-нибудь знаете?

pendduduk
Активный участник
Сообщения: 179
Зарегистрирован: 05 июл 2009, 22:18
Репутация: 47

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение pendduduk » 03 фев 2016, 14:45

pendduduk писал(а):Там идут 14 чисел в строчку, я так понимаю там gain и bias вперемежку, они там чередуются?
gain,bias,gain,bias...
pendduduk писал(а):Значения reflectance >1 это я так понимаю "сбойные" пиксели?
Не факт, может быть и блик.
Сбойные строки там тоже помечены внутри файла, однако есть смещение на 1 в нумерации. Правда там отмечены только сильно зашумленные строки.
pendduduk писал(а):А по mersi что-нибудь знаете?
Честно говоря не смотрел, но подозреваю что все по аналогии.

cmath10
Новоприбывший
Сообщения: 7
Зарегистрирован: 30 янв 2016, 13:07
Репутация: 0

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение cmath10 » 06 фев 2016, 12:02

pendduduk писал(а):Добрый день,

Если Вам нужно получить значения отражательной способности на кромке атмосферы (TOA Reflectance), то:

1. Читайте из HDF массив с коэффициентами (множитель и сдвиг, подряд по каждому каналу) "RefSB_Cal_Coefficients" - для VIRR
2. Читаете массив с зенитным углом Солнца "SolarZenith".
3. Приводите массив углов к градусам применив slope и intercept.
4. Переводите массив углов в радианы.
5. Читаете массив DN яркости и для каждого пикселя выполняете Pn=(DNn*gain[n]+DNn*bias[n])/cos(Z). Z - зенитный угол в радианах.

значения будут примерно 0-3, в среднем 0.1-0.4
На счет DNn - это значение яркости для n-ого канала? Кроме того, в VIRR нет DN, есть EV_RefSB, я так понимаю, нужно использовать его, да? У меня получились значения в диапазоне 0-18000, среднее 20-40,

pendduduk
Активный участник
Сообщения: 179
Зарегистрирован: 05 июл 2009, 22:18
Репутация: 47

Re: FY-3 калибровка: как получить level 1b данные?

Сообщение pendduduk » 06 фев 2016, 13:10

cmath10 писал(а):На счет DNn - это значение яркости для n-ого канала? Кроме того, в VIRR нет DN, есть EV_RefSB, я так понимаю, нужно использовать его, да? У меня получились значения в диапазоне 0-18000, среднее 20-40,
Да конечно, нужно использовать яркость канала :)
И еще нужно разделить на cos(угла солнца).
Еще пардон совсем забыл, там значения в 100 раз примерно большее чем надо будут (видимо мощность излучения на сенсоре или ESUN там в W/cm2/sr а не W/m2/sr
Так что то что на выходе умножте на 0.01.

Вообще там по моему в самом файле в сказано что за единицы и где.

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость