java 经纬度度分秒转度_用java实现经纬度坐标度分秒与度批量转换
1、度轉度分秒算法
小數點后數字乘以60,再將得到的數的小數點后數字乘以60
例如:103.55685565
103.55685565 - 103 = 0.55685565
0.55685565 ?60 = 33.411339
0.411339 ?60 = 24.68034
結果為103度33份24.68034秒
2、度分秒轉度算法
以度轉度分秒方式反算
例如:103度33份24.68034秒
24.68034 / 60 = 0.411339
33.411339 / 60 = 0.55685565
103 + ?0.55685565 = 103.55685565
有了轉換公式就可以做一個轉換工具,java實現:
package convertBLH;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
class frame1 extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
//輸入輸出框
private JTextField textField1 = new JTextField(8);
private JTextField textField2 = new JTextField(3);
private JTextField textField3 = new JTextField(3);
private JTextField textField4 = new JTextField(5);
private JTextField textField5 = new JTextField(8);
private JTextField textField6 = new JTextField(3);
private JTextField textField7 = new JTextField(3);
private JTextField textField8 = new JTextField(5);
private JLabel label1 = new JLabel("度——————>度分秒");
private JLabel label2 = new JLabel("度分秒——————>度");
private JButton button1 = new JButton("轉換");
private JButton button2 = new JButton("轉換");
public frame1(){
//設置窗體大小、位置
JFrame frame = new JFrame("度分秒轉換工具");
frame.setSize(600,300);
frame.setLocationRelativeTo(null);
//定義面板容器
JPanel contentpanel = new JPanel();
contentpanel.setBorder(new EmptyBorder(5,5,5,5));
frame.add(contentpanel);
contentpanel.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0,0,580,380);
contentpanel.add(panel);
panel.setLayout(null);
//度轉度分秒
//設置標簽
label1.setBounds(220,10,200,28);
panel.add(label1);
//設置輸入文本框
textField1.setBounds(50,50,80,28);
panel.add(textField1);
//設置輸出文本框
textField2.setBounds(270,50,50,28);
panel.add(textField2);
textField3.setBounds(340,50,50,28);
panel.add(textField3);
textField4.setBounds(410,50,100,28);
panel.add(textField4);
//設置按鈕
button1.setBounds(150,50,100,28);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//計算textfield2需要顯示的數字
Double iDouble = Double.parseDouble(textField1.getText());
int i = iDouble.intValue();
String string = String.valueOf(i);
textField2.setText(string);
//計算textfield3需要顯示的數字
double j1 = iDouble - i;
Double j2 = j1 * 60;
int j3 = j2.intValue();
textField3.setText(String.valueOf(j3));
//計算textField4
double k1 = j2 - j3;
Double k2 = k1 * 60;
textField4.setText(String.valueOf(k2));
}
});
panel.add(button1);
//度分秒轉度
label2.setBounds(220,90,200,28);
panel.add(label2);
textField5.setBounds(50,130,50,28);
panel.add(textField5);
textField6.setBounds(120,130,50,28);
textField7.setBounds(190,130,100,28);
textField8.setBounds(430,130,80,28);
panel.add(textField6);
panel.add(textField7);
panel.add(textField8);
button2.setBounds(310,130,100,28);
panel.add(button2);
button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Double iDouble = Double.parseDouble(textField7.getText());
iDouble = iDouble / 60;
iDouble = Double.parseDouble(textField6.getText()) + iDouble;
iDouble = iDouble / 60;
iDouble = iDouble + Double.parseDouble(textField5.getText());
textField8.setText(iDouble.toString());
}
});
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public class ConvertBLH {
public static void main(String[] args) {
new frame1();
}
}
運行效果:
另外,筆者做了一個批量轉換工具,可讀取坐標txt文件并自動識別度分秒轉換方式,實現度與度分秒格式批量轉換。
轉換結果:
下載地址:鏈接:https://pan.baidu.com/s/1zwnjKlhtBoG2zuYQlIDeQw 提取碼:o32b
總結
以上是生活随笔為你收集整理的java 经纬度度分秒转度_用java实现经纬度坐标度分秒与度批量转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux进程全解3——进程概念、进程I
- 下一篇: 单链表的头插法和尾插法实现代码(无头结点