GAMELASTER
GAMELASTER

Reputation: 1091

Calculating math in GPS format

I'm making a Android Application to calculate Math in GPS Format.

Example:

Given

N 48°44.(30x4) E 019°08.[(13x31)+16]

the App calculates it, and result is:

N 48°44.120 E 019°08.419

Is it possible to do this?

I searched for plugins and solutions, but it's all just for math strings like as "14 + 6".

Upvotes: 0

Views: 99

Answers (2)

Zach
Zach

Reputation: 26

I am assuming you are working in Java as it is tagged in your question.

You could create a new public class for your GPS coordinates, and store the actual value of the coordinate in the lowest division, which according to your example appears to be minutes or seconds. This allows you to store the value as an int or a double with whatever precision you wish. You could then create a set of private and public methods to complete your mathematical operations and others to display your values in the appropriate fashion:

public class GPSCoordinate {

    private double verticalcoord;
    private double horizontalcoord;

    //Constructors
    GPSCoordinate(){
        setVertical(0);
        setHorizontal(0);
    }

    GPSCoordinate(double vert, double horiz){
        setVertical(vert);
        setHorizontal(horiz);
    }

    //Display methods
    public String verticalString(){
        return ((int)verticalcoord / 60) + "°" + (verticalcoord - ((int)verticalcoord / 60) *60);
    }

    public String horizontalString(){
        return ((int)horizontalcoord / 60) + "°" + (horizontalcoord - ((int)horizontalcoord / 60) *60);
    }

    //Setting Methods
    public void setVertical(double x){
        this.verticalcoord = x;
    }

    public void setHorizontal(double x){
        this.horizontalcoord = x;
    }

    //Math Methods
    public void addMinutesVertical(double x){
        this.verticalcoord += x;
    }
}

This will allow you to initiate an instance in your main code with a given GPS coordinate, and then you can call your math functions on it.

GPSCoordinate coord1 = new GPSCoordinate(567.23, 245);
coord1.addMinutesVertical(50);
coord1.otherMathFunction(50 * 30);

You will, of course, need to refine the above to make it fit your project. If this isn't helpful, please provide more specifics and I'll see if I can think of anything else that might fit what your looking for.

Upvotes: 1

g00dy
g00dy

Reputation: 6778

Can't you just substring the whole thing and search for the expression in the brackets? Then it's just a matter of simple calculation. If I understood the question correctly. The gps data doesn't look like an ordinary expression, so you can't appy math() directly.

Upvotes: 0

Related Questions