java 经纬度度分秒转度_用java实现经纬度坐标度分秒与度批量转换

2023-05-16

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();

}

}

运行效果:

30c2f32d1f7c2692d6aceb8c16b48e84.png

另外,笔者做了一个批量转换工具,可读取坐标txt文件并自动识别度分秒转换方式,实现度与度分秒格式批量转换。

e6e3d2d98944a4a1ca167e2bc33081d0.png

转换结果:

fd8777632c187d3b43bdfb0fb872dd25.png

下载地址:链接:https://pan.baidu.com/s/1zwnjKlhtBoG2zuYQlIDeQw 提取码:o32b

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 经纬度度分秒转度_用java实现经纬度坐标度分秒与度批量转换 的相关文章

随机推荐