Geopy 笔记:计算距离

1 介绍 

  • Geopy使用测地线距离或大圆距离来计算两点之间的地理距离,其中默认使用测地线距离(geopy.distance.distance)
    • 大圆距离(great_circle)使用地球的球形模型,,半径为6371.0087714150598 公里(适用于 WGS-84)
      • 其误差可达到大约 0.5%
      • 该半径值存储在 distance.EARTH_RADIUS 中,因此可以自定义(但单位应始终为公里)
    • 测地线距离是地球椭球模型表面上的最短距离
      • 有多种流行的地球椭球模型,默认情况下使用的是全球最准确的 WGS-84 椭球模型
      • geopy 还在 distance.ELLIPSOIDS 字典中包括了其他几种模型

 

2 举例

2.1 测地线距离

from geopy import distance
loc1 = (31.255561, 121.480033)
loc2 = (31.345561, 121.530033)distance.distance(loc1,loc2)
#Distance(11.055949693856725)
#两个坐标点的测地线距离distance.distance(loc1,loc2).km
#11.055949693856725distance.distance(loc1,loc2).m
#11055.949693856724distance.distance(loc1,loc2).miles
#6.8698486425877405
#换算成不同的单位

 测地线距离使用distance.distance 和 distance.geodesic是没差的

可以切换椭圆模型

distance.geodesic(loc1, loc2, ellipsoid='GRS-80')
#Distance(11.05594969368841)

 也可以自定义椭圆模型的各个参数

distance.geodesic(loc1, loc2, ellipsoid=(6377., 6356., 1 / 297.))
#Distance(11.053833498906037)

2.2 大圆距离

distance.great_circle(loc1,loc2)
#Distance(11.077858517227645)

3 返回的距离也可以做运算

from geopy import distance
from geopy.distance import Distance
loc1 = (31.255561, 121.480033)
loc2 = (31.345561, 121.530033)distance.geodesic(loc1,loc2)
#Distance(11.055949693856725)distance.geodesic(loc1,loc2)*2
#Distance(22.11189938771345)distance.geodesic(loc1,loc2)+Distance(meters=1)
#Distance(11.056949693856724)

4 知道起点、距离和朝向,计算终点

from geopy import distancedistance.distance(kilometers=1).destination((31.255561,121.480033),bearing=90)

距离类这里大写D小写d没有区别

destination的第一个参数表示起始点,第二个参数表示朝向(北0、东90、南180、西270)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/100766.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫:下载小红书无水印图片、视频

该代码只提供学习使用&#xff0c;该项目是基于https://github.com/JoeanAmier/XHS_Downloader的小改动 1.下载项目 git clone https://github.com/zhouayi/XHS_Downloader.git2.找到需要下载的文章的ID 写入main.py中 3.下载 python main.py最近很火的莲花楼为例<嘿嘿…

【C++】—— 单例模式详解

前言&#xff1a; 本期&#xff0c;我将要讲解的是有关C中常见的设计模式之单例模式的相关知识&#xff01;&#xff01; 目录 &#xff08;一&#xff09;设计模式的六⼤原则 &#xff08;二&#xff09;设计模式的分类 &#xff08;三&#xff09;单例模式 1、定义 2、…

Java复习-20-接口(3)- 代理设计模式

代理设计模式(Proxy) 功能&#xff1a;可以帮助用户将所有的开发注意力只集中在核心业务功能的处理上。 代理模式(Proxy Pattern)是一种结构性模式。代理模式为一个对象提供了一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标目标对象&#xff0c;可以在目…

学单片机有前途吗?

学单片机有前途吗? 个人认为学习任何一门技术都比不学的强&#xff0c;针对学单片机有前途吗?那么比较对象当然就是在整个IT行业做对比。因此我们可以从职业前景、钱景、这几方面综合考量。 学单片机有前途吗?我觉得重要的一点就是是否适合职业生涯发展&#xff0c;总说程序…

一文讲解Linux内核内存管理架构

内存管理子系统可能是linux内核中最为复杂的一个子系统&#xff0c;其支持的功能需求众多&#xff0c;如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等&#xff0c;而且对性能也有很高的要求。本文从内存管理硬件架构、地址…

【API 管理】什么是 API 管理,为什么它很重要?

当今复杂的数字生态系统由许多相互关联的部分组成。API 作为看门人和连接器在其中发挥着关键作用——提供了许多最终用户甚至没有注意到的自动化机会和效率。 企业密切关注 API。它们对于应用程序、数据和各种客户交互的功能至关重要。 这使得 API 管理成为几乎每个部门的组织…

Fiddler安装与使用教程(2) —— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

idea 打 jar 包以及运行使用

1. 在 idea 右侧点击 maven 2. 点击Lifecycle——》clean 运行 3. 点击 Lifecycle——》compile 4. 点击 Lifecycle——》package 5. 打成的 jar 包可以在 target中找到 6. jar 包的名字和版本可以在 pom.xml文件中设置 7. 注意事项&#xff1a;打 jar 包的时候 test 里的 tes…

数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

目录 创建学生表聚合查询聚合函数直接查询设置别名查询设置条件查询 常用的聚合函数 分组查询单个字段Group by报错分组查询多字段分组查询 多表查询直接查询重命名查询Students表新建一列CourseID 连接&#xff08;JOIN&#xff09;查询INNER JOINRIGHT JOIN, LEFT JOINFULL J…

《C++ Primer》第2章 变量(一)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 2.1 基本内置类型&#xff08;P30&#xff09; C 定义的基本类型包括算术类型&#xff08;arithmetic type&#xff09;和空类型&#xff08;void&#xff09;&#xff0c;其中算术类型包括字符、整型、布尔…

使用 BERT 进行文本分类 (03/3)

一、说明 在使用BERT&#xff08;2&#xff09;进行文本分类时&#xff0c;我们讨论了什么是PyTorch以及如何预处理我们的数据&#xff0c;以便可以使用BERT模型对其进行分析。在这篇文章中&#xff0c;我将向您展示如何训练分类器并对其进行评估。 二、准备数据的又一个步骤 …

ChatGPT Prompting开发实战(三)

一、关于chaining prompts与CoT的比较 前面谈到的CoT的推理过程&#xff0c;可以比作是一次性就烹调好一顿大餐&#xff0c;那么接下来要说的“chaining prompts”&#xff0c;其背后的理念是分多次来完成这样一项复杂任务&#xff0c;每次只完成其中一步或者一个子任务。核心…