- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一份事故地点经纬度列表,想了解距离这些事故最近的警察局。目前,事故的经纬度列表位于使用 pandas 的两个单独的列中(抱歉,我对 python 很陌生,所以我可能使用了错误的单词)。警察局的经纬度当前位于单独的 json 文件中。我当前的目标是创建一个新列(或文件),其中显示最近警察局的经纬度。理想情况下,它应该是相应的名称,但这是一座桥梁,当我到达它时我会跨越它。
我已经研究过其他人是如何做到的,但除了询问位置只提供一对拉长鞋之外,我无法更进一步,而且不能同时提供所有拉长鞋。
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']))
#these are the latlons of the police stations
tempDataList = [{"lat": 52.003181, "lon": 4.353068},
{"lat": 52.089416, "lon": 4.377340},
{"lat": 52.019911, "lon": 4.426602},
{"lat": 52.054457, "lon": 4.388764},
{"lat": 52.044536, "lon": 4.332631},
{"lat": 52.072910, "lon": 4.274784},
{"lat": 52.066099, "lon": 4.298664},
{"lat": 52.070030, "lon": 4.317355},
{"lat": 52.052636, "lon": 4.289576},
{"lat": 52.060829, "lon": 4.318683},
{"lat": 52.075680, "lon": 4.306810},
{"lat": 52.040353, "lon": 4.256946},
{"lat": 52.089381, "lon": 4.345599},
{"lat": 52.111719, "lon": 4.283909},
{"lat": 52.055222, "lon": 4.233827},
{"lat": 52.046393, "lon": 4.253105},
{"lat": 52.144177, "lon": 4.405549},
{"lat": 51.987035, "lon": 4.199314},
{"lat": 52.061650, "lon": 4.486572}]
v = {'lat': 52.103167, 'lon': 4.317532}
print(closest(tempDataList, v))
这就是我失败的地方,因为我根本不知道如何使 v
成为两列并将其放入新列中。
我希望有一个列显示最近的警察局的经纬度。有时我会遇到问题TypeError:字符串索引必须是整数
。
最佳答案
下面您可以看到如何将索引列表转换为 numpy 数组,之后您可以对其进行操作,而无需循环遍历每个元素。
import numpy as np
# numpy allows you to work with arrays; math only works with scalars
from numpy import cos, arcsin as asin, sqrt
def distance (lat1, lon1, lat2, lon2):
"""Return the distances between all accidents (lat1,lon1)
and all police stations (lat2,lon2) as a 2-dimensional array
"""
# add dummy dimension to p
lat2 = lat2[:,None]
lon2 = lon2[:,None]
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(*args):
"""Returns the index (counting from zero) of the closest
police station for every accident.
"""
return np.argmin(distance(*args), axis=0)
tempDataList = [{"lat": 52.003181, "lon": 4.353068},
{"lat": 52.089416, "lon": 4.377340},
{"lat": 52.019911, "lon": 4.426602},
{"lat": 52.054457, "lon": 4.388764},
{"lat": 52.044536, "lon": 4.332631},
{"lat": 52.072910, "lon": 4.274784},
{"lat": 52.066099, "lon": 4.298664},
{"lat": 52.070030, "lon": 4.317355},
{"lat": 52.052636, "lon": 4.289576},
{"lat": 52.060829, "lon": 4.318683},
{"lat": 52.075680, "lon": 4.306810},
{"lat": 52.040353, "lon": 4.256946},
{"lat": 52.089381, "lon": 4.345599},
{"lat": 52.111719, "lon": 4.283909},
{"lat": 52.055222, "lon": 4.233827},
{"lat": 52.046393, "lon": 4.253105},
{"lat": 52.144177, "lon": 4.405549},
{"lat": 51.987035, "lon": 4.199314},
{"lat": 52.061650, "lon": 4.486572}]
# first get lat and lon into arrays
lat, lon = np.transpose([[i['lat'],i['lon']] for i in tempDataList])
# I'm making up the police stations here. Say 5 police stations.
# you should load the actual data in your problem. My station locations
# are randomly located near the first 5 accidents
npolice = 5
# for reproducibility
np.random.seed(3)
plat = lat[:npolice] + np.random.normal(0, 0.02, npolice)
plon = lon[:npolice] + np.random.normal(0, 0.02, npolice)
index = closest(lat, lon, plat, plon)
# index = array([3, 1, 2, 0, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 1, 4, 2])
所以最近的警察局位置是
nearest = {'lat': plat[index], 'lon': plon[index]}
并且您可以使用 index
来访问每个警察局的名称或地址(如果您还存储了这些信息)。
希望有帮助。
关于python - 如何计算整列最接近的纬度经度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56463982/
所以:我有以下函数,改编自在线找到的公式,它采用两个纬度/经度坐标并计算它们之间的距离(以英里为单位)(沿着球形地球): public static double distance (double l
我有一个给定点(经度、纬度),我想获取给定点 5 英里半径范围内的所有点范围? 最佳答案 我只是在这里猜测,但我认为您需要找到一种不同的方法。如果您尝试使用 Foursquare、Google map
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
我找到了一些代码,用于将纬度/经度转换为给定图像上的像素,反之亦然。我将其移植到 JavaScript,但在纬度上得到了不正确的返回值。我测试了原始的、未修改的代码,它给出了同样的不准确之处。下面是带
我正在考虑使用 rChart/LeafLet 为我所在县的房屋销售创建一个 Shiny 的应用程序。在任何给定时间,都有数百套房屋出售。想要为所有人绘制街道地址到地理位置(纬度/经度)的 map 并将
是否有任何方法(任何 API 或任何 URL)仅通过传递区号(邮政编码)来查找经纬度? 最佳答案 Google map 地理编码器将仅根据邮政编码进行搜索。 这是一个例子:(和一个 fiddle 来查
我正在尝试使用 openlayers 中的方形多边形来获取边界框。我需要从框中获取 North、South、West 和 East 值。现在我正在使用: var topleft = vectors.f
下面的代码将在 map 中添加一个标记并在警报中显示其纬度/经度。 var note = document.getElementById('note'); var datepick = documen
如何将地址或城市转换为纬度/经度?我可以从哪些商业机构“租用”这项服务?这将用于具有全时互联网访问的 Windows PC 上的商业桌面应用程序。 最佳答案 Google 有一个地理编码 API,对于
我的地理位置字符串为 25°9'37"N 55°13'28"E。使用 JavaScript Regex 我想从上面的字符串中提取 Lat 和 Lng。谢谢。 最佳答案 Your first row c
考虑在 map 上有一个圆,其中心为 GLatLng (A),半径 (r) 以米为单位。 如何计算B位置的GLatLng?假设r平行于赤道。 使用 GLatLng.distanceFrom() 方法在
我有 CLLocation 对象,其中包含用户的当前位置,并且对于可以倾斜的矩形的每个角,我有 4 个纬度/经度对。现在我想检查 CLLocation 坐标是否在该矩形内。 以下是矩形的坐标 #def
我正在尝试使用以下代码获取用户当前的纬度/经度: LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SER
我在这里不合时宜,所以如果我没有正确/清楚地问这个问题,请原谅我。 我有一张用户表,每个用户都有经纬度。 我收到一个联邦机构的查询,它提供了这样的多边形或圆形: 38.47,-120.14 38.34
我刚刚开始使用 python 的 BeautifulSoup 包进行抓取。在我的代码中,我得到以下汤对象 >>> soupObj [u'$(function(){SEAT.PG.initDialog(
目前我想通过JDBC将我的GPS经纬度发送到MYSQL。为了检索 GPS 纬度,我使用了下面的代码,并且在 GPSTracker 类中有 GPS 跟踪器代码。这将在任何时候按下按钮来 toast 纬度
我想根据输入的源地址和目标地址画一条路线。我需要根据地址获取纬度/日志才能在 android 中绘制 map 。那么我如何根据输入的地址获取纬度/日志。 Geocoder geoCoder = ne
如何在 android map 上显示我从服务器收到的纬度和经度。我实现了 google map V2 但不知道如何在 map 上显示 gps 坐标。经过大量研究,我来到这里,但无法找到一个合理的解决
我的 Controller 中有以下代码。 .controller('MapCtrl', ['$scope', function initialize() {
我也四处搜寻,但没有发现任何真正有帮助的东西。情况如下: 假设我对城市和天气预报有一个简单的关系。我们可以与纬度和经度联系起来,因此我们可以得到以下结果: 城市表: cityId | name
我是一名优秀的程序员,十分优秀!