`
thomas0988
  • 浏览: 473137 次
  • 性别: Icon_minigender_1
  • 来自: 南阳
社区版块
存档分类
最新评论

数据库中计算两地图坐标点之间的距离

阅读更多
CREATE OR REPLACE FUNCTION DISTANCEBYLNGLAT(LNG1 IN NUMBER,
                                            LAT1 IN NUMBER,
                                            LNG2 IN NUMBER,
                                            LAT2 IN NUMBER) RETURN NUMBER IS
  /********************
  数据库中计算两地图坐标点之间的距离
  返回公里数
  ********************/
  RADLAT1 NUMBER;
  RADLAT2 NUMBER;
  A       NUMBER;
  B       NUMBER;
  S       NUMBER;
BEGIN
  RADLAT1 := (LAT1 * ACOS(-1)) / 180.0;
  RADLAT2 := (LAT2 * ACOS(-1)) / 180.0;
  A       := RADLAT1 - RADLAT2;
  B       := ((LNG1 * ACOS(-1)) / 180.0) - ((LNG2 * ACOS(-1)) / 180.0);
  S       := 2 *
             ASIN(SQRT(POWER(SIN(A / 2), 2) +
                       COS(RADLAT1) * COS(RADLAT2) * POWER(SIN(B / 2), 2)));
  S       := S * 6378137.0; --取WGS84标准参考椭球中的地球长半径(单位:M)
  S       := ROUND(S * 10) / 10000;
  RETURN S;
END DISTANCEBYLNGLAT;

 附带javascript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script type="text/javascript">  
    function distanceByLnglat(lng1,lat1,lng2,lat2)
{
    var radLat1 = Rad(lat1);
	alert(lat1+"-->"+radLat1);
    var radLat2 = Rad(lat2);
    var a = radLat1 - radLat2;
    var b = Rad(lng1) - Rad(lng2);
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
    s = s * 6378137.0;// 取WGS84标准参考椭球中的地球长半径(单位:m)
    s = Math.round(s * 10000) / 10000;
alert(s);
// //下面为两点间空间距离(非球面体)
// var value= Math.pow(Math.pow(lng1-lng2,2)+Math.pow(lat1-lat2,2),1/2);
// alert(value);
}

function Rad(d)
{
    return d * Math.PI / 180.0;
}
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div onclick ="distanceByLnglat(116.95400,39.95400,116.95300,39.95300);">
    test me
    </div>
    </form>
</body>
</html>

 

分享到:
评论

相关推荐

    MySQL计算两个坐标之间的直线距离函数

    MySQL自定义函数,用于计算地图上两点之间的直线距离。网上很多的计算方式都不正确,这个函数经过自己编写调试,计算结果相对准确。

    根据当前坐标(经纬度)计算附近位置-java版本

    根据已知点坐标计算附近位置,代码详细解释了三种计算策略。主要涉及日常需要解决问题,例如类似于滴滴打车实现查找附近车辆业务逻辑和贝壳找房根据指定位置筛选出附近房源,上述两场场景应用可借鉴代码中两种方法...

    distancias:PHP 公式计算以公里、英里或海里为单位的两点之间的距离

    计算两点之间的距离 PHP 给定两个点,坐标以 DECIMAL 表示法给出的纬度和经度给出(例如 40.2342342)。 应用Haversine公式: 并基于来自 Taringa 的这段 PHP 代码: 如果您不想使用 Google Maps API,它是一个必...

    宁夏公共地理框架数据库管理系统.doc

    数据库管理系统基本功能 实现地图文档管理、服务器连接设置、用户日志、地图打印、工具箱(包括格式转换 、转换参数计算、坐标转换、数据打印ID)等功能。 1.1 地图文档管理 针对地图文档进行操作,包括读取、新建、...

    arcgis工具

    也可单击右键选择properties 打开edit sketch properties对话框,在坐标点位置右键插入节点 9. 共享多边形生成 Auto-complete polygon 工具生成共享边的多边形,配合snapping environment更好。 10. 画岛图 1)...

    ArcGIS地理信息系统空间分析实验教程

    334建立数据库中的基本组成项52 335向Geodatabase加载数据56 336进一步定义数据库63 34数据编辑82 341图形编辑82 342属性编辑92 35实例与练习93 351某地区地块的拓扑关系建立93 352某市区几何网络的建立100 第四章...

    一个牛人提供的GIS源码(很好)

    两点坐标间距离的算法以及验证 http://www.cnblogs.com/Tangf/archive/2006/07/23/457884.html 极索(Gsuo)推出新版地图采用Gmap设计思路 http://www.cnblogs.com/Tangf/archive/2006/07/23/457521.html 浅谈LBS(基于...

    GIS软件应用实验指导书.doc

    第7步 投影变换――地理坐标系-&gt;北京1954坐标系转换-&gt;西安80坐标系 76 四、实验报告要求 77 实验五、空间分析基本操作 79 一、实验目的 79 二、实验准备 79 三、实验内容及步骤 80 空间分析模块 80 1. 了解栅格...

    地理信息系统实习教程ArcGIS P1-P100

    栅格空间距离计算 第9章 再分类与栅格叠合 第四篇 矢量型空间分析 第10章 邻近区 第1l章 多边形归并、叠合 第12章 泰森多边形 第五篇 不规则三角网 第13章 地表模型生成、显示 第14章 工程中的土方、纵坡 第15章 ...

    ArcGIS实验指导书 完整清晰版 下载

    第7步 投影变换――地理坐标系-&gt;北京1954坐标系转换-&gt;西安80坐标系 76 四、实验报告要求 77 实验五、空间分析基本操作 79 一、实验目的 79 二、实验准备 79 三、实验内容及步骤 80 空间分析模块 80 1. 了解栅格...

    ArcGIS教程,GIS软件应用

    第7步 投影变换――地理坐标系-&gt;北京1954坐标系转换-&gt;西安80坐标系 76 四、实验报告要求 77 实验五、空间分析基本操作 79 一、实验目的 79 二、实验准备 79 三、实验内容及步骤 80 空间分析模块 80 1. 了解栅格...

    万能后台管理模板javaweb

    15. 地图工具:打开地图, 鼠标点击地图某位置获取经纬度坐标,根据经纬度计算两点距离 16. 打印测试:页面打印预览测试 17. 图片管理:对批量上传的图片统一管理 ,点击放大,可打开多个,自由切换,绚丽预览效果 18...

    VC++通用GIS功能开发解决方案

    #量算多点距离#计算线段最大坡度#计算区域面积#计算区域高程#两点通视#中心通视# #区域坡度图#断面图#区域通行分析 全部分析采用实时数据显示(操作同时显示结果)技术,配以最后结果显示。 几点说明: ======...

    MAPGIS地质制图工具

    2、四点插入等高线必需先选择两条线(若未先选择线当点击完第三个点时即弹出对话框,且插入会失败),然后在线上点四个点,前两点在一条线上,后两点在另外一条线上。如果出现乱线,先改一条线的方向再试。 3、直接...

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 mysql版本_spring3.0

    【源码】mysql版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信...地图选点获取经纬度坐标,根据俩经纬度计算距离

    J2EE spring mvc mybatis bootstrap HTML5 后台框架 控制台 oracle版本_spring3.0

    【源码】oracle版本_spring3.0 系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件...地图选点获取经纬度坐标,根据俩经纬度计算距离

Global site tag (gtag.js) - Google Analytics