
org.osgeo.proj4j.datum.AxisOrder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of geotrellis-proj4_2.11 Show documentation
Show all versions of geotrellis-proj4_2.11 Show documentation
GeoTrellis is an open source geographic data processing engine for high performance applications.
The newest version!
package org.osgeo.proj4j.datum;
import org.osgeo.proj4j.ProjCoordinate;
import java.io.Serializable;
public final class AxisOrder implements Serializable {
public static enum Axis {
Easting {
public double fromENU(ProjCoordinate c) {
return c.x;
}
public void toENU(double x, ProjCoordinate c) {
c.x = x;
}
},
Westing {
public double fromENU(ProjCoordinate c) {
return -c.x;
}
public void toENU(double x, ProjCoordinate c) {
c.x = -x;
}
},
Northing {
public double fromENU(ProjCoordinate c) {
return c.y;
}
public void toENU(double y, ProjCoordinate c) {
c.y = y;
}
},
Southing {
public double fromENU(ProjCoordinate c) {
return -c.y;
}
public void toENU(double y, ProjCoordinate c) {
c.y = -y;
}
},
Up {
public double fromENU(ProjCoordinate c) {
return c.z;
}
public void toENU(double z, ProjCoordinate c) {
c.z = z;
}
},
Down {
public double fromENU(ProjCoordinate c) {
return c.z;
}
public void toENU(double z, ProjCoordinate c) {
c.z = -z;
}
};
static Axis fromChar(char c) {
switch(c) {
case 'e': return Easting;
case 'n': return Northing;
case 'u': return Up;
case 'w': return Westing;
case 's': return Southing;
case 'd': return Down;
}
throw new IllegalArgumentException();
}
public abstract double fromENU(ProjCoordinate c);
public abstract void toENU(double x, ProjCoordinate c);
}
public final static AxisOrder ENU =
new AxisOrder(Axis.Easting, Axis.Northing, Axis.Up);
private final Axis x, y, z;
private AxisOrder(Axis x, Axis y, Axis z) {
this.x = x;
this.y = y;
this.z = z;
}
public static AxisOrder fromString(String spec) {
if (spec.length() != 3) {
throw new Error();
}
Axis x = Axis.fromChar(spec.charAt(0));
Axis y = Axis.fromChar(spec.charAt(1));
Axis z = Axis.fromChar(spec.charAt(2));
return new AxisOrder(x, y, z);
}
public void fromENU(ProjCoordinate coord) {
double x = this.x.fromENU(coord);
double y = this.y.fromENU(coord);
double z = this.z.fromENU(coord);
coord.x = x;
coord.y = y;
coord.z = z;
}
public void toENU(ProjCoordinate coord) {
double x = coord.x;
double y = coord.y;
double z = coord.z;
this.x.toENU(x, coord);
this.y.toENU(y, coord);
this.z.toENU(z, coord);
}
@Override
public int hashCode() {
return x.hashCode() | (17 * y.hashCode()) | (37 * z.hashCode());
}
@Override
public boolean equals(Object that) {
if (that instanceof AxisOrder) {
AxisOrder a = (AxisOrder) that;
return x == a.x && y == a.y && z == a.z;
} else {
return false;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy