@Override protected ProductData inferType(String elementName, String value) { return ProductData.createInstance(value); }
@Override public String getValue() throws IllegalAccessException, InvocationTargetException { return leaf.getData().getElemString(); } }
private static Object getDataElemArray(ProductData data, int index) { switch (data.getType()) { case TYPE_INT8: return new byte[]{(byte)data.getElemIntAt(index)}; case TYPE_INT16: return new short[]{(short)data.getElemIntAt(index)}; case TYPE_INT32: return new int[]{data.getElemIntAt(index)}; case TYPE_UINT8: return new byte[]{(byte)data.getElemUIntAt(index)}; case TYPE_UINT16: return new short[]{(short)data.getElemUIntAt(index)}; case TYPE_UINT32: return new int[]{(int)data.getElemUIntAt(index)}; case TYPE_INT64: return new long[]{data.getElemLongAt(index)}; case TYPE_FLOAT32: return new float[]{data.getElemFloatAt(index)}; case TYPE_FLOAT64: return new double[]{data.getElemDoubleAt(index)}; default: return null; } } }
private static void copyLine2Of2(final float[] srcLine, final ProductData destBuffer, final int currentLineIndex, final int sourceStepX) { final int destLength = destBuffer.getNumElems(); final int srcLength = srcLine.length / 2; for (int x = currentLineIndex, i = 0; x < destLength && i < srcLength; ++x, i += sourceStepX) { destBuffer.setElemDoubleAt(x, srcLine[(i << 1) + 1]); } }
private static void copyTwoOfTwo(final ProductData tmpBuffer, final ProductData destBuffer) { final int numElems = destBuffer.getNumElems(); for (int x = 0, i = 1; x < numElems; ++x, i += 2) { destBuffer.setElemFloatAt(x, tmpBuffer.getElemFloatAt(i)); } } }
final int elemSize = destBuffer.getElemSize(); ProductData lineData = ProductData.createInstance(destBuffer.getType(), sourceWidth); long lineStartPos = headerOffset + sourceY * lineSizeInBytes; inStream.seek(lineStartPos + elemSize * sourceOffsetX); lineData.readFrom(0, sourceWidth, inStream); destBuffer.setElemDoubleAt(destPos++, lineData.getElemDoubleAt(x));
final int trgDataType = trgData.getType(); if (trgDataType == srcData.getType() && (trgDataType == ProductData.TYPE_INT16 || trgDataType == ProductData.TYPE_INT32)) { isInt = true; if (sy < 0 || sy >= srcImageHeight) { for (int tx = tx0; tx < maxX; ++tx) { trgData.setElemDoubleAt(tx - trgOffset, noDataValue); trgData.setElemDoubleAt(tx - trgOffset, noDataValue); } else { if (isInt) trgData.setElemIntAt(tx - trgOffset, srcData.getElemIntAt(sx - srcOffset)); else trgData.setElemDoubleAt(tx - trgOffset, srcData.getElemDoubleAt(sx - srcOffset));
final int sampleOffset = imageID + bandSampleOffset; if(destBuffer.getType() == ProductData.TYPE_FLOAT32) { if (flipToSARGeometry && isAntennaPointingRight) { // flip the image left to right final float[] dArray = new float[dataBuffer.getSize()]; destStride = r * w + w; for (int c = 0; c < w; c++) { destBuffer.setElemFloatAt(destStride - c - 1, dArray[srcStride + c]); sampleModel.getSamples(0, 0, w, h, sampleOffset, (float[]) destBuffer.getElems(), dataBuffer); destStride = r * w + w; for (int c = 0; c < w; c++) { destBuffer.setElemIntAt(destStride - c - 1, dArray[srcStride + c]); sampleModel.getSamples(0, 0, w, h, sampleOffset, (int[]) destBuffer.getElems(), dataBuffer);
throws IOException { final int sourceMaxY = sourceOffsetY + sourceHeight - 1; final int x = sourceOffsetX * ProductData.getElemSize(destBuffer.getType()); final long xpos = startPosImageRecords + imageHeaderLength + x; if (sourceStepX == 1) { System.arraycopy(srcLine, 0, destBuffer.getElems(), currentLineIndex, destWidth); } else { copyLine(srcLine, destLine, sourceStepX); System.arraycopy(destLine, 0, destBuffer.getElems(), currentLineIndex, destWidth);
public ProductData getData() { Object dataElemArray = getDataElemArray(data, elemIndex); return ProductData.createInstance(data.getType(), dataElemArray); }
public final ProductData buildOutputProductData() { int widthCount = this.imageWidth + 2; int heightCount = this.imageHeight + 2; int[][] marker = buildMarkerMatrix(widthCount, heightCount); int elementCount = this.imageWidth * this.imageHeight; ProductData data = ProductData.createInstance(ProductData.TYPE_INT32, elementCount); for (int y = 1; y < heightCount - 1; y++) { for (int x = 1; x < widthCount - 1; x++) { int elementIndex = (this.imageWidth * (y - 1)) + (x - 1); data.setElemIntAt(elementIndex, marker[y][x]); //result.setValueAt(y-1, x-1, marker[y][x]); } } WeakReference<int[][]> referenceMarkerMatrix = new WeakReference<int[][]>(marker); referenceMarkerMatrix.clear(); return data; }
private void getCurrentPoint(final int idx, final ProductData[] dataBuffers, final double[] u) { for (int i = 1; i < dataBuffers.length; i++) { u[i - 1] = dataBuffers[i].getElemDoubleAt(idx); } }
switch (destBuffer.getType()) { case ProductData.TYPE_UINT8: case ProductData.TYPE_INT8: break; destBuffer.setElemIntAt(i, dataBuffer.getElem(i)); break; destBuffer.setElemUIntAt(i, swapBytes((short) dataBuffer.getElem(i))); break; destBuffer.setElemUIntAt(i, dataBuffer.getElem(i)); break; destBuffer.setElemFloatAt(i, dataBuffer.getElemFloat(i));
final double referenceRange = attribute.getData().getElemDouble(); double srgrCoeff = globalElem.getAttribute("Ground_to_Slant_Polynomial").getData().getElemDoubleAt(i); if (i == 0) { srgrCoeff += referenceRange;
@Override public void run() { for (int i = 0; i < numOfSourceBands; i++) { bandsRawSamples[i] = getSourceTile(sourceProduct.getBand(sourceBandNames[i]), rectangle).getRawSamples(); } final int n = bandsRawSamples[0].getNumElems(); Arrays.fill(tileMinPCA, Double.MAX_VALUE); for (int i = 0; i < numPCA; i++) { for (int k = 0; k < n; k++) { double vPCA = 0.0; for (int j = 0; j < numOfSourceBands; j++) { vPCA += bandsRawSamples[j].getElemDoubleAt(k) * eigenVectorMatrices[j][i]; } if (vPCA < tileMinPCA[i]) tileMinPCA[i] = vPCA; } } synchronized (minPCA) { computePCAMin(tileMinPCA); } } };
private static void saveT3(final double[][] Tr, final double[][] Ti, final int idx, final ProductData[] targetDataBuffers) { targetDataBuffers[0].setElemFloatAt(idx, (float) Tr[0][0]); // T11 targetDataBuffers[1].setElemFloatAt(idx, (float) Tr[0][1]); // T12_real targetDataBuffers[2].setElemFloatAt(idx, (float) Ti[0][1]); // T12_imag targetDataBuffers[3].setElemFloatAt(idx, (float) Tr[0][2]); // T13_real targetDataBuffers[4].setElemFloatAt(idx, (float) Ti[0][2]); // T13_imag targetDataBuffers[5].setElemFloatAt(idx, (float) Tr[1][1]); // T22 targetDataBuffers[6].setElemFloatAt(idx, (float) Tr[1][2]); // T23_real targetDataBuffers[7].setElemFloatAt(idx, (float) Ti[1][2]); // T23_imag targetDataBuffers[8].setElemFloatAt(idx, (float) Tr[2][2]); // T33 }
private void updateMetadata() { final MetadataElement abstractedMetadata = AbstractMetadata.getAbstractedMetadata(targetProduct); if(abstractedMetadata != null) { abstractedMetadata.setAttributeInt("collocated_stack", 1); } final MetadataElement inputElem = ProductInformation.getInputProducts(targetProduct); getBaselines(sourceProduct, targetProduct); for (Product srcProduct : sourceProduct) { if (srcProduct == masterProduct) continue; final MetadataElement slvInputElem = ProductInformation.getInputProducts(srcProduct); final MetadataAttribute[] slvInputProductAttrbList = slvInputElem.getAttributes(); for (MetadataAttribute attrib : slvInputProductAttrbList) { final MetadataAttribute inputAttrb = AbstractMetadata.addAbstractedAttribute(inputElem, "InputProduct", ProductData.TYPE_ASCII, "", ""); inputAttrb.getData().setElems(attrib.getData().getElemString()); } } }
destStride = (h - r - 1) * w; for (int c = 0; c < w; c++) { destBuffer.setElemIntAt(destStride + c, dArray[srcStride + c]); destStride = (h - r) * w; for (int c = 0; c < w; c++) { destBuffer.setElemIntAt(destStride - c - 1, dArray[srcStride + c]); sampleModel.getSamples(0, 0, w, h, sampleOffset, (int[]) destBuffer.getElems(), dataBuffer);
private synchronized void readDataForRank3Variable(final String bandName, int sourceOffsetX, int sourceOffsetY, int sourceWidth, int sourceHeight, int sourceStepX, int sourceStepY, Variable var, int destWidth, int destHeight, ProductData destBuffer) { final int swath = getSwathNumber(bandName); final int[] shape0 = var.getShape(); shape0[2] = 1; // shape0[0] is height of "outer" grid. // shape0[1] is width of "outer" grid. // shape0[2] is height of the column in each cell in the "outer" grid. final int[] origin = {sourceOffsetY, sourceOffsetX, swath}; final int outerYEnd = (sourceOffsetY + (sourceHeight - 1) * sourceStepY); final int outerXEnd = (sourceOffsetX + (sourceWidth - 1) * sourceStepX); final int[] shape = {outerYEnd - origin[0] + 1, outerXEnd - origin[1] + 1, 1}; try { final Array srcArray = var.read(origin, shape); final int length = destBuffer.getNumElems(); for(int i=0; i< length; ++i) { destBuffer.setElemFloatAt(i, srcArray.getFloat(i)); } } catch (IOException e) { SystemUtils.LOG.severe("Sentinel1OCNReader.readDataForRank3Variable: IOException when reading variable " + var.getFullName()); } catch (InvalidRangeException e) { SystemUtils.LOG.severe("Sentinel1OCNReader.readDataForRank3Variable: InvalidRangeException when reading variable " + var.getFullName()); } }
srcIndex.calculateStride(ty); for (int tx = tx0; tx < maxx; tx++) { final double v = srcBuffer.getElemDoubleAt(srcIndex.getIndex(tx)); if (noDataValue.equals(v)) { trgData.setElemIntAt(trgIndex.getIndex(tx), 0); continue; final double threshold = backgroundMean / kInLinearScale; if (v < threshold) { trgData.setElemIntAt(trgIndex.getIndex(tx), 1); } else { trgData.setElemIntAt(trgIndex.getIndex(tx), 0);