[Programming][JAVA] DD and DMS

posted on 13 Jul 2011 11:16 by mengja in Technology
วันนี้จะมาพูดถึงการบอกพิกัดโดยใช้ 2 units นี้ คือ
Decimal Degree (DD) และ Degree Minute Second (DMS)
 
โดย Decimal Degree (DD) จะมีลักษณะเป็นจำนวนที่เราใช้กันทั่วๆไปที่มีทศนิยม
มีลักษณะเป็นประมาณนี้ 13.914444 หรือ 100.605556
 
ส่วน Degree Minute Second (DMS) จะมีการแบ่งเป็น 3 พยางค์ ซึ่งก็คือ D M S ตามชื่อมันเนี่ยแหละ
แต่ใน 2 พยางค์ทางขวามือ (M และ S) จะมีค่าสูงสุดได้แค่ 59 ถ้าถึง 60 ก็ให้ทดไปพยางค์ทางซ้าย 1
ส่วนพยางค์หน้าสุด D นี้จะมีค่าเท่าไหร่ก็ได้ และในพยางค์ S นี่จะติดทศนิยมก็ได้ แต่ D กับ M จะไม่มีติด
มีลักษณะเป็นประมาณนี้ 13 54 52 หรือ 100 36 20
 
ทั้ง 2 ตัวนี้สามารถแปลงกลับไปกลับมาได้ดังนี้

DMS to DD
ใน 3 พยางค์ของ DMS นี้เราสามารถทำการแปลงเป็น DD ได้โดยใช้สูตรตามนี้
DD = D + M/60 + S/3600
จะเห็นได้ว่าสูตรมันจะสอดคล้องกับเลข 60 ที่จะต้องทดขึ้นไปที่หลักทางซ้ายมือ
ตัวอย่าง
DMS 13 54 52 แปลงเป็น DD?
= 13 + 54/60 + 52/3600 = 13.9144..
 
DMS 100 36 20 แปลงเป็น DD?
= 100 + 36/60 + 20/3600 = 100.6055..
 
DD to DMS
เราสามารถนำเอาค่าในหน่วย DD มาแปลงค่ากระจายออกให้เป็น DMS ได้ตามนี้
D = ได้จากการนำเอาเฉพาะจำนวนเต็มของ DD มาเลย
M = ได้จากทศนิยมที่เหลือจาก DD มาคูณด้วย 60 แล้วเอาเฉพาะจำนวนเต็ม
S = ได้จากทศนิยมที่เหลือจาก M มาคูณด้วย 60

ตัวอย่าง
 
DD 13.914444 แปลงเป็น DMS?
D = 13
M => 0.914444 x 60 = 54.86664 เอาเฉพาะจำนวนเต็ม M = 54
S = 0.86664 x 60 = 51.9984
 
DD 100.605555 แปลงเป็น DMS?
D = 100
M => 0.605555 x 60 = 36.3333 เอาเฉพาะจำนวนเต็ม M = 36
S = 0.3333 x 60 = 19.998
 
JAVA CODE
package utility;

public class DD2DMS {
    private double dd;
   
    private double d;
    private double m;
    private double s;
   
    public DD2DMS(double dd) {
        this.d = Math.floor(dd);
        this.m = Math.floor((dd - this.d) * 60);
        this.s = ((dd - this.d) * 60 - this.m) * 60;
       
        this.dd = dd;
    }
   
    public DD2DMS(double d, double m, double s) {
        this.dd = d + m / 60 + s / 3600;
       
        this.d = d;
        this.m = m;
        this.s = s;
    }

    public double getDd() {
        return dd;
    }

    public double getD() {
        return d;
    }

    public double getM() {
        return m;
    }

    public double getS() {
        return s;
    }
}

Comment

Comment:

Tweet

สอบรถยนต์จะยุ่งยากกว่ารถมอเตอร์ไซค์นะเนี่ย
แสดงว่าได้ใช่ไหมคะ

#1 By build solar panels (122.168.39.214) on 2012-01-23 13:28