- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对数据框 1 有几个兴趣点,如下所示:
City District BusinessArea LATB LNGB
BJ 39.891239 116.333334
BJ 39.893203 116.365832
BJ 39.936265 116.359406
BJ 39.88723 116.399005
BJ 39.882956 116.35425
我想从 dataframe 2 中搜索最近位置的 District 和 BusinessArea 到这些地方,并将它们填充到 dataframe 1 中的相应列中。我如何在 Python 中实现这一点?谢谢。
City District BusinessArea LATB LNGB
BJ CY CBD 39.958953 116.521695
BJ DC ADM 39.959331 116.417026
BJ HD ANZ 40.050313 116.328861
BJ XAXQ AX 38.878255 115.886731
BJ CY AZ 39.979982 116.407959
BJ CY ALPKGY 40.00121 116.399127
BJ SJS BBS 39.920912 116.243273
BJ YQ BDL 40.367837 115.983509
BJ SJS BDC 39.955215 116.194778
BJ SJS BJ 39.91896 116.205016
到目前为止我已经意识到了这一点。需要做更多的工作。
import pandas as pd
import numpy as np
import math
from math import *
EARTH_REDIUS = 6378.137
def rad(d):
return d * pi / 180.0
def getDistance(lat1, lng1, lat2, lng2):
radLat1 = rad(lat1)
radLat2 = rad(lat2)
a = radLat1 - radLat2
b = rad(lng1) - rad(lng2)
s = 2 * math.asin(math.sqrt(math.pow(sin(a/2), 2) + cos(radLat1) * cos(radLat2) * math.pow(sin(b/2), 2)))
s = s * EARTH_REDIUS
return s
if __name__ == '__main__':
business = pd.read_excel("df2.xlsx")
match_place = pd.read_excel("df1.xlsx")
res = pd.DataFrame()
for i in range(business.shape[0]):
for j in range(5):
res.at[j,business.at[i,"BusinessArea"]] = getDistance(business.at[i,"LATB"],business.at[i,"LNGB"]
,match_place.at[j,"LATB"],match_place.at[j,"LNGB"])
print(res.columns[np.argmin(np.array(res), 1)])
最佳答案
如何做 (并按原样使用你的 geodesic getDistance
函数)
cols_to_get = ('District', 'BusinessArea')
dmat = df1.apply(
lambda r1: df2.apply(
lambda r2: getDistance(r1.LATB, r1.LNGB, r2.LATB, r2.LNGB),
axis=1
),
axis=1
)
df1.ix[:, cols_to_get] = df2.ix[
dmat.idxmin(axis=1), cols_to_get
].values
print(df1)
# returns:
# City District BusinessArea LATB LNGB
#0 BJ SJS BBS 39.891239 116.333334
#1 BJ DC ADM 39.893203 116.365832
#2 BJ DC ADM 39.936265 116.359406
#3 BJ DC ADM 39.887230 116.399005
#4 BJ DC ADM 39.882956 116.354250
请注意,使用方法 ix
以后可能会返回弃用警告,例如
DeprecationWarning:
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing
关于python - 按经纬度查找最近的位置并在 Python 中填写 District 和 BusinessArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52923459/
我对纬度和经度有疑问。当我想获取坐标时,只有 24 个 API 检索坐标。其他人没有。不知道为什么 我正在使用 GPSTracker 服务 public Location getLocation()
我有一个表(DB2 数据库),其中包含城市信息和相应的经纬度以及与城市相关的许多其他信息。我的要求是: 我的应用程序的输入将是纬度和经度,它们可能是或许多不是存储在数据库中的精确纬度和经度。我需要借助
我在经度和纬度上有一个位置 (A)。 我有一条线段,起点(B)和终点(C)在经度和纬度上。 我试图计算的是从 A 到 BC 线的最短距离。 换句话说,从 A 到最近点(在 BC 线上)的距离(以米为单
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
这个问题在这里已经有了答案: Find nearest latitude/longitude with an SQL query (18 个答案) 关闭 6 年前。 我正在尝试编写一个在某个位置附近
我正在尝试将 Yelp 的 API 与纬度/经度位置结合使用。我使用了 yelp 给出的 javascript 代码,它基本上有一个参数数组,并像这样将值插入其中: parameters.push([
我有一大组纬度和经度需要存储在 MySQL 数据库中。我正在阅读有关要使用的字段类型的相互矛盾的建议。 数据的一个例子是... Lat | Long -----------------
在我的应用程序中,我通过以特定时间间隔从服务器获取他们的位置(纬度和经度)来显示其他人的位置。 获取后,我必须删除所有注释并删除基于服务器数据的新注释。 但它看起来非常低效,因为当我们以前存在相同用户
我正在尝试将鼠标在谷歌地图上的位置转换为 LatLng 对象。我看到很多关于通过谷歌地图“点击”事件等获取位置的帖子,如下所示: google.maps.event.addListener(map,
我的 SQLite 数据库中存储了经纬度数据,我想获取与我输入的参数最近的位置(例如,我当前的位置 - 纬度/经度等)。 我知道这在 MySQL 中是可能的,并且我已经进行了相当多的研究,认为 SQL
伙计们,我在我的 Android 应用程序中实现了谷歌地图,并开始创建一个标记,我在 map 中间放置了一个标记图像。现在,我希望每当用户拖动 map 时,我都能得到 map 中心的位置(我放置图像的
我正在实现 GPS 跟踪器以从 http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/ 获取经度和纬度.
我有一个多边形形状文件(可下载 here ),我想从中创建一个包含 3 列的 data.frame ,其中包含: 多边形 ID 质心纬度 质心经度 来自这个答案here ,我知道以 Formal Cl
有没有办法使用facebook api以(纬度和经度格式)获取用户的位置? 我能够获得位置名称和其他属性,但不能获得该地点的经纬度。 javascript中是否有相同的API。 最佳答案 如果您有用户
在我的“原生”Android 应用程序中,我试图计算 map 上两个位置之间以英尺和/或米(如乌鸦飞翔)为单位的距离。理想情况下,会有一种方法将两个 LatLng 值(因为这是我随时可用的)作为输入并
我想使用 Google API 获取 GPS 位置。 我的代码: mGoogleApiClient = new GoogleApiClient.Builder(this)
这个问题在这里已经有了答案: How to calculate the latlng of a point a certain distance away from another? (6 个答案)
我是一名优秀的程序员,十分优秀!