Чтение флагов качества из файлов netcdf - PullRequest
0 голосов
/ 27 февраля 2019

У меня проблемы с использованием (пониманием) информации QA, полученной из файла .nc, для выбора соответствующих ячеек моего растра.

Я автоматически использую пакет "растр" и команду raster ()преобразует двоичную информацию, хранящуюся в исходном файле, в целые числа.
Теперь я хочу разобраться в результирующих числах (в диапазоне от 68 до 282).

К сожалению, битовые слова не соответствуют шаблону MODIS,но выглядят так:
xx | x | xxx | xx
переход от бита 7 к бит 0 (биты 15-8 не используются, подробное описание содержимого каждой позиции можно увидеть в следующей таблице: Описание битовой строки из документации )

Проблема теперь в том, что когда я "переводю" целые числа в моем растре в двоичный файл, я получаю строки, которые не соответствуют "формулировке"pattern ".

Я использовал функцию из R Book (Crawley 2007):

binary <- function(x) {
  i <- 0
  string <- numeric(32)
  while(x > 0) {
    string[32 - i] <- x %% 2
    x <- x %/% 2
    i <- i + 1 
  }
  first <- match(1, string)
  string[first:32] 
}

, которая дает следующий результат:

 > binary(280)
 [1] 1 0 0 0 1 1 0 0 0
> binary(204)
 [1] 1 1 0 0 1 1 0 0

Теперь нЛюбой способ чтения этого дает ощутимые результаты.
(Согласно схеме маркировки в таблице 1)

Мои подходы
-> назад / вперед
-> ограничение до8 позиций для учета различной длины
не сработали.

Чего мне не хватает?В чем ошибка?

Заранее благодарим вас за любую помощь.
Извините за неправильные условия и ошибки в номенклатуре, я только вхожу в этот домен.

Кстати: я также попробовал альтернативное целочисленное преобразование с похожими результатами:

> f <- as.integer(intToBits(280))
> f
 [1] 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> f[9:1]
 [1] 1 0 0 0 1 1 0 0 0
...