public static CoordsSet factory(boolean constantForecast, List<CoverageCoordAxis> axes) { return new CoordsSet(constantForecast, axes); }
private void incr() { int digit = getRank() - 1; while (digit >= 0) { odo[digit]++; if (odo[digit] < shape[digit]) break; // normal exit // else, carry to next digit in the odometer odo[digit] = 0; digit--; } }
CoordsSet coordIter = CoordsSet.factory(subsetCoordSys.isConstantForecast(), coordsSetAxes);
private Array readDataFromPartition2(PartitionCollectionImmutable.VariableIndexPartitioned vindexP, CoordsSet want, RangeIterator yRange, RangeIterator xRange) throws IOException, InvalidRangeException { // collect all the records that need to be read int resultPos = 0; for (SubsetParams coords : want) { PartitionCollectionImmutable.DataRecord record = vindexP.getDataRecord(coords); if (record != null) { record.resultIndex = resultPos; records.add(record); } resultPos++; } // sort by file and position, then read DataReceiverIF dataReceiver = new DataReceiver(want.getShape(yRange, xRange), yRange, xRange ); readPartitioned(dataReceiver); return dataReceiver.getArray(); }
private Array readDataFromCollection2(GribCollectionImmutable.VariableIndex vindex, CoordsSet want, RangeIterator yRange, RangeIterator xRange) throws IOException, InvalidRangeException { // first time, read records and keep in memory vindex.readRecords(); // collect all the records that need to be read int resultIndex = 0; for (SubsetParams coords : want) { GribCollectionImmutable.Record record = vindex.getRecordAt(coords); if (record != null) { DataRecord dr = new DataRecord(resultIndex, record, vindex.group.getGdsHorizCoordSys()); if (GribDataReader.validator != null) dr.validation = coords; records.add(dr); } resultIndex++; } DataReceiverIF dataReceiver = new DataReceiver(want.getShape(yRange, xRange), yRange, xRange ); read(dataReceiver); return dataReceiver.getArray(); }
public int[] getShape(RangeIterator y, RangeIterator x) { int[] result = new int[getRank() + 2]; System.arraycopy(shape, 0, result, 0, shape.length); result[shape.length] = y.length(); result[shape.length+1] = x.length(); return result; }