Как получить однослойные широту и долготу для постоянных времени и глубины из файла NetCDF? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь прочитать файл NetCDF с 4 параметрами ( Время, Глубина, Широта, Долгота ), я хочу прочитать файл с постоянным временем и глубиной.

Сейчас я читаю весь файл и затем получаю значения в 4D сетке , а затем анализирую сетку, чтобы получить значения с постоянной глубиной и временем в 2D массиве

//I have read the values of time and depth in TimeArr and depthArr respectively

int depthIndex = binarySearchInArray(depthArr, d);
int timeIndex = binarySearchInArray(timeArr, d);

ArrayFloat.D4 tempArr = (ArrayFloat.D4) v.read();
float[][] grid = new float[(int) latArr.getSize()][(int) lonArr.getSize()];
for (int i = 0; i < latArr.getSize(); i++) {
    for (int j = 0; j < lonArr.getSize(); j++) {
         grid[i][j] = tempArr.get(timeIndex, depthIndex, i, j);
    }
}
return grid;

Строка ArrayFloat.D4 tempArr = (ArrayFloat.D4) v.read(); занимает много времени, чтобы прочитать файл, если он слишком большой. Кроме того, бессмысленно читать все измерения, когда мне нужно только одно.

Есть ли способ непосредственного чтения файла только по двум измерениям (с двумя измерениями, временем и глубиной, с постоянным значением)?

Заранее большое спасибо.

1 Ответ

0 голосов
/ 11 января 2019

Один из способов, которым вы можете просто прочитать нужные данные, - это использовать read(int[] origin, int[] shape) метод на Variable:

// define the indexes where you would like the array
// subset to start
int[] origin = new int[] {timeIndex, depthIndex, 0, 0};

// define the overall size of the read to be done, starting
// at origin
int[] size = new int[] {1, 1, latSize, lonSize};

// read the subset
Array data4D = v.read(origin, size);

// remove any dimensions of size 1
Array data2D = data4D.reduce();

, где latSize и lonSize - соответственно размер этих размеров.

Для получения дополнительной информации, а также для нескольких других подходов см. Учебное пособие netCDF-Java (в частности, Чтение данных из переменной ).

ура!

...