Skip to content

#1375 Units for false_easting and false_northing (fix) #1455

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,6 @@
public abstract class AbstractTransformBuilder {
private static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(AbstractTransformBuilder.class);

/*
* from CF: false_easting(false_northing):
* The value added to all abscissa(ordinate) values in the rectangular coordinates for a map projection.
* This value frequently is assigned to eliminate negative numbers.
* Expressed in the unit of the coordinate variable identified by the standard name projection_x_coordinate
* (projection_y_coordinate).
*/
public static double getFalseEastingScaleFactor(NetcdfDataset ds, AttributeContainer ctv) {
String units = getGeoCoordinateUnits(ds, ctv, ds.getCoordinateAxes());
return getFalseEastingScaleFactor(units);
}

public static String getGeoCoordinateUnits(NetcdfDataset ds, AttributeContainer ctv) {
return getGeoCoordinateUnits(ds, ctv, ds.getCoordinateAxes());
}
Expand Down Expand Up @@ -73,18 +61,6 @@ public static String getGeoCoordinateUnits(NetcdfDataset ds, AttributeContainer
return units;
}

public static double getFalseEastingScaleFactor(String geoCoordinateUnits) {
if (geoCoordinateUnits != null) {
try {
SimpleUnit unit = SimpleUnit.factoryWithExceptions(geoCoordinateUnits);
return unit.convertTo(1.0, SimpleUnit.kmUnit);
} catch (Exception e) {
log.warn(geoCoordinateUnits + " not convertible to km");
}
}
return 1.0;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
private Formatter errBuffer;
protected double lat0, lon0, false_easting, false_northing, earth_radius;
Expand All @@ -105,12 +81,6 @@ void readStandardParams(AttributeContainer ctv, String units) {
false_easting = readAttributeDouble(ctv, CF.FALSE_EASTING, 0.0);
false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0);

if ((false_easting != 0.0) || (false_northing != 0.0)) {
double scalef = getFalseEastingScaleFactor(units);
false_easting *= scalef;
false_northing *= scalef;
}

double semi_major_axis = readAttributeDouble(ctv, CF.SEMI_MAJOR_AXIS, Double.NaN);
double semi_minor_axis = readAttributeDouble(ctv, CF.SEMI_MINOR_AXIS, Double.NaN);
double inverse_flattening = readAttributeDouble(ctv, CF.INVERSE_FLATTENING, 0.0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,6 @@ public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCo
double false_easting = readAttributeDouble(ctv, CF.FALSE_EASTING, 0.0);
double false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0);

if ((false_easting != 0.0) || (false_northing != 0.0)) {
double scalef = getFalseEastingScaleFactor(geoCoordinateUnits);
false_easting *= scalef;
false_northing *= scalef;
}

double earth_radius = getEarthRadiusInKm(ctv);
double semi_major_axis = readAttributeDouble(ctv, CF.SEMI_MAJOR_AXIS, Double.NaN);
double semi_minor_axis = readAttributeDouble(ctv, CF.SEMI_MINOR_AXIS, Double.NaN);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,6 @@ public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCo
}
double false_easting = readAttributeDouble(ctv, CF.FALSE_EASTING, 0.0);
double false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0);

if ((false_easting != 0.0) || (false_northing != 0.0)) {
double scalef = getFalseEastingScaleFactor(geoCoordinateUnits);
false_easting *= scalef;
false_northing *= scalef;
}

double earth_radius = getEarthRadiusInKm(ctv);
double semi_major_axis = readAttributeDouble(ctv, CF.SEMI_MAJOR_AXIS, Double.NaN); // meters
double semi_minor_axis = readAttributeDouble(ctv, CF.SEMI_MINOR_AXIS, Double.NaN);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCo
double false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0);
double earth_radius = getEarthRadiusInKm(ctv);

if ((false_easting != 0.0) || (false_northing != 0.0)) {
double scalef = getFalseEastingScaleFactor(geoCoordinateUnits);
false_easting *= scalef;
false_northing *= scalef;
}

ucar.unidata.geoloc.projection.Sinusoidal proj =
new ucar.unidata.geoloc.projection.Sinusoidal(centralMeridian, false_easting, false_northing, earth_radius);
return new ProjectionCT(ctv.getName(), "FGDC", proj);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,6 @@ public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCo
double lat0 = readAttributeDouble(ctv, CF.LATITUDE_OF_PROJECTION_ORIGIN, 90.0);
double false_easting = readAttributeDouble(ctv, CF.FALSE_EASTING, 0.0);
double false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0);

if ((false_easting != 0.0) || (false_northing != 0.0)) {
double scalef = getFalseEastingScaleFactor(geoCoordinateUnits); // conversion from axis-unit to km
false_easting *= scalef;
false_northing *= scalef;
}

double earth_radius = getEarthRadiusInKm(ctv);
double semi_major_axis = readAttributeDouble(ctv, CF.SEMI_MAJOR_AXIS, Double.NaN); // meters
double semi_minor_axis = readAttributeDouble(ctv, CF.SEMI_MINOR_AXIS, Double.NaN);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,6 @@ public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCo
double lat0 = readAttributeDouble(ctv, CF.LATITUDE_OF_PROJECTION_ORIGIN, Double.NaN);
double false_easting = readAttributeDouble(ctv, CF.FALSE_EASTING, 0.0);
double false_northing = readAttributeDouble(ctv, CF.FALSE_NORTHING, 0.0);

if ((false_easting != 0.0) || (false_northing != 0.0)) {
double scalef = getFalseEastingScaleFactor(geoCoordinateUnits);
false_easting *= scalef;
false_northing *= scalef;
}

double earth_radius = getEarthRadiusInKm(ctv);
double semi_major_axis = readAttributeDouble(ctv, CF.SEMI_MAJOR_AXIS, Double.NaN);
double semi_minor_axis = readAttributeDouble(ctv, CF.SEMI_MINOR_AXIS, Double.NaN);
Expand Down
7 changes: 0 additions & 7 deletions cdm/core/src/main/java/ucar/nc2/dt/grid/CFGridWriter2.java
Original file line number Diff line number Diff line change
Expand Up @@ -369,13 +369,6 @@ private void convertProjectionCTV(NetcdfDataset ds, AttributeContainer ctv) {
if ((null != att) && att.getStringValue().equals("Projection")) {
Attribute east = ctv.findAttribute("false_easting");
Attribute north = ctv.findAttribute("false_northing");
if ((null != east) || (null != north)) {
double scalef = AbstractTransformBuilder.getFalseEastingScaleFactor(ds, ctv);
if (scalef != 1.0) {
convertAttribute(ctv, east, scalef);
convertAttribute(ctv, north, scalef);
}
}
}
}

Expand Down
7 changes: 0 additions & 7 deletions legacy/src/main/java/ucar/nc2/dt/grid/CFGridWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -486,13 +486,6 @@ private void convertProjectionCTV(NetcdfDataset ds, Variable ctv) {
if ((null != att) && att.getStringValue().equals("Projection")) {
Attribute east = ctv.findAttribute("false_easting");
Attribute north = ctv.findAttribute("false_northing");
if ((null != east) || (null != north)) {
double scalef = AbstractTransformBuilder.getFalseEastingScaleFactor(ds, ctv);
if (scalef != 1.0) {
convertAttribute(ctv, east, scalef);
convertAttribute(ctv, north, scalef);
}
}
}
}

Expand Down