计算2个坐标(经纬度)之间的距离,.Net

.Net 中计算2个点之间的距离的方法,或者叫计算2个坐标,2个经纬度之间的距离。

代码如下:

 1 /// <summary>
 2     /// Calculates the distance between two geographics locations
 3     /// </summary>
 4     public static class GeoDistance
 5     {
 6         public static double Between(double latitude1, double longitude1, double latitude2, double longitude2,
 7             DistanceUnits units = DistanceUnits.Kilometers)
 8         {
 9             double a1 = latitude1 * RadianConversionFactor;
10             double b1 = longitude1 * RadianConversionFactor;
11             double a2 = latitude2 * RadianConversionFactor;
12             double b2 = longitude2 * RadianConversionFactor;
13
14             double distance =
15                 Math.Acos(Math.Cos(a1) * Math.Cos(b1) * Math.Cos(a2) * Math.Cos(b2) +
16                     Math.Cos(a1) * Math.Sin(b1) * Math.Cos(a2) * Math.Sin(b2) + Math.Sin(a1) * Math.Sin(a2)) * DistanceConstants[units];
17
18             return distance;
19         }
20
21         private const double RadianConversionFactor = Math.PI / 180;
22
23         private static readonly Dictionary<DistanceUnits, double> DistanceConstants = new Dictionary<DistanceUnits, double>(3) {
24             { DistanceUnits.Miles, 3963.1 },
25             { DistanceUnits.NauticalMiles, 3443.9 },
26             { DistanceUnits.Kilometers, 6378 }
27         };
28     }
29
30     public enum DistanceUnits
31     {
32         Miles,
33         NauticalMiles,
34         Kilometers,
35     }

代码很简单,但是费了不少劲。就是还没测试效率怎么样。如果有高效的算法,请不要吝啬指教!!!

时间: 2024-08-10 21:21:51

计算2个坐标(经纬度)之间的距离,.Net的相关文章

js计算地球两个经纬度之间的距离

<!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> <title></title> <sc

根据两点的经纬度坐标计算两个坐标点之间的直线距离

贴代码如下: package com.qcsd.xulin.util; import java.awt.*; /** * @author xulin * @date create in 9:06 2018/11/1 * Description 根据提供的两个国标经纬度,计算两个点之间的距离 */ public class DistanceConsider { // 地球半径 private static double EARTH_RADIUS = 6378.137; private static

IOS 计算两个经纬度之间的距离

一 丶 -(double)distanceBetweenOrderBy:(double) lat1 :(double) lat2 :(double) lng1 :(double) lng2{ CLLocation *curLocation = [[CLLocation alloc] initWithLatitude:lat1 longitude:lng1]; CLLocation *otherLocation = [[CLLocation alloc] initWithLatitude:lat2

java通过经纬度计算两个点的之间的距离的算法

通过两个点的经纬度计算距离 从google maps的脚本里扒了段代码,没准啥时会用上.大家一块看看是怎么算的.private const double EARTH_RADIUS = 6378.137;private static double rad(double d){   return d * Math.PI / 180.0;} public static double GetDistance(double lat1, double lng1, double lat2, double ln

PHP计算2点经纬度之间的距离代码

以下是对PHP计算2点经纬度之间的距离代码进行了分析介绍,需要的朋友可以过来参考下 <?php function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) { $theta = $longitude1 - $longitude2; $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad

计算两个经纬度之间的距离

//计算两个经纬度之间的距离 /** * 计算两点地理坐标之间的距离 * @param Decimal $longitude1 起点经度 * @param Decimal $latitude1 起点纬度 * @param Decimal $longitude2 终点经度 * @param Decimal $latitude2 终点纬度 * @param Int $unit 单位 1:米 2:公里 * @param Int $decimal 精度 保留小数位数 * @return Decimal

获取两个点经纬度之间的距离

/** * js获取两个经纬度之间的距离 * @param lat1 第一点的纬度 * @param lng1 第一点的经度 * @param lat2 第二点的纬度 * @param lng2 第二点的经度 * @returns {Number} */ function getDistance(lat1, lng1, lat2, lng2) { var radLat1 = lat1*Math.PI / 180.0; var radLat2 = lat2*Math.PI / 180.0; var

计算两个经纬地之间的距离

/** * 计算两个经纬度之间的距离 (lon1,lat1),(lon2,lat2) * @param lan1 * @param lat1 * @param lan2 * @param lat2 * @return */ public static double GetDistance(double lng1, double lat1, double lng2, double lat2) { double EARTH_RADIUS = 6371.393; double radLat1 = (l

计算两个latitude-longitude点之间的距离? (Haversine公式)

问题描述 如何计算纬度和经度指定的两点之间的距离?为了澄清,我想要距离公里;这些点使用WGS84系统,我想了解可用方法的相对准确性.最佳解决方案 这个link可能对您有帮助,因为它详细说明了使用Haversine formula计算距离. 摘抄: This script [in Javascript] calculates great-circle distances between the two points – that is, the shortest distance over the

计算两个坐标点之间的点的坐标

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>计算两个坐标点之间的点的坐标</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> &l