【问题标题】:Find existence of location(lat,lon) between two location(lat,lon)在两个位置(lat,lon)之间查找位置(lat,lon)的存在
【发布时间】:2018-05-27 02:57:18
【问题描述】:

我有两个点(位置)及其纬度和经度,“A”和“B”。现在我想知道A和B之间是否存在第三点(位置)“C”。我确实有C的纬度和经度。

如何检查 A 和 B 10 公里无线电中是否存在 C 点,请查看以下说明。

“介于”A和B之间的解释:

________10KM_______
|                  |
|         C        |
|10KM          10KM|
|                  |
A -------10KM----- B
|                  | 
|10KM          10KM|
|                  |  
|______10KM________|

我已经访问了以下问题,但我无法思考。

  1. find location between two other locations
  2. Finding coordinates of a point between two points?

【问题讨论】:

  • 您的问题不完整。当您谈论地理时,“Between”可能意味着很多不同的东西。请编辑您的问题以包含“介于”的定义。
  • 感谢@SamAxe 指出规范。
  • 你需要找到A和C之间的距离;和 B 和 C,并将这些距离与您的阈值(10 公里)进行比较。由于纬度/经度以度为单位,并且度与公里的比率根据经度而变化..您可以使用地理空间库来计算它(通常昂贵且困难),或者您可以使用 haversine 函数来近似它.
  • 宾果游戏。感谢@SamAxe 给我这个想法。它解决了我的问题。
  • 您可以使用GeoCoordinate msdn.microsoft.com/en-us/library/ee808858(v=vs.110).aspx 方法GetDistanceTo 来查找两个地理坐标之间的距离。

标签: c#


【解决方案1】:

如果您将“A 和 B 之间”定义为“A 10 公里内和 B 10 公里内”,那么您可以使用半正弦计算来检查这两个距离。见https://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate.getdistanceto(v=vs.110).aspx

现在,在我看来,您定义“之间”的方式存在问题。考虑一个以 A 为中心的 10 公里圆和另一个以 B 为中心的圆相交的形状,如 Ven 图。如果 A 和 B 相距很近(例如相距 2 公里),则相交区域中有很多点看起来并不“介于”之间。

我会根据 A 和 B 之间的实际半正弦距离动态选择圆的半径,而不是固定的 10 公里。例如,如果 R = m * d (A, B)。

对于 m = 1,一个圆的中心与另一个圆的边缘相交,我认为这更符合“介数”的概念。您可以尝试为 1 到 2 之间的其他 m 绘制图片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多