线串长度(以英里为单位)

2024-02-04

我将运行数据表示为 Shapely LineStrings,其中 LineString 中的每个点都是一个坐标。我试图计算出以英里为单位的 LineString 长度。我知道 LineString 有一个length方法,但我不知道结果是什么单位。

例如,我知道跑步的距离是 0.13 英里,但是当我打印出来时runs[0].length我得到 0.00198245721108。我认为这是因为 LineString 位于笛卡尔坐标系中,但我不完全确定。


身材匀称的LineString类提供了一个coords方法返回构成的所有坐标LineString。例如:

from shapely.geometry import LineString

# Create a LineString to mess around with
coordinates = [(0, 0), (1, 0)]
line1 = LineString(coordinates)

# Grab the second coordinate along with its x and y values using standard array indexing
secondCoord = line1.coords[1]
x2 = secondCoord[0]
y2 = secondCoord[1]

# Print values to console to verify code worked
print "Second Coordinate: " + str(secondCord)
print "Second x Value: " + str(x2)
print "Second y Value: " + str(y2)

将打印

第二个坐标:(1.0, 0.0)
第二个 x 值:1.0
第二个 y 值:0.0

您可以使用它来获取lat and lon您的每个 GPS 坐标的值LineString where x代表lat and y代表lon。然后使用半正矢公式可以计算地理距离。经过快速搜索后我发现这个答案 https://stackoverflow.com/questions/4913349/haversine-formula-in-python-bearing-and-distance-between-two-gps-points它提供了半正弦公式函数的Python代码,我已经验证了它的工作原理。然而,这只是给你两个点之间的距离,所以如果你的 GPS 数据中有转弯,你将必须计算每个单独点之间的距离,而不是起点和终点的距离。这是我使用的代码:

from shapely.geometry import LineString
from math import radians, cos, sin, asin, sqrt

# Calculates distance between 2 GPS coordinates
def haversine(lat1, lon1, lat2, lon2):
    """
    Calculate the great circle distance between two points 
    on the earth (specified in decimal degrees)
    """
    # convert decimal degrees to radians 
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    # haversine formula 
    dlon = lon2 - lon1 
    dlat = lat2 - lat1 
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a)) 
    r = 3956 # Radius of earth in kilometers. Use 3956 for miles
    return c * r

for line in listOfLines:
    numCoords = len(line.coords) - 1
    distance = 0
    for i in range(0, numCoords):
        point1 = line.coords[i]
        point2 = line.coords[i + 1]
        distance += haversine(point1[0], point1[1], point2[0], point2[1])

    print distance

如果您只是为了一个人这样做LineString你可以摆脱外在的for循环,但我需要计算几次运行的距离。另请注意,如果您从链接中的答案中获取代码,我已经切换了函数参数,因为提供的答案有lon第一个有效,但必须打字很烦人haversine(point1[1], point1[0]...)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线串长度(以英里为单位) 的相关文章

