Google maps DbGeography.Distance()返回的距离不正确

Google maps DbGeography.Distance()返回的距离不正确,google-maps,coordinates,gis,bing-maps,geospatial,Google Maps,Coordinates,Gis,Bing Maps,Geospatial,我正在试验System.Data.Spatial.DbGeography,我想用它来确定从一个坐标到另一个坐标的距离(将存储在SQL server中) 我的坐标是lat/long,我是从Bing地图上得到的(我也尝试过谷歌地图上的坐标,结果是一样的) 返回: 距离:634340839088124km 返回的距离大约是其应返回距离的两倍 有人知道发生了什么吗?事实证明,在创建新的DbGeography对象时,lat/long被指定为long/lat 我已经编写了一个小的helper方法,以便将来

我正在试验System.Data.Spatial.DbGeography,我想用它来确定从一个坐标到另一个坐标的距离(将存储在SQL server中)

我的坐标是lat/long,我是从Bing地图上得到的(我也尝试过谷歌地图上的坐标,结果是一样的)

返回: 距离:634340839088124km

返回的距离大约是其应返回距离的两倍


有人知道发生了什么吗?

事实证明,在创建新的DbGeography对象时,lat/long被指定为long/lat

我已经编写了一个小的helper方法,以便将来不再出错:

private static DbGeography CreateDbGeography(double latitude, double longitude, int srid = 0)
{
    var text = string.Format(CultureInfo.InvariantCulture.NumberFormat, "POINT({0} {1})", longitude, latitude);

    if (srid > 0)
    {
        return DbGeography.FromText(text, srid);
    }

    return DbGeography.FromText(text);
} 

事实证明,在创建新的DbGeography对象时,lat/long被指定为long/lat

我已经编写了一个小的helper方法,以便将来不再出错:

private static DbGeography CreateDbGeography(double latitude, double longitude, int srid = 0)
{
    var text = string.Format(CultureInfo.InvariantCulture.NumberFormat, "POINT({0} {1})", longitude, latitude);

    if (srid > 0)
    {
        return DbGeography.FromText(text, srid);
    }

    return DbGeography.FromText(text);
} 

您没有按正确的顺序在WKT中声明元素。 WKT应适用于您的情况:

POINT(10.2050 59.7378)
请参见此处的OGC标准:

然后必须声明如下:

POINT(LONGITUDE LATITUDE)

还请记住,不是驾驶距离,而是乘飞机的距离。

您没有按照正确的顺序在WKT中声明元素。 WKT应适用于您的情况:

POINT(10.2050 59.7378)
请参见此处的OGC标准:

然后必须声明如下:

POINT(LONGITUDE LATITUDE)

还请记住,不是驾驶距离,而是乘飞机的距离。

我追求的是乘飞机的距离。我要用这个距离,从一个坐标中得到一个给定半径内的兴趣点,这是我所追求的在空中的距离。我将使用距离,从坐标中得到给定半径内的兴趣点。