import pandas as pd
from scipy.spatial import distance
from scipy.spatial.distance import cityblock
# Sample dataset with latitude and longitude
patient = {
'Patient': ['pt1'],
'lat': [34.0522],
'lon': [-118.2437]
}
patient = pd.DataFrame(patient)
hospital = {
'hospital': ['h1'],
'LATITUDE': [35.0522],
'LONGITUDE': [-133.2437]
}
hospital = pd.DataFrame(hospital)
distance = cityblock((patient['lat'], patient['lon']), (hospital['LATITUDE'], hospital['LONGITUDE']))
我正在计算经纬度点与曼哈顿距离(城市街区)之间的距离。
但是结果中的测量单位是什么?
编辑添加可重现的示例。
没有任何合理的单位可以附加到此计算结果。
打个比方:假设您正在测量矩形房屋的周长。在其中两侧,您测量的长度为 20 英尺。在另外两侧,您测量的长度为 10 米。将其加起来:20 + 20 + 10 + 10 = 60。现在,您使用哪个单位来计算结果,英尺还是米?答案是两者都不正确:这是将不同长度的距离单位加在一起。
同样,一定程度的纬度和经度跨越不同的距离。一个纬度跨度约为111公里。 (事实上,这就是米最初的定义方式。)经度更为复杂。在赤道,它与纬度相同。当远离赤道时,经度跨越的距离会更短。更具体地说,经度跨度为 111 km * cos(纬度)。
假设您有 2 位患者,每一位距离医院一公里,一位住在医院的正北面,另一位住在医院的正东面。假设医院位于北纬 34 度,以度为单位测量距离意味着您将计算出北边的患者比东边的患者近 18%。
如果您想要测量两个具有物理意义的纬度/经度对之间的距离,我建议您计算半正弦距离。您可以使用 this package 或 this sklearn function 来执行此操作。