python根据经纬度计算距离,python 经纬度
2、Geopy2.1 Geopy 库介绍
这里有一个Python包Geopy,也可以实现经纬度的地理位置转换。
这个包的经纬度转换原理其实是依赖于第三方API平台的,因为市面上有很多第三方平台提供经纬度转换。为了方便起见,Geopy将这些接口封装在一个类中,并借助Geopy模块调用它们。支持的第三平台如下
作为一个专注于地理处理的包,Geopy可以实现地理编码和逆地理编码的上述功能,还有一个我体验过的功能,提供两个经纬度坐标,计算他们在地球上的最短距离。
下面将介绍Geopy的具体用法,
2.2地理编码使用地理编码函数时,需要借助Geopy的geocoders模块,将所有第三方API封装成地理编码器。
这里选择OpenStreetMap平台上提供的Nominatim geocoder,因为它可以被我们免费使用,不需要申请API。但缺点是因为目前的限制和额度,不能大规模频繁访问,否则会返回403429的错误代码。
从地质公园。地理编码器导入nominalimgolocator=nomistim()location=geo locator。地理编码( Xi 北京市海淀区二七北路)打印(位置.地址)打印(位置.纬度,位置.经度)结果如下
中国北京市海淀区东北王村西岐北路,邮编:102208,2008 . 100000000001
从geopy.geocoders导入nominalimgolocator=nomim()location=geo locator . reverse( 40.056793 116.305811 )print(location . address)结果如下
中国北京市海淀区东北王村西二旗北路1号,邮编102208。结果好看,简单方便;但是提醒一下,因为Nominatim模块有限,所以不要频繁访问,否则会出现以下错误。
2.3 逆地理编码
Geopy最让我惊讶的是这种用法,它提供了两个经纬度坐标来计算它们之间的距离。因为地球具体是一个椭圆,不能按照常规方法计算。目前,有以下几种流行的模式
模型主要(公里)次要(公里)扁平椭圆体={WGS-84: (6378.137,6356.7523142,1/298.257223563), GRS-80: (6378.137,6356.7523141,1/298.25722222101),艾里(1830):(1837 . 193677
从geopy导入距离newport_ri=(41.49008,-71.312796)cleveland_oh=(41.499498,-81.695391)print(distance . distance(newport _ ri,Cleveland _ oh)。miles)#最终以miles为单位输出#输出538.39044536惠灵顿=(-41.32,174.81)萨拉曼卡=(40.96,-5.50) print (distance.distance(惠灵顿,萨拉曼卡)。公里)#单位为公里
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。