package org.droidplanner.services.android.impl.core.survey;
import org.droidplanner.services.android.impl.core.helpers.units.Area;
import java.util.Locale;
public class SurveyData {
private CameraInfo camera = new CameraInfo();
private double altitude;
private Double angle;
private Double overlap;
private Double sidelap;
private boolean lockOrientation;
private Footprint footprint;
public SurveyData() {
update(0, (50.0), 50, 60, false);
}
public void update(double angle, double altitude, double overlap, double sidelap, boolean lockOrientation) {
this.angle = angle;
this.overlap = overlap;
this.sidelap = sidelap;
setAltitude(altitude);
this.lockOrientation = lockOrientation;
}
public void setAltitude(double altitude) {
this.altitude = altitude;
this.footprint = new Footprint(camera, this.altitude);
}
public void setCameraInfo(CameraInfo info) {
this.camera = info;
this.footprint = new Footprint(this.camera, this.altitude);
tryToLoadOverlapFromCamera();
}
public CameraInfo getCameraInfo() {
return this.camera;
}
public void setLockOrientation(boolean lockOrientation) {
this.lockOrientation = lockOrientation;
}
private void tryToLoadOverlapFromCamera() {
if (camera.overlap != null) {
this.overlap = camera.overlap;
}
if (camera.sidelap != null) {
this.sidelap = camera.sidelap;
}
}
public double getLongitudinalPictureDistance() {
return getLongitudinalFootPrint() * (1 - overlap * .01);
}
public double getLateralPictureDistance() {
return getLateralFootPrint() * (1 - sidelap * .01);
}
public double getAltitude() {
return altitude;
}
public Double getAngle() {
return angle;
}
public double getSidelap() {
return sidelap;
}
public double getOverlap() {
return overlap;
}
public double getLateralFootPrint() {
return footprint.getLateralSize();
}
public double getLongitudinalFootPrint() {
return footprint.getLongitudinalSize();
}
public Area getGroundResolution() {
return new Area(footprint.getGSD() * 0.01);
}
public String getCameraName() {
return camera.name;
}
public boolean getLockOrientation(){
return lockOrientation;
}
@Override
public String toString() {
return String.format(Locale.US, "Altitude: %f Angle %f Overlap: %f Sidelap: %f Locked Orientation: %b", altitude,
angle, overlap, sidelap, lockOrientation);
}
}