use of com.google.firestore.admin.v1beta1.Index in project imageio-ext by geosolutions-it.
the class NetCDFConverterUtilities method isFillValueOutsideValidRange.
public static boolean isFillValueOutsideValidRange(Attribute validRange, Attribute fillValue, DataType dataType) {
Array range = validRange.getValues();
Index index = range.getIndex();
if (dataType == DataType.FLOAT) {
final float min = range.getFloat(index.set(0));
final float max = range.getFloat(index.set(1));
final float fill = fillValue.getNumericValue().floatValue();
if (fill == min || fill == max)
return false;
else
return true;
} else if (dataType == DataType.DOUBLE) {
final double min = range.getDouble(index.set(0));
final double max = range.getDouble(index.set(1));
final double fill = fillValue.getNumericValue().doubleValue();
if (fill == min || fill == max)
return false;
else
return true;
} else if (dataType == DataType.BYTE) {
final byte min = range.getByte(index.set(0));
final byte max = range.getByte(index.set(1));
final byte fill = fillValue.getNumericValue().byteValue();
if (fill == min || fill == max)
return false;
else
return true;
} else if (dataType == DataType.SHORT) {
final short min = range.getShort(index.set(0));
final short max = range.getShort(index.set(1));
final short fill = fillValue.getNumericValue().shortValue();
if (fill == min || fill == max)
return false;
else
return true;
} else if (dataType == DataType.INT) {
final int min = range.getInt(index.set(0));
final int max = range.getInt(index.set(1));
final int fill = fillValue.getNumericValue().intValue();
if (fill == min || fill == max)
return false;
else
return true;
}
throw new IllegalArgumentException("Actually unsupported Datatype");
}
use of com.google.firestore.admin.v1beta1.Index in project imageio-ext by geosolutions-it.
the class NetCDFConverterUtilities method setData1D.
public static void setData1D(Array originalData, Array destinationData, final DataType navLatDataType, final int maxIndex, final boolean flipData) {
Index originalDataIndex = originalData.getIndex();
Index destinationDataIndex = flipData ? destinationData.getIndex() : originalDataIndex;
if (navLatDataType == DataType.FLOAT) {
for (int pos = 0; pos < maxIndex; pos++) {
float f = originalData.getFloat(originalDataIndex.set(pos));
// Flipping latitudes
if (flipData) {
destinationDataIndex.set(maxIndex - pos - 1);
}
destinationData.setFloat(destinationDataIndex, f);
}
} else if (navLatDataType == DataType.DOUBLE) {
for (int pos = 0; pos < maxIndex; pos++) {
double d = originalData.getDouble(originalDataIndex.set(pos));
// Flipping latitudes
if (flipData) {
destinationDataIndex.set(maxIndex - pos - 1);
}
destinationData.setDouble(destinationDataIndex, d);
}
} else if (navLatDataType == DataType.BYTE) {
for (int pos = 0; pos < maxIndex; pos++) {
byte b = originalData.getByte(originalDataIndex.set(pos));
// Flipping latitudes
if (flipData) {
destinationDataIndex.set(maxIndex - pos - 1);
}
destinationData.setByte(destinationDataIndex, b);
}
} else if (navLatDataType == DataType.SHORT) {
for (int pos = 0; pos < maxIndex; pos++) {
short s = originalData.getShort(originalDataIndex.set(pos));
// Flipping latitudes
if (flipData) {
destinationDataIndex.set(maxIndex - pos - 1);
}
destinationData.setShort(destinationDataIndex, s);
}
} else if (navLatDataType == DataType.INT) {
for (int pos = 0; pos < maxIndex; pos++) {
int i = originalData.getInt(originalDataIndex.set(pos));
// Flipping latitudes
if (flipData) {
destinationDataIndex.set(maxIndex - pos - 1);
}
destinationData.setInt(destinationDataIndex, i);
}
}
}
use of com.google.firestore.admin.v1beta1.Index in project imageio-ext by geosolutions-it.
the class SWANConverter method run.
private void run(String fileNameIn, String fileNameOut) {
try {
final File fileIn = new File(fileNameIn);
final NetcdfFile ncFileIn = NetcdfFile.open(fileNameIn);
final File fileOut = new File(fileNameOut);
// keep original name
final File outputFile = File.createTempFile(fileIn.getName(), ".tmp");
final NetcdfFileWriteable ncFileOut = NetcdfFileWriteable.createNew(outputFile.getAbsolutePath());
boolean hasZeta = false;
// input dimensions
final Dimension timeDim0 = ncFileIn.findDimension("time");
final int nTimes = timeDim0.getLength();
final Dimension latDim0 = ncFileIn.findDimension(NetCDFUtilities.LATITUDE);
final int nLat = latDim0.getLength();
final Dimension lonDim0 = ncFileIn.findDimension(NetCDFUtilities.LONGITUDE);
final int nLon = lonDim0.getLength();
// input VARIABLES
final Variable timeOriginalVar = ncFileIn.findVariable("time");
final Array timeOriginalData = timeOriginalVar.read();
final Index timeOriginalIndex = timeOriginalData.getIndex();
final DataType timeDataType = timeOriginalVar.getDataType();
final Variable lonOriginalVar = ncFileIn.findVariable(NetCDFUtilities.LONGITUDE);
final DataType lonDataType = lonOriginalVar.getDataType();
final Variable latOriginalVar = ncFileIn.findVariable(NetCDFUtilities.LATITUDE);
final DataType latDataType = latOriginalVar.getDataType();
final Array latOriginalData = latOriginalVar.read();
final Array lonOriginalData = lonOriginalVar.read();
// //
//
// Depth related vars
//
// //
Array levelOriginalData = null;
int nZeta = 0;
Array zeta1Data = null;
Dimension zDim = null;
DataType zetaDataType = null;
// Depth
final Variable levelOriginalVar = ncFileIn.findVariable("z");
if (levelOriginalVar != null) {
nZeta = levelOriginalVar.getDimension(0).getLength();
levelOriginalData = levelOriginalVar.read();
zetaDataType = levelOriginalVar.getDataType();
hasZeta = true;
}
Dimension timeDim = ncFileOut.addDimension("time", nTimes);
Dimension latDim = ncFileOut.addDimension(NetCDFUtilities.LAT, nLat);
Dimension lonDim = ncFileOut.addDimension(NetCDFUtilities.LON, nLon);
if (hasZeta)
zDim = ncFileOut.addDimension(NetCDFUtilities.HEIGHT, nZeta);
NetCDFConverterUtilities.copyGlobalAttributes(ncFileOut, ncFileIn.getGlobalAttributes());
// Dimensions
Variable timeVar = ncFileOut.addVariable("time", timeDataType, new Dimension[] { timeDim });
NetCDFConverterUtilities.setVariableAttributes(timeOriginalVar, ncFileOut, new String[] { "long_name" });
ncFileOut.addVariableAttribute("time", "long_name", "time");
ncFileOut.addVariable(NetCDFUtilities.LAT, latDataType, new Dimension[] { latDim });
NetCDFConverterUtilities.setVariableAttributes(latOriginalVar, ncFileOut, NetCDFUtilities.LAT);
ncFileOut.addVariable(NetCDFUtilities.LON, lonDataType, new Dimension[] { lonDim });
NetCDFConverterUtilities.setVariableAttributes(lonOriginalVar, ncFileOut, NetCDFUtilities.LON);
if (hasZeta) {
ncFileOut.addVariable(NetCDFUtilities.HEIGHT, zetaDataType, new Dimension[] { zDim });
NetCDFConverterUtilities.setVariableAttributes(levelOriginalVar, ncFileOut, NetCDFUtilities.HEIGHT, new String[] { "long_name" });
ncFileOut.addVariableAttribute(NetCDFUtilities.HEIGHT, "positive", "up");
ncFileOut.addVariableAttribute(NetCDFUtilities.HEIGHT, "long_name", NetCDFUtilities.HEIGHT);
}
// lat Variable
Array lat1Data = NetCDFConverterUtilities.getArray(nLat, latDataType);
NetCDFConverterUtilities.setData1D(latOriginalData, lat1Data, latDataType, nLat, true);
// lon Variable
Array lon1Data = NetCDFConverterUtilities.getArray(nLon, lonDataType);
NetCDFConverterUtilities.setData1D(lonOriginalData, lon1Data, lonDataType, nLon, false);
if (hasZeta) {
// depth level Variable
zeta1Data = NetCDFConverterUtilities.getArray(nZeta, zetaDataType);
NetCDFConverterUtilities.setData1D(levelOriginalData, zeta1Data, zetaDataType, nZeta, false);
}
// {} Variables
final ArrayList<String> variables = new ArrayList<String>(5);
int numVars = 0;
List<Variable> findVariables = ncFileIn.getVariables();
for (Variable var : findVariables) {
if (var != null) {
String varName = var.getName();
if (varName.equalsIgnoreCase(NetCDFUtilities.LATITUDE) || varName.equalsIgnoreCase(NetCDFUtilities.LONGITUDE) || varName.equalsIgnoreCase(NetCDFUtilities.TIME) || varName.equalsIgnoreCase(NetCDFUtilities.ZETA))
continue;
variables.add(varName);
List<Dimension> dims = var.getDimensions();
boolean hasLocalZeta = false;
for (Dimension dim : dims) {
if (dim.getName().equalsIgnoreCase(NetCDFUtilities.ZETA)) {
hasLocalZeta = true;
break;
}
}
if (hasZeta && hasLocalZeta)
ncFileOut.addVariable(varName, var.getDataType(), new Dimension[] { timeDim, zDim, latDim, lonDim });
else
ncFileOut.addVariable(varName, var.getDataType(), new Dimension[] { timeDim, latDim, lonDim });
NetCDFConverterUtilities.setVariableAttributes(var, ncFileOut, new String[] { "missing_value" });
numVars++;
}
}
// writing bin data ...
ncFileOut.create();
ArrayFloat timeData = new ArrayFloat(new int[] { timeDim.getLength() });
Index timeIndex = timeData.getIndex();
for (int t = 0; t < timeDim.getLength(); t++) {
timeData.setFloat(timeIndex.set(t), timeOriginalData.getFloat(timeOriginalIndex.set(t)));
}
ncFileOut.write("time", timeData);
timeVar = ncFileOut.findVariable("time");
timeDim.addCoordinateVariable(timeVar);
ncFileOut.write(NetCDFUtilities.LAT, lat1Data);
ncFileOut.write(NetCDFUtilities.LON, lon1Data);
if (hasZeta) {
Variable heightVar = ncFileOut.findVariable(NetCDFUtilities.HEIGHT);
zDim.addCoordinateVariable(heightVar);
ncFileOut.write(NetCDFUtilities.HEIGHT, zeta1Data);
}
for (int i = 0; i < numVars; i++) {
String varName = (String) variables.get(i);
Variable var = ncFileIn.findVariable(varName);
boolean hasLocalZeta = NetCDFConverterUtilities.hasThisDimension(var, NetCDFUtilities.ZETA);
Array originalVarArray = var.read();
DataType varDataType = var.getDataType();
Array destArray = null;
int[] dimensions = null;
if (hasZeta && hasLocalZeta) {
dimensions = new int[] { timeDim.getLength(), zDim.getLength(), latDim.getLength(), lonDim.getLength() };
} else {
dimensions = new int[] { timeDim.getLength(), latDim.getLength(), lonDim.getLength() };
}
destArray = NetCDFConverterUtilities.getArray(dimensions, varDataType);
final boolean setZeta = hasZeta && hasLocalZeta;
final int[] loopLengths;
if (setZeta)
loopLengths = new int[] { nTimes, nZeta, nLat, nLon };
else
loopLengths = new int[] { nTimes, nLat, nLon };
NetCDFConverterUtilities.writeData(ncFileOut, varName, var, originalVarArray, destArray, false, false, loopLengths, true);
}
ncFileOut.close();
outputFile.renameTo(fileOut);
} catch (Exception e) {
// something bad happened
if (NetCDFConverterUtilities.LOGGER.isLoggable(Level.INFO))
NetCDFConverterUtilities.LOGGER.log(Level.INFO, e.getLocalizedMessage(), e);
JAI.getDefaultInstance().getTileCache().flush();
}
}
use of com.google.firestore.admin.v1beta1.Index in project firebase-android-sdk by firebase.
the class LocalSerializer method decodeFieldIndexSegments.
public List<FieldIndex.Segment> decodeFieldIndexSegments(Index index) {
List<FieldIndex.Segment> result = new ArrayList<>();
for (Index.IndexField field : index.getFieldsList()) {
FieldPath fieldPath = FieldPath.fromServerFormat(field.getFieldPath());
FieldIndex.Segment.Kind kind = field.getValueModeCase().equals(Index.IndexField.ValueModeCase.ARRAY_CONFIG) ? FieldIndex.Segment.Kind.CONTAINS : (field.getOrder().equals(Index.IndexField.Order.ASCENDING) ? FieldIndex.Segment.Kind.ASCENDING : FieldIndex.Segment.Kind.DESCENDING);
result.add(FieldIndex.Segment.create(fieldPath, kind));
}
return result;
}
use of com.google.firestore.admin.v1beta1.Index in project java-datastore by googleapis.
the class DatastoreAdminClientTest method createIndexTest.
@Test
public void createIndexTest() throws Exception {
Index expectedResponse = Index.newBuilder().setProjectId("projectId-894832108").setIndexId("indexId1943291277").setKind("kind3292052").addAllProperties(new ArrayList<Index.IndexedProperty>()).build();
Operation resultOperation = Operation.newBuilder().setName("createIndexTest").setDone(true).setResponse(Any.pack(expectedResponse)).build();
mockDatastoreAdmin.addResponse(resultOperation);
CreateIndexRequest request = CreateIndexRequest.newBuilder().setProjectId("projectId-894832108").setIndex(Index.newBuilder().build()).build();
Index actualResponse = client.createIndexAsync(request).get();
Assert.assertEquals(expectedResponse, actualResponse);
List<AbstractMessage> actualRequests = mockDatastoreAdmin.getRequests();
Assert.assertEquals(1, actualRequests.size());
CreateIndexRequest actualRequest = ((CreateIndexRequest) actualRequests.get(0));
Assert.assertEquals(request.getProjectId(), actualRequest.getProjectId());
Assert.assertEquals(request.getIndex(), actualRequest.getIndex());
Assert.assertTrue(channelProvider.isHeaderSent(ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
}
Aggregations