You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DbGeography.Distance返回结果异常,求解原因及单位疑问

问题分析与解决

首先,你的DbGeography.Distance计算结果其实是正确的,问题出在你对在线工具的使用上——大概率是把经纬度的输入顺序搞反了!

为什么结果看起来不对?

我们来拆解计算过程:

  1. 你的两个点是同纬度的(40.7155773°N),经度差为:-73.984434 - (-73.98) = -0.004434°
  2. 在该纬度上,每度经度对应的地面距离计算公式为:
    距离(米)= 地球半径 × 经度差(弧度)× cos(纬度(弧度))
    
    代入WGS84标准的地球半径(6378137米)计算:
    • 经度差转弧度:0.004434 × π/180 ≈ 0.00007739
    • cos(40.7155773°) ≈ 0.758
    • 最终结果:6378137 × 0.00007739 × 0.758 ≈ 374.7米
      这个数值和你用DbGeography.Distance得到的374.65完全吻合!

为什么在线工具给出493?

如果把经纬度顺序反过来(把经度当纬度输入,纬度当经度输入),计算的就是纬度差对应的距离:

  • 纬度差为0.004434°,每度纬度的地面距离约为111139米
  • 计算得:0.004434 × 111139 ≈ 493米
    这正好是你提到的在线工具结果,说明你在工具里输入时搞反了经纬度的顺序。

关于DbGeography.Distance的单位

当使用4326坐标系(WGS84全球地理坐标系)时,Distance方法返回的是基于WGS84椭球体的测地线距离,单位为米,完全符合官方定义。你的代码中CreatePoint函数的WKT格式(POINT(lon lat))也是正确的——WGS84坐标系下WKT的POINT格式就是经度 纬度的顺序。


内容的提问来源于stack exchange,提问作者Ivan Sadovsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:30:44