本文整理汇总了Java中ucar.ma2.Index类的典型用法代码示例。如果您正苦于以下问题:Java Index类的具体用法?Java Index怎么用?Java Index使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
Index类属于ucar.ma2包,在下文中一共展示了Index类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: createAttribute
import ucar.ma2.Index; //导入依赖的package包/类
/**
* Creates the attribute.
*
* @param name the name
* @param classType the class type
* @param value the value
*
* @return the attribute
*/
public static Attribute createAttribute(String name, Class<?> classType, Number value) {
int[] shape = new int[1];
shape[0] = 1;
Array vala = Array.factory(classType, shape);
Index ima = vala.getIndex();
if ((classType == double.class) || (classType == Double.class)) {
vala.setDouble(ima, value.doubleValue());
} else if ((classType == float.class) || (classType == Float.class)) {
vala.setFloat(ima, value.floatValue());
} else if ((classType == long.class) || (classType == Long.class)) {
vala.setLong(ima, value.longValue());
} else if ((classType == int.class) || (classType == Integer.class)) {
vala.setInt(ima, value.intValue());
} else if ((classType == short.class) || (classType == Short.class)) {
vala.setShort(ima, value.shortValue());
} else if ((classType == byte.class) || (classType == Byte.class)) {
vala.setByte(ima, value.byteValue());
}
return new Attribute(name, vala);
}
示例2: interpn
import ucar.ma2.Index; //导入依赖的package包/类
/**
* Multidimensional interpolation on regular grids.
*
* @param points The points defining the regular grid in n dimensions.
* @param values The data on the regular grid in n dimensions.
* @param xi The coordinates to sample the gridded data at
* @return Interpolation value
*/
public static double interpn(List<List<Number>> points, Array values, List<Number> xi) {
Object[] r = findIndices(points, xi);
boolean outBounds = (boolean) r[2];
if (outBounds) {
return Double.NaN;
} else {
double v, weight;
Index index = values.getIndex();
int[] indices = (int[]) r[0];
double[] distances = (double[]) r[1];
v = 0;
List<Index> ii = new ArrayList<>();
iterIndex(ii, index, indices, 0);
int n = indices.length;
for (Index idx : ii) {
weight = 1;
for (int i = 0; i < n; i++) {
weight *= idx.getCurrentCounter()[i] == indices[i] ? 1 - distances[i] : distances[i];
}
v += values.getDouble(idx) * weight;
}
return v;
}
}
示例3: iterIndex
import ucar.ma2.Index; //导入依赖的package包/类
private static void iterIndex(List<Index> ii, Index index, int[] indices, int idx) {
int n = indices.length;
if (idx < n - 1) {
index.setDim(idx, indices[idx]);
iterIndex(ii, index, indices, idx + 1);
index.setDim(idx, indices[idx] + 1);
iterIndex(ii, index, indices, idx + 1);
} else {
index.setDim(idx, indices[idx]);
ii.add((Index) index.clone());
//System.out.println(index);
index.setDim(idx, indices[idx] + 1);
ii.add((Index) index.clone());
//System.out.println(index);
}
}
示例4: setIndex
import ucar.ma2.Index; //导入依赖的package包/类
private static void setIndex(int broadcast, Index aindex, Index bindex, int[] current, int n, int na, int nb) {
if (broadcast == 0) {
aindex.set(current);
bindex.set(current);
} else {
int ia, ib;
for (int j = 0; j < n; j++) {
ia = na - j - 1;
if (ia >= 0) {
if (aindex.getShape(ia) == 1) {
aindex.setDim(ia, 0);
} else {
aindex.setDim(ia, current[n - j - 1]);
}
}
ib = nb - j - 1;
if (ib >= 0) {
if (bindex.getShape(ib) == 1) {
bindex.setDim(ib, 0);
} else {
bindex.setDim(ib, current[n - j - 1]);
}
}
}
}
}
示例5: setSection
import ucar.ma2.Index; //导入依赖的package包/类
/**
* Set section
*
* @param a Array a
* @param ranges Ranges
* @param v Array value
* @return Result array
* @throws InvalidRangeException
*/
public static Array setSection(Array a, List<Range> ranges, Array v) throws InvalidRangeException {
Array r = a.section(ranges);
IndexIterator iter = r.getIndexIterator();
//int[] current;
Index index = v.getIndex();
while (iter.hasNext()) {
iter.next();
//current = iter.getCurrentCounter();
//index.set(current);
iter.setObjectCurrent(v.getObject(index));
index.incr();
}
r = Array.factory(a.getDataType(), a.getShape(), r.getStorage());
return r;
}
示例6: hcurl
import ucar.ma2.Index; //导入依赖的package包/类
/**
* Calculates the vertical component of the curl (ie, vorticity)
*
* @param uData U component
* @param vData V component
* @param xx X dimension value
* @param yy Y dimension value
* @return Curl
*/
public static Array hcurl(Array uData, Array vData, List<Number> xx, List<Number> yy) {
int rank = uData.getRank();
int[] shape = uData.getShape();
Array lonData = Array.factory(DataType.DOUBLE, shape);
Array latData = Array.factory(DataType.DOUBLE, shape);
Index index = lonData.getIndex();
int[] current;
for (int i = 0; i < lonData.getSize(); i++) {
current = index.getCurrentCounter();
lonData.setDouble(index, xx.get(current[rank - 1]).doubleValue());
latData.setDouble(index, yy.get(current[rank - 2]).doubleValue());
index.incr();
}
Array dv = cdiff(vData, rank - 1);
Array dx = mul(cdiff(lonData, rank - 1), Math.PI / 180);
Array du = cdiff(mul(uData, cos(mul(latData, Math.PI / 180))), rank - 2);
Array dy = mul(cdiff(latData, rank - 2), Math.PI / 180);
Array gData = div(sub(div(dv, dx), div(du, dy)), mul(cos(mul(latData, Math.PI / 180)), 6.37e6));
return gData;
}
示例7: hdivg
import ucar.ma2.Index; //导入依赖的package包/类
/**
* Calculates the horizontal divergence using finite differencing
*
* @param uData U component
* @param vData V component
* @param xx X dimension value
* @param yy Y dimension value
* @return Divergence
*/
public static Array hdivg(Array uData, Array vData, List<Number> xx, List<Number> yy) {
int rank = uData.getRank();
int[] shape = uData.getShape();
Array lonData = Array.factory(DataType.DOUBLE, shape);
Array latData = Array.factory(DataType.DOUBLE, shape);
Index index = lonData.getIndex();
int[] current;
for (int i = 0; i < lonData.getSize(); i++) {
current = index.getCurrentCounter();
lonData.setDouble(index, xx.get(current[rank - 1]).doubleValue());
latData.setDouble(index, yy.get(current[rank - 2]).doubleValue());
index.incr();
}
Array du = cdiff(uData, rank - 1);
Array dx = mul(cdiff(lonData, rank - 1), Math.PI / 180);
Array dv = cdiff(mul(vData, cos(mul(latData, Math.PI / 180))), rank - 2);
Array dy = mul(cdiff(latData, rank - 2), Math.PI / 180);
Array gData = div(add(div(du, dx), div(dv, dy)), mul(cos(mul(latData, Math.PI / 180)), 6.37e6));
return gData;
}
示例8: imageRead
import ucar.ma2.Index; //导入依赖的package包/类
/**
* Read RGB array data from image
* @param image Image
* @return RGB array data
*/
public static Array imageRead(BufferedImage image){
int xn = image.getWidth();
int yn = image.getHeight();
Array r = Array.factory(DataType.INT, new int[]{yn, xn, 3});
Index index = r.getIndex();
int rgb;
Color color;
for (int i = 0; i < yn; i++){
for (int j = 0; j < xn; j++){
rgb = image.getRGB(j, yn - i - 1);
color = new Color(rgb);
r.setInt(index.set(i, j, 0), color.getRed());
r.setInt(index.set(i, j, 1), color.getGreen());
r.setInt(index.set(i, j, 2), color.getBlue());
}
}
return r;
}
示例9: getRGBImage
import ucar.ma2.Index; //导入依赖的package包/类
private BufferedImage getRGBImage(GridArray gdata) {
int width, height, r, g, b;
width = gdata.getXNum();
height = gdata.getYNum();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Index index = gdata.data.getIndex();
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
r = gdata.data.getInt(index);
index.incr();
g = gdata.data.getInt(index);
index.incr();
b = gdata.data.getInt(index);
index.incr();
image.setRGB(j, height - i - 1, new Color(r, g, b).getRGB());
}
}
return image;
}
示例10: readNumber
import ucar.ma2.Index; //导入依赖的package包/类
private Number readNumber(Array arr, Index index) {
Number val = null;
switch (arr.getDataType()) {
case BYTE:
val = arr.getByte(index);
break;
case DOUBLE:
val = arr.getDouble(index);
break;
case FLOAT:
val = arr.getFloat(index);
break;
case INT:
val = arr.getInt(index);
break;
case LONG:
val = arr.getLong(index);
break;
case SHORT:
val = arr.getShort(index);
break;
default:
break;
}
return val;
}
示例11: readData
import ucar.ma2.Index; //导入依赖的package包/类
/**
* <p>
* Lee un valor del archivo NetCDF según el tipo de dato
* </p>
*
* @param arr
* Array del NetCDF desde donde se leen los datos
* @param idx
* Índice del Array que se debe leer
*
* @return el dato leido
*/
private Object readData(Array arr, Index idx) {
int type = getDataType();
switch (type) {
case IBuffer.TYPE_DOUBLE:
return arr.getDouble(idx);
case IBuffer.TYPE_FLOAT:
return arr.getFloat(idx);
case IBuffer.TYPE_INT:
return arr.getInt(idx);
case IBuffer.TYPE_SHORT:
return arr.getShort(idx);
default:
return arr.getByte(idx);
}
}
示例12: writeArrayDataValues
import ucar.ma2.Index; //导入依赖的package包/类
private void writeArrayDataValues(int[] shape, Array arrayDataIdArray, int[] valuesOrigin, int[] arrayIdOrigin,
ArrayData arrayData) throws IOException, InvalidRangeException {
valuesOrigin[0] = getArrayDataOffset(arrayData);
if (!getArrayDataOffsets().containsKey(arrayData.getId())) {
arrayIdOrigin[0] = getArrayDataOffset(arrayData);
arrayDataIdArray.setLong(arrayDataIdArray.getIndex(), arrayData.getId());
writer.write(ARRAY_DATA_IDS_VARIABLE, arrayIdOrigin, arrayDataIdArray);
}
for (ArrayDataValueType valueType : values.getTypes()) {
Array valuesArray = Array.factory(valueType.getTypeClass(), shape);
Index valuesIndex = valuesArray.getIndex();
for (AbstractReporter reporter : values.getReporters()) {
valuesIndex.set(0, reporter.getDataStorageIndex());
setValue(valuesArray, valuesIndex, arrayData, reporter, valueType);
}
writer.write(valueType.name(), valuesOrigin, valuesArray);
}
}
示例13: getLatValueFromYX
import ucar.ma2.Index; //导入依赖的package包/类
/**
* @param y y
* @param x x
* @return lat value
*/
public double getLatValueFromYX(int y, int x) {
int[] shape = latArray.getShape();
int countY = shape[0];
int countX = shape[1];
if ((y >= countY) || (x >= countX)) {
return Double.MAX_VALUE;
}
Index ima = latArray.getIndex();
return latArray.getDouble(ima.set(y, x));
}
示例14: getLonValueFromYX
import ucar.ma2.Index; //导入依赖的package包/类
/**
* @param y y
* @param x x
* @return lon value
*/
public double getLonValueFromYX(int y, int x) {
int[] shape = latArray.getShape();
int countY = shape[0];
int countX = shape[1];
if ((y >= countY) || (x >= countX)) {
return Double.MAX_VALUE;
}
Index ima = latArray.getIndex();
return latArray.getDouble(ima.set(y, x));
}
示例15: mapAnalyze
import ucar.ma2.Index; //导入依赖的package包/类
protected double[] mapAnalyze(NetcdfFile nexradNetCDF) {
Array dataArray;
Index dataIndex;
double[] retArray = null;
// SHAPE is 3, 360, 324
try {
Variable netcdf = nexradNetCDF.findVariable("Reflectivity");
if(netcdf == null) return null;
dataArray = netcdf.read();
dataIndex = dataArray.getIndex();
// get shape
int[] shape = dataArray.getShape();
retArray = new double[shape[2]];
for(int i = 0; i < shape[2]; i++) {
retArray[i] = dataArray.getDouble(dataIndex.set(0,0,i));
}
System.out.println("Array from map: " + Arrays.toString(retArray));
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(ExceptionUtils.getStackTrace(e));
System.exit(1);
}
return retArray;
}
开发者ID:stephenlienharrell,项目名称:WeatherPipe,代码行数:36,代码来源:ResearcherMapReduceAnalysisArrayAverageExample.java