根据经纬度和半径计算经纬度范围

    public class LatLonUtil
    {
        private static double PI = 3.14159265;
        private static double EARTH_RADIUS = 6378137;
        private static double RAD = Math.PI / 180.0;

        /// <summary>
        /// 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度
        /// </summary>
        /// <param name="lat">纬度</param>
        /// <param name="lon">经度</param>
        /// <param name="raidus">半径(米)</param>
        /// <returns></returns>
        public static double[] GetAround(double lat, double lon, int raidus)
        {

            Double latitude = lat;
            Double longitude = lon;

            Double degree = (24901 * 1609) / 360.0;
            double raidusMile = raidus;

            Double dpmLat = 1 / degree;
            Double radiusLat = dpmLat * raidusMile;
            Double minLat = latitude - radiusLat;
            Double maxLat = latitude + radiusLat;

            Double mpdLng = degree * Math.Cos(latitude * (PI / 180));
            Double dpmLng = 1 / mpdLng;
            Double radiusLng = dpmLng * raidusMile;
            Double minLng = longitude - radiusLng;
            Double maxLng = longitude + radiusLng;
            return new double[] { minLat, minLng, maxLat, maxLng };
        }

        /// <summary>
        /// 根据提供的两个经纬度计算距离(米)
        /// </summary>
        /// <param name="lng1">经度1</param>
        /// <param name="lat1">纬度1</param>
        /// <param name="lng2">经度2</param>
        /// <param name="lat2">纬度2</param>
        /// <returns></returns>
        public static double GetDistance(double lng1, double lat1, double lng2, double lat2)
        {
            double radLat1 = lat1 * RAD;
            double radLat2 = lat2 * RAD;
            double a = radLat1 - radLat2;
            double b = (lng1 - lng2) * RAD;
            double 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 * EARTH_RADIUS;
            s = Math.Round(s * 10000) / 10000;
            return s;
        }
    }
时间: 2024-12-27 23:55:46

根据经纬度和半径计算经纬度范围的相关文章

根据经纬度和半径计算经纬度范围,根据两点经纬度计算距离

这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作“赤道”.在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”:构成这些圆圈的线段,叫做纬线.我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬.北极就是北纬90度,南极就是南纬90度.纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬,两极和高纬度地区无夏,中纬度地区

PHP版根据经纬度和半径计算出经纬度的范围

百度地图提供了范围搜索的功能,但是它使用的是百度自己的数据,但是有时候我们需要使用自己的数据,显示在地图上.比如给定两个参数:指定位置(某一处的经纬度lnglat)和搜索半径(r),搜索指定范围内的数据.针对这样的需求,基本有三种方法可以解决:1:根据map提供的计算两个坐标之间距离的方法,逐一计算指定位置和我们DB库中的位置的距离s,用s和r进行比较,如果s<r,则在搜索范围内,返给前段标注在地图上.这种方法如果数据量小,可以尝试,如果数据量大,没测试过,但可以想象-- 2:使用搜索引擎自带的

以一个经纬度为中心计算出四个顶点

public const double EARTH_RADIUS = 6378137.0;//地球半径(m) /// <summary> /// 以一个经纬度为中心计算出四个顶点 /// </summary> /// <param name="distance">半径(米)</param> /// <returns></returns> public static Degree[] GetDegreeCoordin

根据2个经纬度点,计算这2个经纬度点之间的距离

原文  http://www.cnblogs.com/softfair/p/distance_of_two_latitude_and_longitude_points.html 根据 2 个经纬度点,计算这 2 个经纬度点之间的距离 球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章. Great-circle distance Haversine formula 值得一提的是,维基百科推荐使用Haversine公式,理由是Great-circle distance公式用到了大量余弦函

经纬度 范围 距离 计算

private const double EARTH_RADIUS = 6378.137;//地球半径         private static double RAD = Math.PI / 180.0;        //获取两个经纬度之间的距离         public static double GetDistance(double lng1, double lat1, double lng2, double lat2)        {            double rad

两点经纬度之间距离计算

辅助类 GaoDeCoord.cs GaoDeCoord.cs using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; namespace RB.Common { #region 高德地图求范围自有数据 /// <summary> /// 经纬度坐标 /// </summary> public class Deg

【Python学习】指定两点地理位置经纬度的距离计算

指定两点地理位置经纬度的距离计算 1 #coding=utf-8 2 3 from math import * 4 5 # input Lat_A 纬度A 6 # input Lng_A 经度A 7 # input Lat_B 纬度B 8 # input Lng_B 经度B 9 # output distance 距离(km) 10 def calcDistance(Lat_A, Lng_A, Lat_B, Lng_B): 11 ra = 6378.140 # 赤道半径 (km) 12 rb =

计算经纬度、距离、方位角

1.根据两点经纬度计算其间距离,发现有3种公式,结果区别不是很大. 2.根据一点的经纬度与到另外一点的距离.方位角,计算另一点的经纬度,误差不是很大. 1 package com.zhs.util; 2 3 /** 4 * 5 * 计算经纬度.距离.方位角 6 * 7 * @author lillian.he 8 * @time 2016-06-02 9 * */ 10 public class CalculationLogLatDistance { 11 /** 12 * 地球赤道半径(km)

根据省份等地址获取经纬度,或根据经纬度获取地址信息

在web开发涉及地图操作的时候或者移动客户端开发中有时候有以下需求: 下面主要记录通过百度提供的API的一个解决方案: 在百度开发平台中提供了这样一个叫Geocoding 的API,这个API用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,使用的是http协议,返回JSON或者XML数据. 地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”.同时,地理编码