如何计算两个ZIP之间的距离?

lig*_*i96 0 python r distance sas pandas

我有一个美国邮政编码列表,我必须计算所有邮政编码点之间的距离.它是一个6k长的邮政编码列表,每个实体都有ZIP,城市,州,拉特,长,区域和人口.

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

这是我的数据样本

在此输入图像描述

我在SAS中尝试了这个但是它太慢而且效率低下,因此我正在寻找使用Python或R的方法.

任何线索将不胜感激.

jit*_*796 10

Python解决方案

如果您有邮政编码相应的纬度和经度,则可以使用“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)
Run Code Online (Sandbox Code Playgroud)

您将得到以公里为单位的最终距离。输出:

3.27
Run Code Online (Sandbox Code Playgroud)

附言。如果您没有邮政编码的相应坐标,您可以使用“uszipcode”库的“SearchEngine”模块获得相同的坐标(仅适用于美国邮政编码)

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))
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!!


Ric*_*ard 5

在SAS中,使用该GEODIST功能.

GEODIST功能

返回两个纬度和经度坐标之间的大地距离.
......
语法

GEODIST(latitude-1, longitude-1, latitude-2, longitude-2 <, options>)