随机推荐

  • CGAffineTransform重置

    3我有一个可以通过触摸操作的图像 假设它是一个向上的箭头图像 旋转 180 度后 箭头现在指向下方 我想重置 CGAffineTransform 属性所以它认为现在又回到了 0 度 我想要这个是因为无论图像的角度是 0 还是 180 我都必
  • 应用程序更新后 CoreData 崩溃

    我有一个非常烦人的问题 我有一个 CoreData 应用程序 目前正在生产中 一切正常 我有该应用程序的更新 但是每当在原始应用程序上安装更新时 该应用程序就会在下面的代码行处崩溃 persistentStoreCoordinator ad
  • `go modvendor` 命令的目的是什么?

    The 文档 https golang org ref mod go mod vendor says go modvendor命令在目录中构造一个名为vendor的目录 主模块的根目录 包含所有包的副本 支持主模块中包的构建和测试所需的 仅
  • Hadoop 文件分割:CompositeInputFormat:内连接

    我正在使用 CompositeInputFormat 为 hadoop 作业提供输入 生成的分割数是作为 CompositeInputFormat 用于连接 输入的文件总数 该作业完全忽略块大小和最大拆分大小 同时从 CompositeIn
  • Android:检查服务是否正在运行。绑定服务

    检查 Android 服务是否正在运行的最佳方法是什么 我知道ActivityManagerAPI 但对于与我类似的场景 似乎不建议使用API source http www mail archive com android develop
  • 使用 SpringBootRequestHandler 访问函数内部的 AWS Lambda 上下文?

    我需要访问我的 lambda 函数的 AWS Lambda 上下文 我在用SpringBootRequestHandler接收请求 应该调用实现 Function 接口的类 下面是这两个类的代码示例 public class A exten
  • Typescript 在 Pick 实现中进行了扩展

    这是 Typescript 的基本实现Pick实用程序类型来自本教程 https learntypescript dev 09 l3 condition utility types type ObjectWithKeys
  • Angular 2 / 4 / 5 - 提前编译如何

    我正在尝试按照本指南引导我的 Angular 2 RC5 应用程序https angular io docs ts latest guide ngmodule html https angular io docs ts latest gui
  • JSF 中的 class 和 styleClass 属性有什么区别?

    我发现 在 JSF 中 大多数标准组件都映射到 HTML 标签 例如
  • 拆分数据库是合法的安全措施吗?

    当我公司以前的开发人员必须存储敏感的用户数据 例如医疗记录 时 他们做了以下操作 我怀疑它的优点 有些数据被认为是 不敏感 用户登录 个人资料信息 和 敏感 用户医疗记录 共有三个数据库 中的不敏感数据A 医疗记录在B 以及之间的映射A a
  • 使用 Web 服务将报价导入 vtiger crm

    我需要将报价导入到vtiger 我发现可以使用 vtiger Web 服务 API 来完成 我找到了参考手册 https wiki vtiger com archives index php vtiger510 Webservice ref
  • 在 shell 脚本中转义单引号

    我需要转义变量中的单引号 ssh command file hostname server setup date Y m d tar gz cd var tar zcvf file ini wc l xargs printf Num fil
  • 如何在不重新启动 MySQL 的情况下刷新 Performance_schema 统计信息?

    我知道性能模式中的统计数据在 MySQL 重新启动后不会持续存在 我想在不重新启动 MySQL 的情况下刷新所有统计信息 有什么办法可以做到吗 Thanks 截断每个单独的表更容易的是调用以下过程 CALL sys ps truncate
  • 如何编写可读的 JavaScript

    在 JavaScript 中 代码格式化的标准规则似乎并没有解决这个问题 你最终还是会陷入混乱 到处都是 我不相信我什至不知道正确缩进声明为其他函数的参数的匿名函数的既定规则 简而言之 我在阅读自己的 JavaScript 时遇到了困难 而
  • 如何在 Oracle 包中执行私有过程?

    这是我第一次尝试创建一个包 所以我一定错过了一些非常明显的东西 我在谷歌上搜索过的东西似乎都不认为值得一提 显然 如果包体中有未包含在规范部分中的过程 那么这些过程就是私有的 我遇到的问题是我似乎不知道如何参考那些私人包裹一旦我做好了 而且
  • 实体包装器 - 自定义

    我想找到一种解决方法来完成一个简单的解决方案 以便通过 EF 自动执行某些操作 我需要的是在保存和检索过程中接管以修改查询结果 但此类将能够使其适用于任何类型的实体 示例 我有一个 MyTestDb 因此 在我的 C 项目中 我创建了一个新
  • 无法更改 Android 中的导航抽屉图标颜色

    好吧 我知道这是一个微不足道的问题 但由于某种原因它对我不起作用 我已经做了很多其他答案中建议的事情 但都是徒劳的 我的可绘制文件夹有白色图标 我什至尝试从 styles xml 更改它 但这也不起作用 我正在我的棒棒糖设备上测试它 任何帮
  • 使用 `` 或 `@import` 包含 CSS - 哪个更好?

    我有一个网站 并且有多个用于打印 电视 屏幕 手持设备等的 css 样式表 我想知道这些方法中哪一种更好用 性能 可用 性等 or
  • 正则表达式问题组名称重新定义?

    所以我有这个正则表达式 s P
  • 线串长度(以英里为单位)

    我将运行数据表示为 Shapely LineStrings 其中 LineString 中的每个点都是一个坐标 我试图计算出以英里为单位的 LineString 长度 我知道 LineString 有一个length方法 但我不知道结果是什