Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算两个拉链之间的距离?_Python_R_Pandas_Sas_Distance - Fatal编程技术网

Python 如何计算两个拉链之间的距离?

Python 如何计算两个拉链之间的距离?,python,r,pandas,sas,distance,Python,R,Pandas,Sas,Distance,我有一个美国邮政编码列表,我必须计算所有邮政编码点之间的距离。它是一个6k拉链长列表,每个实体有邮政编码、城市、州、纬度、长度、面积和人口 因此,我必须计算所有点之间的距离,即;6000C2组合 这是我的数据样本 我曾在SAS中尝试过这种方法,但速度太慢,效率太低,因此我正在寻找一种使用Python或R的方法 任何潜在客户都将不胜感激。在SAS中,请使用 测地仪功能 返回两个纬度和经度坐标之间的大地距离。 … 语法 GEODIST(纬度-1,经度-1,纬度-2,经度-2) R溶液 #示例数据:

我有一个美国邮政编码列表,我必须计算所有邮政编码点之间的距离。它是一个6k拉链长列表,每个实体有邮政编码、城市、州、纬度、长度、面积和人口

因此,我必须计算所有点之间的距离,即;6000C2组合

这是我的数据样本

我曾在SAS中尝试过这种方法,但速度太慢,效率太低,因此我正在寻找一种使用Python或R的方法

任何潜在客户都将不胜感激。

在SAS中,请使用

测地仪功能 返回两个纬度和经度坐标之间的大地距离。

语法
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))