找到最近的gps点指向python中的poi位置

时间:2019-03-12 13:48:22

标签: python-3.x gps latitude-longitude knn

我的数据集包含gps(lon,lat)和poi(lon,lat)位置 而且我想(python代码)找到所有gps点到500,1000,2000米区域内所有poi位置的最近点。

我尝试了以下操作:

python中的knn,但是很费时间(将ponits转换为utm)

geopy.distance(但我无法在gps点和poi位置范围内做到这一点)

我在sql中找到了此解决方案: 但我想要python中的解决方案 我的问题是如何获取GPS点集与Poi集合之间的最近距离

SELECT z.zip,
        z.primary_city,
        z.latitude, z.longitude,
        p.distance_unit
                 * DEGREES(ACOS(COS(RADIANS(p.latpoint))
                 * COS(RADIANS(z.latitude))
                 * COS(RADIANS(p.longpoint) - RADIANS(z.longitude))
                 + SIN(RADIANS(p.latpoint))
                 * SIN(RADIANS(z.latitude)))) AS distance_in_km
  FROM zip AS z
  JOIN (   /* these are the query parameters */
        SELECT  42.81  AS latpoint,  -70.81 AS longpoint,
                50.0 AS radius,      111.045 AS distance_unit
    ) AS p ON 1=1
  WHERE z.latitude
     BETWEEN p.latpoint  - (p.radius / p.distance_unit)
         AND p.latpoint  + (p.radius / p.distance_unit)
    AND z.longitude
     BETWEEN p.longpoint - (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
         AND p.longpoint + (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
  ORDER BY distance_in_km
  LIMIT 15

0 个答案:

没有答案