Hi Cameron,
> I have field with the function type (time -> (Temperature, Precipatation))
> Temperature is loaded in celcius, and Precipitation is in millimeters.
> I have tried experimenting with adding two fields of this type together and
> have found that the Temperature gets converted to Kelvin.
> Is it possible to convert all the Temperatures in the result field to Celcius
> again? and how do I go about it?
The conversion to Kelvin happens because Units with offsets,
such as Celcius, are dangerous. For example,
0 C + 0 C = 0 C != 546 K = 273 K + 273 K
To change your FlatField back to Celcius, you need to
explicitly construct a new FlatField, sort of like:
FlatField field = ... // this is your old field, with Kelvin
Unit[][] long_units = field.getRangeUnits();
Unit[] units = new Unit[long_units.length];
for (int i=0; i<long_units.length; i++) units[i] = long_units[i][0];
Unit[] new_units = Unit.copyUnitArray(units);
new_units[0] = celcius; // your Celcius Unit
FlatField new_field
new FlatField((FunctionType) field.getType(),
field.getDomainSet(),
null, null, // I assume you're not using
RangeCoordinateSystems
field.getRangeSets(),
new_units);
float[][] values = field.getFloats();
values = Unit.convertTuple(values, units, new_units);
new_field.setSamples(values);
Let me know if you have any problems with this.
Cheers,
Bill
----------------------------------------------------------
Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706
hibbard@xxxxxxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738
http://www.ssec.wisc.edu/~billh/vis.html