我正在编写一个小程序,为了提高效率,我需要能够找到数组中最接近的纬度和经度。
假设您有以下代码:
tempDataList = [{'lat': 39.7612992 , 'lon': -86.1519681},
{"lat": 39.762241, "lon": -86.158436},
{"lat": 39.7622292, "lon": -86.1578917}]
tempLatList = []
tempLonList = []
for item in tempDataList:
tempLatList.append(item['lat'])
tempLonList.append(item['lon'])
closestLatValue = lambda myvalue: min(tempLatList, key=lambda x: abs(x - myvalue))
closestLonValue = lambda myvalue: min(tempLonList, key=lambda x: abs(x - myvalue))
print(closestLatValue(39.7622290), closestLonValue(-86.1519750))
我得到的结果是:
(39.7622292, -86.1519681)
它应该是(在此示例中,列表中的最后一个对象)
(39.7622292, -86.1578917)
我知道如何获取单个值的最接近单元格,但我想让lambda函数考虑这两个值,但我不确定如何做到。救命?
为了正确计算地球上各点之间的距离,您需要使用Haversine公式。使用此答案中提供的Python实现,您可以像这样进行编码:
from math import cos, asin, sqrt
def distance(lat1, lon1, lat2, lon2):
p = 0.017453292519943295
a = 0.5 - cos((lat2-lat1)*p)/2 + cos(lat1*p)*cos(lat2*p) * (1-cos((lon2-lon1)*p)) / 2
return 12742 * asin(sqrt(a))
def closest(data, v):
return min(data, key=lambda p: distance(v['lat'],v['lon'],p['lat'],p['lon']))
tempDataList = [{'lat': 39.7612992, 'lon': -86.1519681},
{'lat': 39.762241, 'lon': -86.158436 },
{'lat': 39.7622292, 'lon': -86.1578917}]
v = {'lat': 39.7622290, 'lon': -86.1519750}
print(closest(tempDataList, v))
问题内容: 我在SQLite数据库中存储了经度和纬度数据,我想获取与所输入参数最接近的位置(例如,我当前的位置-纬度/经度等)。 我知道这在MySQL中是可能的,并且我已经做了大量的研究,认为SQLite需要Haversine公式的自定义外部函数(计算球体上的距离),但是我还没有发现任何用Java编写并且可以工作的东西。 另外,如果要添加自定义功能,则需要org.sqlite.jar(用于org.
问题内容: 我想从下面的数据库表中找到最近的位置 我已经从Google地图中获取了所有数据。在这里,我必须找到一个地方最近的位置。假设我在Surkhet地方,其纬度为28.6,经度为81.6,如何找到距Surkhet地方最近的地方。 问题答案: 这是最好的查询
我正在尝试检索我的地理位置的最新长使用一个谷歌API。此api接受蜂窝塔信息。尽管我提供了所有的信息,但在很长一段时间内,我都没有得到正确的信息。 https://developers.google.com/maps/documentation/geolocation/intro 有人用这个API找到lat long吗?GoogleGEO定位API的精确度有多高?
本文向大家介绍使用Google Maps和PHP查找PostCode或ZipCode的经度和纬度,包括了使用Google Maps和PHP查找PostCode或ZipCode的经度和纬度的使用技巧和注意事项,需要的朋友参考一下 从PostCode转换为映射参考远非准确,但可以使用Google Maps API来完成。尽管每天您的请求数量受到一定限制,但您只需要询问即可从Google获得Google
问题内容: 在询问具体的代码示例之前,我只想问一下是否可以进行类似此伪代码的查询: 从表中选择项目,其中经度/经度=-在某个经度/经度点的x英里内- 那可行吗?还是我必须跳过一些箍?可以推荐的任何好的方法都很棒! 问题答案: 您应该搜索Haversine公式,但是一个好的开始可能是: 使用PHP,MySQL和Google Maps创建商店定位器 -请参见“使用MySQL查找位置”部分 使用MySQ
问题内容: 目前,我在mysql数据库中的位置不足一百万,所有位置都包含经度和纬度信息。 我试图通过查询找到一个点和许多其他点之间的距离。它并没有我想要的那么快,尤其是每秒100次以上的命中。 是否有更快的查询,或者可能是比mysql更快的系统?我正在使用此查询: 注意:提供的距离以 英里为单位 。如果您需要 公里 ,请使用代替。 问题答案: 使用表中数据类型的值创建点。从Mysql 5.7.5开