Python 如何计算两个拉链之间的距离?
我有一个美国邮政编码列表,我必须计算所有邮政编码点之间的距离。它是一个6k拉链长列表,每个实体有邮政编码、城市、州、纬度、长度、面积和人口 因此,我必须计算所有点之间的距离,即;6000C2组合 这是我的数据样本 我曾在SAS中尝试过这种方法,但速度太慢,效率太低,因此我正在寻找一种使用Python或R的方法 任何潜在客户都将不胜感激。在SAS中,请使用 测地仪功能 返回两个纬度和经度坐标之间的大地距离。Python 如何计算两个拉链之间的距离?,python,r,pandas,sas,distance,Python,R,Pandas,Sas,Distance,我有一个美国邮政编码列表,我必须计算所有邮政编码点之间的距离。它是一个6k拉链长列表,每个实体有邮政编码、城市、州、纬度、长度、面积和人口 因此,我必须计算所有点之间的距离,即;6000C2组合 这是我的数据样本 我曾在SAS中尝试过这种方法,但速度太慢,效率太低,因此我正在寻找一种使用Python或R的方法 任何潜在客户都将不胜感激。在SAS中,请使用 测地仪功能 返回两个纬度和经度坐标之间的大地距离。 … 语法 GEODIST(纬度-1,经度-1,纬度-2,经度-2) R溶液 #示例数据:
…
语法
GEODIST(纬度-1,经度-1,纬度-2,经度-2)
R溶液
#示例数据:提供的前三行数据
dfPython解决方案
如果您有相应的邮政编码纬度和经度,您可以使用“mpu”库使用哈弗森公式直接计算它们之间的距离,该库确定球体上两点之间的大圆距离
示例代码:
import mpu
zip_00501 =(40.817923,-73.045317)
zip_00544 =(40.788827,-73.039405)
dist =round(mpu.haversine_distance(zip_00501,zip_00544),2)
print(dist)
您将得到以公里为单位的合成距离。
输出:
另外,如果您没有相应的邮政编码坐标,您可以使用“uszipcode”库的“SearchEngine”模块获得相同的坐标(仅适用于美国邮政编码)
希望这有帮助 “可能是可以帮助你的一个选择,也许不是最好的,就是使用哈弗森公式和一对邮政编码的纬度/经度坐标。@TimBiegeleisen在参考了几篇文章之后,我认为哈弗森公式不太准确,可能对R有帮助。重要的是包imap
中的函数。更一般地说,在计算速度、准确度和易用性方面,无疑存在许多优缺点。要获得更高的准确度,可以使用Vincenty算法,该算法基于地球椭球体模型。您好,我们使用邮政编码00501和00544尝试了上述解决方案,但我们得到了这个错误。[..\mpu_init_uuuu.py”,第193行,在haversine_距离内,如果不是(-90.0嘿,它似乎无法识别其中一个邮政编码。您是否可以尝试设置“simple_zipcode”"=False?如果不起作用,请告诉我,will将深入探讨。嗨,Jitesh,谢谢你的回答。我们尝试了这些邮政编码03060和03062。它们在使用“False”或不使用“False”时都可以正常工作,但当我们使用03060和02222时,False和True返回了相同的错误。嗨,桑塔纳,我检查了邮政编码02222。看起来纬度和经度是相同的在uszipcode库中没有对应于此zip的内容。如果您只打印各种变量,zip1、zip2、lat和long等,您将能够看到可用的信息。我在线检查了邮政编码,找到了lat和long、、并使用这些值,它可以正常工作。uszipcode可能没有所有邮政编码的详尽信息,您可以进行搜索如果有其他可用的图书馆。希望这对…有帮助。。。。
import mpu
zip_00501 =(40.817923,-73.045317)
zip_00544 =(40.788827,-73.039405)
dist =round(mpu.haversine_distance(zip_00501,zip_00544),2)
print(dist)
3.27
from uszipcode import SearchEngine
#for extensive list of zipcodes, set simple_zipcode =False
search = SearchEngine(simple_zipcode=True)
zip1 = search.by_zipcode('92708')
lat1 =zip1.lat
long1 =zip1.lng
zip2 =search.by_zipcode('53404')
lat2 =zip2.lat
long2 =zip2.lng
mpu.haversine_distance((lat1,long1),(lat2,long2))