gpt4 book ai didi

python - 匀称的线串 .length 单位

转载 作者:行者123 更新时间:2023-12-04 04:09:44 28 4
gpt4 key购买 nike

我试图在 Shapely 中找到线串的长度(以米为单位),但似乎无法达到预期的结果。几乎可以肯定我在坐标系方面犯了一些错误,但我无法弄清楚。

这是单行的一些简化代码:

from shapely.geometry import LineString
line = LineString([(12875996.563923, -3940011.116702), (12872802.929335, -3937989.118438)])
line.crs = 'EPSG:3857'
line.length

输出为 3779.92m。然而,根据我的测量,它应该是~3159m。

这是基于检查以下站点的点(两个环形交叉路口的中心)的位置,然后在 Google 地球中测量它们之间的位置。

第 1 点:
http://epsg.io/map#srs=3857&x=12875996.563923&y=-3940011.116702&z=14&layer=streets
第 2 点:
http://epsg.io/map#srs=3857&x=12872802.929468&y=-3937989.118538&z=17&layer=streets

最佳答案

为了证明这一点,line.length从匀称几何只是一个欧几里得距离,可以这样计算:

import math
x1, y1 = (12875996.563923, -3940011.116702)
x2, y2 = (12872802.929335, -3937989.118438)
math.hypot(x2-x1, y2-y1) # 3779.91783790157
使用 pyproj 获得正确的距离模块,请按照下列步骤操作:
import pyproj  #v2.4.1
x1, y1 = (12875996.563923, -3940011.116702)
x2, y2 = (12872802.929335, -3937989.118438)
lon1, lat1 = pyproj.Proj("epsg:3857")(x1, y1, inverse=True)
lon2, lat2 = pyproj.Proj("epsg:3857")(x2, y2, inverse=True)
_,_,dist_km = pyproj.Geod(ellps='WGS84').inv(lon1, lat1, lon2, lat2)
dist_km # 3157.214113925091

关于python - 匀称的线串 .length 单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61955960/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com