计算两点间距离

页面

python更简单

#导入math包
import math
#定义点的函数
class Point:
    def __init__(self,x=0,y=0):
        self.x=x
        self.y=y
    def getx(self):
        return self.x
    def gety(self):
        return self.y 
#定义直线函数   
class Getlen:
    def __init__(self,p1,p2):
        self.x=p1.getx()-p2.getx()
        self.y=p1.gety()-p2.gety()
        #用math.sqrt()求平方根
        self.len= math.sqrt((self.x**2)+(self.y**2))
    #定义得到直线长度的函数
    def getlen(self):
        return self.len

#设置点p1的坐标为(0,0)       
p1=Point(0,0)
#设置点p2的坐标为(3,4)
p2=Point(3,4)
l=Getlen(p1,p2)
#获取两点之间直线的长度
l.getlen()

Java的具体实现

<form name="PointDistance_form">
	<br/>
		-------------------------------------------------------
	<br/>
		(计算两坐标点间距离(米) :参数是标准的工程坐标,或者wgs84坐标)
	
	<p>
		起始点x坐标:
    	<input type="text" value="" name="start_dx" size="30" id="start_dx"/>
    	终止点x坐标:
    	<input type="text" value="" name="end_dx" size="30" id="end_dx"/>
	</p>
	
	<p>
		起始点y坐标:
    	<input type="text" value="" name="start_dy" size="30" id="start_dy"/>
    	终止点y坐标:
    	<input type="text" value="" name="end_dy" size="30" id="end_dy"/>
	</p>
	
	<p>
		两坐标点间距离(米):
		<input type="text" value="" name="result_PointDistance" id="result_PointDistance"  />
	</p>
	<p><input id="go_calPointDistance" type="button" value="go" /></p>
</form>
$(document).ready(function(){
	$("#go_calPointDistance").click(function () {
        //获取值
        var start_x = $("#start_dx").val();
        var start_y = $("#start_dy").val();
        var end_x = $("#end_dx").val();
        var end_y = $("#end_dy").val();
		
		if (start_x == "" || start_y == "" || end_x == "" || end_y == "") {
			alert("请输入完整的坐标信息!!!");
			return;
		}
		
        $.ajax({
            url:"/gj_tools/PointDistance_action",
            type:"POST",
            data:{"start_x":start_x,"start_y":start_y,"end_x":end_x,"end_y":end_y},  
            dataType:"json",
            success:function (result) {
                // alert(result.result);
                $("#result_PointDistance").val(result.result);
            },
            error:function(data){
                alert("计算点间距离失败!!");
            }
        })
    });
});

服务代码:

	/*
	 * 计算两点间距离
	 */
	@RequestMapping(value = "/gj_tools/PointDistance_action" )
	@ResponseBody
	public Map<String,Object> PointDistance(double start_x ,double start_y ,double end_x ,double end_y){
		Map<String,Object> resultMap = new HashMap<String, Object>();
		
		// double result = TrackPointUtil.AngleToNorth(Double.parseDouble(start_x), Double.parseDouble(start_y), Double.parseDouble(end_x), Double.parseDouble(end_y));
		double result = TrackPointUtil.calPoint2PointDistance(start_x,end_x, start_y, end_y);
		resultMap.put("result", result);
		
		return resultMap;
	}
    
    /**
     * 将度转化为弧度
     *
     * @param {degree} Number 度
     * @returns {Number} 弧度
     */
    static double degreeToRad(double degree) {
        return Math.PI * degree / 180;
    }
    
    /**
     * 计算两点之间的距离,两点坐标必须为经纬度
     *
     * @param {point1} Point 点对象
     * @param {point2} Point 点对象
     * @param point1
     * @param point2
     * @return
     * @returns 两点之间距离,单位为米
     */
    public static double calPoint2PointDistance(double X1,double X2 ,double Y1 ,double Y2) {
        /**
         * 地球半径
         */
        double EARTHRADIUS = 6370996.81;
        double x1, x2, y1, y2;
        x1 = degreeToRad(X1);
        y1 = degreeToRad(Y1);
        x2 = degreeToRad(X2);
        y2 = degreeToRad(Y2);
        double result = Math.sin(y1) * Math.sin(y2) + Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1);
        if (result > 1.0) { result = 1.0; }
        return EARTHRADIUS * Math.acos(result);
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值