用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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheMatrixs

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值