标签: haversine

C# hasrsine 实现给出了与 googlemaps/movable-type.co.uk 不同的答案

我需要计算两点之间的距离(给定纬度和经度)。我在 C# 中实现了标准半正矢公式

private double toRadian(double val)
{
    return (Math.PI / 180) *    
}

public double Distance(Position pos1, Position pos2,DistanceType type)
{
        double R = (type == DistanceType.Miles) ? 3960 : 6378137; // 6318137 in meters

        double dLat = toRadian(pos2.Latitude - pos1.Latitude);
        double dLon = toRadian(pos2.Longitude - pos2.Longitude);

        double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
        Math.Cos(this.toRadian(pos1.Latitude)) * Math.Cos(this.toRadian(pos2.Latitude)) *
        Math.Sin(dLon / 2) * Math.Sin(dLon / 2);

        double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); 
        double …
Run Code Online (Sandbox Code Playgroud)

c# haversine

1
推荐指数
1
解决办法
1824
查看次数

PHP:Haversine公式给出了巨大(不正确)的距离

为什么Haversine公式会返回很远的距离?根据我通过的值,距离不应超过1或2公里.但它返回8,104公里.

我知道这是PHP经常出现的问题.

感谢这里的代码片段:

function haversineGreatCircleDistance(
  $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371)
{
  // convert from degrees to radians
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);

  $latDelta = $latTo - $latFrom;
  $lonDelta = $lonTo - $lonFrom;

  $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
    cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
  return $angle * $earthRadius;
}
Run Code Online (Sandbox Code Playgroud)

php math maps latitude-longitude haversine

1
推荐指数
1
解决办法
2850
查看次数

张量流中的 deg2rad 转换

我正在我的 CNN(python 2.7.14,tensorflow 1.14.0)中实现一个半正弦损失​​函数。我正在寻找将度数转换为弧度的 tf 调用。有这样的api吗?在 tensorflow 文档中找不到这个。

loss haversine tensorflow

1
推荐指数
1
解决办法
1803
查看次数

使用 R 中的半正矢公式和自定义函数查找两个城市之间的距离

我正在尝试使用 R 查找两点之间的距离。虽然我已经看到了其他答案(从数据框到特定位置查找最近的城市),但我想使用特定的公式来计算以英里为单位的距离。在另一个网站(https://andrew.hedges.name/experiments/haversine/)上,我发现 Java 中的这段代码在 GUI 中给出了正确的距离:

dlon = lon2 - lon1 
dlat = lat2 - lat1 
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2 
c = 2 * atan2( sqrt(a), sqrt(1-a) ) 
d = 3961 * c
Run Code Online (Sandbox Code Playgroud)

然后我将其转换为 R 中的函数:

geo_distance <- function(lon2, lon1, lat2, lat1){
  dlon <- lon2 - lon1
  dlat <- lat2 - lat1
  a <- (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2
  c <- 2 * atan2(sqrt(a), sqrt(1-a))
  d <- 3961 …
Run Code Online (Sandbox Code Playgroud)

geocoding r function distance haversine

1
推荐指数
1
解决办法
1992
查看次数

如何使用iPhone中的Haversine Formula计算两个地方之间的距离?

我想用Haversine公式计算两个地方之间的距离.实际上我有两个地方的纬度和经度值.现在我想用Haversine公式计算那些地方之间的距离.

对于Eg:

 First Place: 
           "lat" :  12.97159870,
           "lng" : -77.59456270

Second Place:
           "lat" :  9.915996999999999,
           "lng" : -78.1218470
        },
Run Code Online (Sandbox Code Playgroud)

现在我想用Haversine Formula计算距离.

请帮帮我.谢谢!

iphone formula haversine

0
推荐指数
2
解决办法
2520
查看次数

PostGIS ST_Distance_Spheroid 或Haversine

ST_Distance_Spheroid在 PostgreSQL(使用 Postgis)中使用来计算沃金和爱丁堡之间的距离,如下所示:

CREATE TABLE pointsTable (
    id serial NOT NULL,
    name varchar(255) NOT NULL,
    location Point NOT NULL,
    PRIMARY KEY (id)
);

INSERT INTO pointsTable (name, location) VALUES 
( 'Woking', '(51.3168, -0.56)' ),
( 'Edinburgh', '(55.9533, -3.1883)' );

SELECT ST_Distance_Spheroid(geometry(a.location), geometry(b.location), 'SPHEROID["WGS 84",6378137,298.257223563]')
FROM pointsTable a, pointsTable b
WHERE a.id=1 AND b.id=2;
Run Code Online (Sandbox Code Playgroud)

我得到了 592 公里(592,053.100454442 米)的结果。

不幸的是,当我使用网络上的各种来源进行相同的计算时,我始终在 543 公里附近,相差 8.2%。

幸运的是,第三个消息来源澄清说他们使用的是半正弦公式。我不确定其他两个来源。

我在查询中做错了什么还是因为使用的公式不同?如果是这样,哪个计算最接近乌鸦可以飞行的最短距离,保持恒定的高度?

postgis haversine

0
推荐指数
1
解决办法
1133
查看次数

Haskell - 从半正矢返回的距离不正确

我有下面的代码用于计算机场列表之间的半正矢距离,但它始终返回错误的值。例如,在 ORD(芝加哥)和 JFK(纽约)上运行以下代码,haversine (head $ allAirports) (last $ allAirports)92.16479615931107当 ORD 和 JFK 之间的实际距离约为 827 英里时才会返回。知道我在计算中做错了什么吗?

type Location = (Double, Double)

data Airport = Airport {
  name :: String,
  location :: Location
} deriving (Eq)

allAirports :: [Airport]
allAirports = [
   Airport { name="ORD", location=(41.9786,-87.9048)},
   Airport { name="JFK", location=(40.64505923593942, -73.777106518636)}]

 haversine :: Airport -> Airport -> Double
 haversine (Airport _ (x1,y1)) (Airport _ (x2,y2)) = radius * c
  where radius = 3959.87433
    to_rad :: Double -> Double …
Run Code Online (Sandbox Code Playgroud)

math haskell distance haversine

0
推荐指数
1
解决办法
150
查看次数

Java中的Haversine公式产生不正确的结果

我正在尝试使用Haversine formula 维基百科给出的这个实现进行试验,但这个公式没有给出预期的结果。

public class Haversine {
    public static final double R = 6372.8; // In kilometers
    public static double haversine(double lat1, double lon1, double lat2, double lon2) {
        double dLat = Math.toRadians(lat2 - lat1);
        double dLon = Math.toRadians(lon2 - lon1);
        lat1 = Math.toRadians(lat1);
        lat2 = Math.toRadians(lat2);

        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
        double c = 2 * Math.asin(Math.sqrt(a));
        return …
Run Code Online (Sandbox Code Playgroud)

java math gps formula haversine

-1
推荐指数
1
解决办法
5171
查看次数