社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

基于准则的python中两点间最近邻距离的计算

dmin • 4 年前 • 351 次点击  

我正在使用python,可以使用advise来最好地完成这个计算。输出应该向csv添加两个额外的列。1) 应指明最近的高中,2)应指明距离这所高中的公里数。

我得到了一个有效的distance函数,但在比较一个特定行与所有其他指定行的距离时遇到了问题,例如比较一个较低的主行1-4与所有其他主行1-8的距离,并将输出保存到一个新列中。

谢谢

Image of csv dataset

EDIT2-目前的工作代码:

该算法在一些小样本数据下运行,但扩展性不好。我尝试处理的60000个数据点出现内存错误

    # Algorithm for calculating the closest upper primary school for lower primary schools. 

for i, row in df.iterrows():
    listy = 0
    school = []
    if row['LS_Type'] == 'Primary (1-4)':
        a = row['Northing']
        b = row['Easting']
        LS_ID = row['LS_ID']
        for j, row2 in df.iterrows():
            if row2['LS_Type'] == 'Primary (1-8)':
                dist_km = distance(a,b, df.Northing[j], df.Easting[j])
                if (listy == 0):
                    listy = dist_km
                    school.append([df.LS_Name[j], df.LS_ID[j]])
                else:
                    if dist_km < listy:
                        listy = dist_km
                        school[0] = [df.LS_Name[j], int(df.LS_ID[j])]
        df['dist_up_prim'][i] = listy
        df["closest_up_prim"][i] = school[0]

    else:
        df['dist_up_prim'][i] = 0
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53060
 
351 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Baurin Leza
Reply   •   1 楼
Baurin Leza    5 年前

计算起来真的很复杂。最好使用geos的功能或Spatialite等数据库中的本地功能。如果使用迦太基空间进行计算,您将看到结果有错误,这是因为地球不是平的,因为使用地理空间模型很常见。另外,如果你需要到达目标的真实距离,你必须记住,这条路不是一条直线。你也可以使用Google地图的api