基于真北旋转 long/lat 坐标
Rotate long/lat coordinates based on True North
我有一个名为 coordinates.txt
的经纬度坐标文件
29.66150677 -98.39336541
29.66150677 -98.39337576
29.66150651 -98.39336541
29.66150328 -98.39337576
29.66150677 -98.39336475
29.66150677 -98.39338611
29.66150393 -98.39338611
29.66150677 -98.39339646
29.66150659 -98.39339646
29.66150677 -98.39339693
29.66151576 -98.39334472
29.66151576 -98.39335506
29.66151511 -98.39334472
29.66151058 -98.39335506
29.66151576 -98.39334322
29.66151576 -98.39336541
29.66151576 -98.39337576
29.66151576 -98.39338611
29.66151576 -98.39339646
29.66151576 -98.39340681
29.66151067 -98.39340681
29.66151576 -98.39341515
29.66152475 -98.39332402
29.66152475 -98.39333437
29.66152443 -98.39332402
29.66151973 -98.39333437
29.66152475 -98.39332332
29.66152475 -98.39334472
29.66152475 -98.39335506
29.66152475 -98.39336541
29.66152475 -98.39337576
29.66152475 -98.39338611
29.66152475 -98.39339646
29.66152475 -98.39340681
29.66152475 -98.39341716
29.66151699 -98.39341716
29.66152475 -98.39342722
29.66153375 -98.39331367
29.66153375 -98.39332402
29.6615302 -98.39331367
29.66153375 -98.3933086
29.66153375 -98.39333437
29.66153375 -98.39334472
29.66153375 -98.39335506
29.66153375 -98.39336541
29.66153375 -98.39337576
29.66153375 -98.39338611
29.66153375 -98.39339646
29.66153375 -98.39340681
29.66153375 -98.39341716
29.66153375 -98.39342751
29.66152507 -98.39342751
29.66153375 -98.39343443
29.66154274 -98.39330332
29.66154274 -98.39331367
29.66153745 -98.39330332
29.66154274 -98.39329625
29.66154274 -98.39332402
29.66154274 -98.39333437
29.66154274 -98.39334472
29.66154274 -98.39335506
29.66154274 -98.39336541
29.66154274 -98.39337576
29.66154274 -98.39338611
29.66154274 -98.39339646
29.66154274 -98.39340681
29.66154274 -98.39341716
29.66154274 -98.39342751
29.66154274 -98.39343786
29.66153992 -98.39343786
29.66154274 -98.3934387
29.66155173 -98.39329297
29.66155173 -98.39330332
29.6615457 -98.39329297
29.66155173 -98.39328644
29.66155173 -98.39331367
29.66155173 -98.39332402
29.66155173 -98.39333437
29.66155173 -98.39334472
29.66155173 -98.39335506
29.66155173 -98.39336541
29.66155173 -98.39337576
29.66155173 -98.39338611
29.66155173 -98.39339646
29.66155173 -98.39340681
29.66155173 -98.39341716
29.66155173 -98.39342751
29.66155173 -98.39343786
29.66155173 -98.39344106
29.66156073 -98.39328262
29.66156073 -98.39329297
29.66155555 -98.39328262
29.66156073 -98.39327744
29.66156073 -98.39330332
29.66156073 -98.39331367
29.66156073 -98.39332402
29.66156073 -98.39333437
29.66156073 -98.39334472
29.66156073 -98.39335506
29.66156073 -98.39336541
29.66156073 -98.39337576
29.66156073 -98.39338611
29.66156073 -98.39339646
29.66156073 -98.39340681
29.66156073 -98.39341716
29.66156073 -98.39342751
29.66156073 -98.39343786
29.66156073 -98.39344196
29.66156972 -98.39327227
29.66156972 -98.39328262
29.66156651 -98.39327227
29.66156972 -98.39326964
29.66156972 -98.39329297
29.66156972 -98.39330332
29.66156972 -98.39331367
29.66156972 -98.39332402
29.66156972 -98.39333437
29.66156972 -98.39334472
29.66156972 -98.39335506
29.66156972 -98.39336541
29.66156972 -98.39337576
29.66156972 -98.39338611
29.66156972 -98.39339646
29.66156972 -98.39340681
29.66156972 -98.39341716
29.66156972 -98.39342751
29.66156972 -98.39343786
29.66156972 -98.393442
29.66157871 -98.39327227
29.66157871 -98.39328262
29.66157871 -98.39326327
29.66157871 -98.39329297
29.66157871 -98.39330332
29.66157871 -98.39331367
29.66157871 -98.39332402
29.66157871 -98.39333437
29.66157871 -98.39334472
29.66157871 -98.39335506
29.66157871 -98.39336541
29.66157871 -98.39337576
29.66157871 -98.39338611
29.66157871 -98.39339646
29.66157871 -98.39340681
29.66157871 -98.39341716
29.66157871 -98.39342751
29.66157871 -98.39343786
29.66157871 -98.39344084
29.66158771 -98.39326192
29.66158771 -98.39327227
29.66158097 -98.39326192
29.66158771 -98.39325788
29.66158771 -98.39328262
29.66158771 -98.39329297
29.66158771 -98.39330332
29.66158771 -98.39331367
29.66158771 -98.39332402
29.66158771 -98.39333437
29.66158771 -98.39334472
29.66158771 -98.39335506
29.66158771 -98.39336541
29.66158771 -98.39337576
29.66158771 -98.39338611
29.66158771 -98.39339646
29.66158771 -98.39340681
29.66158771 -98.39341716
29.66158771 -98.39342751
29.66158771 -98.39343786
29.66158771 -98.39343926
29.66159226 -98.39343786
29.6615967 -98.39326192
29.6615967 -98.39327227
29.6615967 -98.39325426
29.6615967 -98.39328262
29.6615967 -98.39329297
29.6615967 -98.39330332
29.6615967 -98.39331367
29.6615967 -98.39332402
29.6615967 -98.39333437
29.6615967 -98.39334472
29.6615967 -98.39335506
29.6615967 -98.39336541
29.6615967 -98.39337576
29.6615967 -98.39338611
29.6615967 -98.39339646
29.6615967 -98.39340681
29.6615967 -98.39341716
29.6615967 -98.39342751
29.6615967 -98.39343623
29.66160569 -98.39325157
29.66160569 -98.39326192
29.66160564 -98.39325157
29.66160569 -98.39325156
29.66160569 -98.39327227
29.66160569 -98.39328262
29.66160569 -98.39329297
29.66160569 -98.39330332
29.66160569 -98.39331367
29.66160569 -98.39332402
29.66160569 -98.39333437
29.66160569 -98.39334472
29.66160569 -98.39335506
29.66160569 -98.39336541
29.66160569 -98.39337576
29.66160569 -98.39338611
29.66160569 -98.39339646
29.66160569 -98.39340681
29.66160569 -98.39341716
29.66160569 -98.39342751
29.66160569 -98.39343291
29.66161468 -98.39325157
29.66161468 -98.39326192
29.66161468 -98.39324921
29.66161468 -98.39327227
29.66161468 -98.39328262
29.66161468 -98.39329297
29.66161468 -98.39330332
29.66161468 -98.39331367
29.66161468 -98.39332402
29.66161468 -98.39333437
29.66161468 -98.39334472
29.66161468 -98.39335506
29.66161468 -98.39336541
29.66161468 -98.39337576
29.66161468 -98.39338611
29.66161468 -98.39339646
29.66161468 -98.39340681
29.66161468 -98.39341716
29.66161468 -98.39342751
29.66161468 -98.39342823
29.66161592 -98.39342751
29.66162368 -98.39325157
29.66162368 -98.39326192
29.66162368 -98.39324697
29.66162368 -98.39327227
29.66162368 -98.39328262
29.66162368 -98.39329297
29.66162368 -98.39330332
29.66162368 -98.39331367
29.66162368 -98.39332402
29.66162368 -98.39333437
29.66162368 -98.39334472
29.66162368 -98.39335506
29.66162368 -98.39336541
29.66162368 -98.39337576
29.66162368 -98.39338611
29.66162368 -98.39339646
29.66162368 -98.39340681
29.66162368 -98.39341716
29.66162368 -98.39342302
29.66163267 -98.39325157
29.66163267 -98.39326192
29.66163267 -98.39324642
29.66163267 -98.39327227
29.66163267 -98.39328262
29.66163267 -98.39329297
29.66163267 -98.39330332
29.66163267 -98.39331367
29.66163267 -98.39332402
29.66163267 -98.39333437
29.66163267 -98.39334472
29.66163267 -98.39335506
29.66163267 -98.39336541
29.66163267 -98.39337576
29.66163267 -98.39338611
29.66163267 -98.39339646
29.66163267 -98.39340681
29.66163267 -98.39341716
29.66163267 -98.39341722
29.66163275 -98.39341716
29.66164166 -98.39325157
29.66164166 -98.39326192
29.66164166 -98.39324588
29.66164166 -98.39327227
29.66164166 -98.39328262
29.66164166 -98.39329297
29.66164166 -98.39330332
29.66164166 -98.39331367
29.66164166 -98.39332402
29.66164166 -98.39333437
29.66164166 -98.39334472
29.66164166 -98.39335506
29.66164166 -98.39336541
29.66164166 -98.39337576
29.66164166 -98.39338611
29.66164166 -98.39339646
29.66164166 -98.39340681
29.66164166 -98.39341103
29.66164749 -98.39340681
29.66165066 -98.39325157
29.66165066 -98.39326192
29.66165066 -98.39324533
29.66165066 -98.39327227
29.66165066 -98.39328262
29.66165066 -98.39329297
29.66165066 -98.39330332
29.66165066 -98.39331367
29.66165066 -98.39332402
29.66165066 -98.39333437
29.66165066 -98.39334472
29.66165066 -98.39335506
29.66165066 -98.39336541
29.66165066 -98.39337576
29.66165066 -98.39338611
29.66165066 -98.39339646
29.66165066 -98.39340447
29.66165965 -98.39325157
29.66165965 -98.39326192
29.66165965 -98.39324479
29.66165965 -98.39327227
29.66165965 -98.39328262
29.66165965 -98.39329297
29.66165965 -98.39330332
29.66165965 -98.39331367
29.66165965 -98.39332402
29.66165965 -98.39333437
29.66165965 -98.39334472
29.66165965 -98.39335506
29.66165965 -98.39336541
29.66165965 -98.39337576
29.66165965 -98.39338611
29.66165965 -98.39339646
29.66165965 -98.39339783
29.6616615 -98.39339646
29.66166864 -98.39325157
29.66166864 -98.39326192
29.66166864 -98.39324424
29.66166864 -98.39327227
29.66166864 -98.39328262
29.66166864 -98.39329297
29.66166864 -98.39330332
29.66166864 -98.39331367
29.66166864 -98.39332402
29.66166864 -98.39333437
29.66166864 -98.39334472
29.66166864 -98.39335506
29.66166864 -98.39336541
29.66166864 -98.39337576
29.66166864 -98.39338611
29.66166864 -98.39339119
29.66167552 -98.39338611
29.66167764 -98.39325157
29.66167764 -98.39326192
29.66167764 -98.3932437
29.66167764 -98.39327227
29.66167764 -98.39328262
29.66167764 -98.39329297
29.66167764 -98.39330332
29.66167764 -98.39331367
29.66167764 -98.39332402
29.66167764 -98.39333437
29.66167764 -98.39334472
29.66167764 -98.39335506
29.66167764 -98.39336541
29.66167764 -98.39337576
29.66167764 -98.39338455
29.66168663 -98.39325157
29.66168663 -98.39326192
29.66168663 -98.39324315
29.66168663 -98.39327227
29.66168663 -98.39328262
29.66168663 -98.39329297
29.66168663 -98.39330332
29.66168663 -98.39331367
29.66168663 -98.39332402
29.66168663 -98.39333437
29.66168663 -98.39334472
29.66168663 -98.39335506
29.66168663 -98.39336541
29.66168663 -98.39337576
29.66168663 -98.39337791
29.66168954 -98.39337576
29.66169562 -98.39325157
29.66169562 -98.39326192
29.66169562 -98.39324277
29.66169562 -98.39327227
29.66169562 -98.39328262
29.66169562 -98.39329297
29.66169562 -98.39330332
29.66169562 -98.39331367
29.66169562 -98.39332402
29.66169562 -98.39333437
29.66169562 -98.39334472
29.66169562 -98.39335506
29.66169562 -98.39336541
29.66169562 -98.39337127
29.66170356 -98.39336541
29.66170462 -98.39325157
29.66170462 -98.39326192
29.66170462 -98.39324245
29.66170462 -98.39327227
29.66170462 -98.39328262
29.66170462 -98.39329297
29.66170462 -98.39330332
29.66170462 -98.39331367
29.66170462 -98.39332402
29.66170462 -98.39333437
29.66170462 -98.39334472
29.66170462 -98.39335506
29.66170462 -98.39336463
29.66171361 -98.39325157
29.66171361 -98.39326192
29.66171361 -98.39324213
29.66171361 -98.39327227
29.66171361 -98.39328262
29.66171361 -98.39329297
29.66171361 -98.39330332
29.66171361 -98.39331367
29.66171361 -98.39332402
29.66171361 -98.39333437
29.66171361 -98.39334472
29.66171361 -98.39335506
29.66171361 -98.39335799
29.66171758 -98.39335506
29.6617226 -98.39325157
29.6617226 -98.39326192
29.6617226 -98.393242
29.6617226 -98.39327227
29.6617226 -98.39328262
29.6617226 -98.39329297
29.6617226 -98.39330332
29.6617226 -98.39331367
29.6617226 -98.39332402
29.6617226 -98.39333437
29.6617226 -98.39334472
29.6617226 -98.39335135
29.66173159 -98.39334472
29.6617316 -98.39325157
29.6617316 -98.39326192
29.6617316 -98.393242
29.6617316 -98.39327227
29.6617316 -98.39328262
29.6617316 -98.39329297
29.6617316 -98.39330332
29.6617316 -98.39331367
29.6617316 -98.39332402
29.6617316 -98.39333437
29.6617316 -98.39334471
29.66174059 -98.39325157
29.66174059 -98.39326192
29.66174059 -98.393242
29.66174059 -98.39327227
29.66174059 -98.39328262
29.66174059 -98.39329297
29.66174059 -98.39330332
29.66174059 -98.39331367
29.66174059 -98.39332402
29.66174059 -98.39333437
29.66174059 -98.39333807
29.66174561 -98.39333437
29.66174958 -98.39325157
29.66174958 -98.39326192
29.66174958 -98.39324293
29.66174958 -98.39327227
29.66174958 -98.39328262
29.66174958 -98.39329297
29.66174958 -98.39330332
29.66174958 -98.39331367
29.66174958 -98.39332402
29.66174958 -98.39333143
29.66175858 -98.39325157
29.66175858 -98.39326192
29.66176663 -98.39325157
29.66176757 -98.39326192
29.66175858 -98.39324585
29.66175858 -98.39327227
29.66175858 -98.39328262
29.66175858 -98.39329297
29.66175858 -98.39330332
29.66175858 -98.39331367
29.66175858 -98.39332402
29.66175858 -98.39332427
29.6617589 -98.39332402
29.66176757 -98.39327227
29.66177412 -98.39326192
29.66177656 -98.39327227
29.66176757 -98.3932525
29.66176757 -98.39328262
29.66176757 -98.39329297
29.66176757 -98.39330332
29.66176757 -98.39331367
29.66177543 -98.39330332
29.66176974 -98.39331367
29.66176757 -98.3933162
29.66177656 -98.39328262
29.66177775 -98.39327227
29.66177872 -98.39328262
29.66177656 -98.39326599
29.66177656 -98.39329297
29.66177855 -98.39329297
29.66177656 -98.39330028
另外,我有一个参考点,anchor
anchor = [29.66165674, -98.39334562]
我想将纬度和经度坐标重新调整为笛卡尔平面,其中 anchor
是原点 / (0,0)
import numpy as np
import utm
latlongs = np.loadtxt('coordinates.txt')
center = utm.from_latlon(center[0], center[1])
latlongs = utm.from_latlon(latlongs[:, 0], latlongs[:, 1])
center_x, center_y = center[0], center[1]
x, y = latlongs[0], latlongs[1]
x -= center_x
y -= center_y
plt.axis('equal')
plt.scatter(x, y, marker='o', color='black')
plt.show()
输出如下所示:
现在,我想旋转轮廓。我不确定这是怎么做到的。但是我有两个数据源。我知道
trueNorth = 166 # I don't know the definition, only the value
和一个指南针:
如何计算旋转角度或如何更新经纬度坐标?
trueNorth = 166 # I don't know the definition, only the value
从那个和你的罗盘图像判断你需要从正常位置旋转 166 度 counter-clockwise。 Rotation matrix 提供了围绕原点(双零)旋转点 (x,y) 的方法 counter-clockwise 可以从中得出以下观察结果
After rotating counter-clockwise point (x,y) by angle a it becomes
point with cordinates x * cos(a) - y * sin(a), x * sin(a) + y * cos(a)
你应该能够使用 sin
和 cos
函数来实现上面的功能,无论是来自 math
(built-in 模块)还是 numpy
,但是注意不要弄错 x 和 y,特别是如果您使用 numpy
约定 (y,x) 并且提到的函数接受弧度值,而不是度数(请参阅 radians
函数了解可能的转换方式)。
trueNorth
似乎是北方相对于三角方向上升垂线的旋转角度。要应用旋转,您可以使用 Rotation matrix。小心将度数转换为弧度。
这是执行此操作的完整代码:
import matplotlib.pyplot as plt
import numpy as np
import utm
latlongs = np.loadtxt("coordinates.txt")
anchor = [29.66165674, -98.39334562]
center = utm.from_latlon(anchor[0], anchor[1])
latlongs = utm.from_latlon(latlongs[:, 0], latlongs[:, 1])
center_x, center_y = center[0], center[1]
x, y = latlongs[0], latlongs[1]
x -= center_x
y -= center_y
# Rotation
# ========
trueNorth = 166 * np.pi / 180
rot_x = x * np.cos(trueNorth) - y * np.sin(trueNorth)
rot_y = x * np.sin(trueNorth) + y * np.cos(trueNorth)
plt.axis('equal')
plt.scatter(rot_x, rot_y, marker='o', color='black')
plt.show()
输出如下所示:
我有一个名为 coordinates.txt
29.66150677 -98.39336541
29.66150677 -98.39337576
29.66150651 -98.39336541
29.66150328 -98.39337576
29.66150677 -98.39336475
29.66150677 -98.39338611
29.66150393 -98.39338611
29.66150677 -98.39339646
29.66150659 -98.39339646
29.66150677 -98.39339693
29.66151576 -98.39334472
29.66151576 -98.39335506
29.66151511 -98.39334472
29.66151058 -98.39335506
29.66151576 -98.39334322
29.66151576 -98.39336541
29.66151576 -98.39337576
29.66151576 -98.39338611
29.66151576 -98.39339646
29.66151576 -98.39340681
29.66151067 -98.39340681
29.66151576 -98.39341515
29.66152475 -98.39332402
29.66152475 -98.39333437
29.66152443 -98.39332402
29.66151973 -98.39333437
29.66152475 -98.39332332
29.66152475 -98.39334472
29.66152475 -98.39335506
29.66152475 -98.39336541
29.66152475 -98.39337576
29.66152475 -98.39338611
29.66152475 -98.39339646
29.66152475 -98.39340681
29.66152475 -98.39341716
29.66151699 -98.39341716
29.66152475 -98.39342722
29.66153375 -98.39331367
29.66153375 -98.39332402
29.6615302 -98.39331367
29.66153375 -98.3933086
29.66153375 -98.39333437
29.66153375 -98.39334472
29.66153375 -98.39335506
29.66153375 -98.39336541
29.66153375 -98.39337576
29.66153375 -98.39338611
29.66153375 -98.39339646
29.66153375 -98.39340681
29.66153375 -98.39341716
29.66153375 -98.39342751
29.66152507 -98.39342751
29.66153375 -98.39343443
29.66154274 -98.39330332
29.66154274 -98.39331367
29.66153745 -98.39330332
29.66154274 -98.39329625
29.66154274 -98.39332402
29.66154274 -98.39333437
29.66154274 -98.39334472
29.66154274 -98.39335506
29.66154274 -98.39336541
29.66154274 -98.39337576
29.66154274 -98.39338611
29.66154274 -98.39339646
29.66154274 -98.39340681
29.66154274 -98.39341716
29.66154274 -98.39342751
29.66154274 -98.39343786
29.66153992 -98.39343786
29.66154274 -98.3934387
29.66155173 -98.39329297
29.66155173 -98.39330332
29.6615457 -98.39329297
29.66155173 -98.39328644
29.66155173 -98.39331367
29.66155173 -98.39332402
29.66155173 -98.39333437
29.66155173 -98.39334472
29.66155173 -98.39335506
29.66155173 -98.39336541
29.66155173 -98.39337576
29.66155173 -98.39338611
29.66155173 -98.39339646
29.66155173 -98.39340681
29.66155173 -98.39341716
29.66155173 -98.39342751
29.66155173 -98.39343786
29.66155173 -98.39344106
29.66156073 -98.39328262
29.66156073 -98.39329297
29.66155555 -98.39328262
29.66156073 -98.39327744
29.66156073 -98.39330332
29.66156073 -98.39331367
29.66156073 -98.39332402
29.66156073 -98.39333437
29.66156073 -98.39334472
29.66156073 -98.39335506
29.66156073 -98.39336541
29.66156073 -98.39337576
29.66156073 -98.39338611
29.66156073 -98.39339646
29.66156073 -98.39340681
29.66156073 -98.39341716
29.66156073 -98.39342751
29.66156073 -98.39343786
29.66156073 -98.39344196
29.66156972 -98.39327227
29.66156972 -98.39328262
29.66156651 -98.39327227
29.66156972 -98.39326964
29.66156972 -98.39329297
29.66156972 -98.39330332
29.66156972 -98.39331367
29.66156972 -98.39332402
29.66156972 -98.39333437
29.66156972 -98.39334472
29.66156972 -98.39335506
29.66156972 -98.39336541
29.66156972 -98.39337576
29.66156972 -98.39338611
29.66156972 -98.39339646
29.66156972 -98.39340681
29.66156972 -98.39341716
29.66156972 -98.39342751
29.66156972 -98.39343786
29.66156972 -98.393442
29.66157871 -98.39327227
29.66157871 -98.39328262
29.66157871 -98.39326327
29.66157871 -98.39329297
29.66157871 -98.39330332
29.66157871 -98.39331367
29.66157871 -98.39332402
29.66157871 -98.39333437
29.66157871 -98.39334472
29.66157871 -98.39335506
29.66157871 -98.39336541
29.66157871 -98.39337576
29.66157871 -98.39338611
29.66157871 -98.39339646
29.66157871 -98.39340681
29.66157871 -98.39341716
29.66157871 -98.39342751
29.66157871 -98.39343786
29.66157871 -98.39344084
29.66158771 -98.39326192
29.66158771 -98.39327227
29.66158097 -98.39326192
29.66158771 -98.39325788
29.66158771 -98.39328262
29.66158771 -98.39329297
29.66158771 -98.39330332
29.66158771 -98.39331367
29.66158771 -98.39332402
29.66158771 -98.39333437
29.66158771 -98.39334472
29.66158771 -98.39335506
29.66158771 -98.39336541
29.66158771 -98.39337576
29.66158771 -98.39338611
29.66158771 -98.39339646
29.66158771 -98.39340681
29.66158771 -98.39341716
29.66158771 -98.39342751
29.66158771 -98.39343786
29.66158771 -98.39343926
29.66159226 -98.39343786
29.6615967 -98.39326192
29.6615967 -98.39327227
29.6615967 -98.39325426
29.6615967 -98.39328262
29.6615967 -98.39329297
29.6615967 -98.39330332
29.6615967 -98.39331367
29.6615967 -98.39332402
29.6615967 -98.39333437
29.6615967 -98.39334472
29.6615967 -98.39335506
29.6615967 -98.39336541
29.6615967 -98.39337576
29.6615967 -98.39338611
29.6615967 -98.39339646
29.6615967 -98.39340681
29.6615967 -98.39341716
29.6615967 -98.39342751
29.6615967 -98.39343623
29.66160569 -98.39325157
29.66160569 -98.39326192
29.66160564 -98.39325157
29.66160569 -98.39325156
29.66160569 -98.39327227
29.66160569 -98.39328262
29.66160569 -98.39329297
29.66160569 -98.39330332
29.66160569 -98.39331367
29.66160569 -98.39332402
29.66160569 -98.39333437
29.66160569 -98.39334472
29.66160569 -98.39335506
29.66160569 -98.39336541
29.66160569 -98.39337576
29.66160569 -98.39338611
29.66160569 -98.39339646
29.66160569 -98.39340681
29.66160569 -98.39341716
29.66160569 -98.39342751
29.66160569 -98.39343291
29.66161468 -98.39325157
29.66161468 -98.39326192
29.66161468 -98.39324921
29.66161468 -98.39327227
29.66161468 -98.39328262
29.66161468 -98.39329297
29.66161468 -98.39330332
29.66161468 -98.39331367
29.66161468 -98.39332402
29.66161468 -98.39333437
29.66161468 -98.39334472
29.66161468 -98.39335506
29.66161468 -98.39336541
29.66161468 -98.39337576
29.66161468 -98.39338611
29.66161468 -98.39339646
29.66161468 -98.39340681
29.66161468 -98.39341716
29.66161468 -98.39342751
29.66161468 -98.39342823
29.66161592 -98.39342751
29.66162368 -98.39325157
29.66162368 -98.39326192
29.66162368 -98.39324697
29.66162368 -98.39327227
29.66162368 -98.39328262
29.66162368 -98.39329297
29.66162368 -98.39330332
29.66162368 -98.39331367
29.66162368 -98.39332402
29.66162368 -98.39333437
29.66162368 -98.39334472
29.66162368 -98.39335506
29.66162368 -98.39336541
29.66162368 -98.39337576
29.66162368 -98.39338611
29.66162368 -98.39339646
29.66162368 -98.39340681
29.66162368 -98.39341716
29.66162368 -98.39342302
29.66163267 -98.39325157
29.66163267 -98.39326192
29.66163267 -98.39324642
29.66163267 -98.39327227
29.66163267 -98.39328262
29.66163267 -98.39329297
29.66163267 -98.39330332
29.66163267 -98.39331367
29.66163267 -98.39332402
29.66163267 -98.39333437
29.66163267 -98.39334472
29.66163267 -98.39335506
29.66163267 -98.39336541
29.66163267 -98.39337576
29.66163267 -98.39338611
29.66163267 -98.39339646
29.66163267 -98.39340681
29.66163267 -98.39341716
29.66163267 -98.39341722
29.66163275 -98.39341716
29.66164166 -98.39325157
29.66164166 -98.39326192
29.66164166 -98.39324588
29.66164166 -98.39327227
29.66164166 -98.39328262
29.66164166 -98.39329297
29.66164166 -98.39330332
29.66164166 -98.39331367
29.66164166 -98.39332402
29.66164166 -98.39333437
29.66164166 -98.39334472
29.66164166 -98.39335506
29.66164166 -98.39336541
29.66164166 -98.39337576
29.66164166 -98.39338611
29.66164166 -98.39339646
29.66164166 -98.39340681
29.66164166 -98.39341103
29.66164749 -98.39340681
29.66165066 -98.39325157
29.66165066 -98.39326192
29.66165066 -98.39324533
29.66165066 -98.39327227
29.66165066 -98.39328262
29.66165066 -98.39329297
29.66165066 -98.39330332
29.66165066 -98.39331367
29.66165066 -98.39332402
29.66165066 -98.39333437
29.66165066 -98.39334472
29.66165066 -98.39335506
29.66165066 -98.39336541
29.66165066 -98.39337576
29.66165066 -98.39338611
29.66165066 -98.39339646
29.66165066 -98.39340447
29.66165965 -98.39325157
29.66165965 -98.39326192
29.66165965 -98.39324479
29.66165965 -98.39327227
29.66165965 -98.39328262
29.66165965 -98.39329297
29.66165965 -98.39330332
29.66165965 -98.39331367
29.66165965 -98.39332402
29.66165965 -98.39333437
29.66165965 -98.39334472
29.66165965 -98.39335506
29.66165965 -98.39336541
29.66165965 -98.39337576
29.66165965 -98.39338611
29.66165965 -98.39339646
29.66165965 -98.39339783
29.6616615 -98.39339646
29.66166864 -98.39325157
29.66166864 -98.39326192
29.66166864 -98.39324424
29.66166864 -98.39327227
29.66166864 -98.39328262
29.66166864 -98.39329297
29.66166864 -98.39330332
29.66166864 -98.39331367
29.66166864 -98.39332402
29.66166864 -98.39333437
29.66166864 -98.39334472
29.66166864 -98.39335506
29.66166864 -98.39336541
29.66166864 -98.39337576
29.66166864 -98.39338611
29.66166864 -98.39339119
29.66167552 -98.39338611
29.66167764 -98.39325157
29.66167764 -98.39326192
29.66167764 -98.3932437
29.66167764 -98.39327227
29.66167764 -98.39328262
29.66167764 -98.39329297
29.66167764 -98.39330332
29.66167764 -98.39331367
29.66167764 -98.39332402
29.66167764 -98.39333437
29.66167764 -98.39334472
29.66167764 -98.39335506
29.66167764 -98.39336541
29.66167764 -98.39337576
29.66167764 -98.39338455
29.66168663 -98.39325157
29.66168663 -98.39326192
29.66168663 -98.39324315
29.66168663 -98.39327227
29.66168663 -98.39328262
29.66168663 -98.39329297
29.66168663 -98.39330332
29.66168663 -98.39331367
29.66168663 -98.39332402
29.66168663 -98.39333437
29.66168663 -98.39334472
29.66168663 -98.39335506
29.66168663 -98.39336541
29.66168663 -98.39337576
29.66168663 -98.39337791
29.66168954 -98.39337576
29.66169562 -98.39325157
29.66169562 -98.39326192
29.66169562 -98.39324277
29.66169562 -98.39327227
29.66169562 -98.39328262
29.66169562 -98.39329297
29.66169562 -98.39330332
29.66169562 -98.39331367
29.66169562 -98.39332402
29.66169562 -98.39333437
29.66169562 -98.39334472
29.66169562 -98.39335506
29.66169562 -98.39336541
29.66169562 -98.39337127
29.66170356 -98.39336541
29.66170462 -98.39325157
29.66170462 -98.39326192
29.66170462 -98.39324245
29.66170462 -98.39327227
29.66170462 -98.39328262
29.66170462 -98.39329297
29.66170462 -98.39330332
29.66170462 -98.39331367
29.66170462 -98.39332402
29.66170462 -98.39333437
29.66170462 -98.39334472
29.66170462 -98.39335506
29.66170462 -98.39336463
29.66171361 -98.39325157
29.66171361 -98.39326192
29.66171361 -98.39324213
29.66171361 -98.39327227
29.66171361 -98.39328262
29.66171361 -98.39329297
29.66171361 -98.39330332
29.66171361 -98.39331367
29.66171361 -98.39332402
29.66171361 -98.39333437
29.66171361 -98.39334472
29.66171361 -98.39335506
29.66171361 -98.39335799
29.66171758 -98.39335506
29.6617226 -98.39325157
29.6617226 -98.39326192
29.6617226 -98.393242
29.6617226 -98.39327227
29.6617226 -98.39328262
29.6617226 -98.39329297
29.6617226 -98.39330332
29.6617226 -98.39331367
29.6617226 -98.39332402
29.6617226 -98.39333437
29.6617226 -98.39334472
29.6617226 -98.39335135
29.66173159 -98.39334472
29.6617316 -98.39325157
29.6617316 -98.39326192
29.6617316 -98.393242
29.6617316 -98.39327227
29.6617316 -98.39328262
29.6617316 -98.39329297
29.6617316 -98.39330332
29.6617316 -98.39331367
29.6617316 -98.39332402
29.6617316 -98.39333437
29.6617316 -98.39334471
29.66174059 -98.39325157
29.66174059 -98.39326192
29.66174059 -98.393242
29.66174059 -98.39327227
29.66174059 -98.39328262
29.66174059 -98.39329297
29.66174059 -98.39330332
29.66174059 -98.39331367
29.66174059 -98.39332402
29.66174059 -98.39333437
29.66174059 -98.39333807
29.66174561 -98.39333437
29.66174958 -98.39325157
29.66174958 -98.39326192
29.66174958 -98.39324293
29.66174958 -98.39327227
29.66174958 -98.39328262
29.66174958 -98.39329297
29.66174958 -98.39330332
29.66174958 -98.39331367
29.66174958 -98.39332402
29.66174958 -98.39333143
29.66175858 -98.39325157
29.66175858 -98.39326192
29.66176663 -98.39325157
29.66176757 -98.39326192
29.66175858 -98.39324585
29.66175858 -98.39327227
29.66175858 -98.39328262
29.66175858 -98.39329297
29.66175858 -98.39330332
29.66175858 -98.39331367
29.66175858 -98.39332402
29.66175858 -98.39332427
29.6617589 -98.39332402
29.66176757 -98.39327227
29.66177412 -98.39326192
29.66177656 -98.39327227
29.66176757 -98.3932525
29.66176757 -98.39328262
29.66176757 -98.39329297
29.66176757 -98.39330332
29.66176757 -98.39331367
29.66177543 -98.39330332
29.66176974 -98.39331367
29.66176757 -98.3933162
29.66177656 -98.39328262
29.66177775 -98.39327227
29.66177872 -98.39328262
29.66177656 -98.39326599
29.66177656 -98.39329297
29.66177855 -98.39329297
29.66177656 -98.39330028
另外,我有一个参考点,anchor
anchor = [29.66165674, -98.39334562]
我想将纬度和经度坐标重新调整为笛卡尔平面,其中 anchor
是原点 / (0,0)
import numpy as np
import utm
latlongs = np.loadtxt('coordinates.txt')
center = utm.from_latlon(center[0], center[1])
latlongs = utm.from_latlon(latlongs[:, 0], latlongs[:, 1])
center_x, center_y = center[0], center[1]
x, y = latlongs[0], latlongs[1]
x -= center_x
y -= center_y
plt.axis('equal')
plt.scatter(x, y, marker='o', color='black')
plt.show()
输出如下所示:
现在,我想旋转轮廓。我不确定这是怎么做到的。但是我有两个数据源。我知道
trueNorth = 166 # I don't know the definition, only the value
和一个指南针:
如何计算旋转角度或如何更新经纬度坐标?
trueNorth = 166 # I don't know the definition, only the value
从那个和你的罗盘图像判断你需要从正常位置旋转 166 度 counter-clockwise。 Rotation matrix 提供了围绕原点(双零)旋转点 (x,y) 的方法 counter-clockwise 可以从中得出以下观察结果
After rotating counter-clockwise point (x,y) by angle a it becomes point with cordinates x * cos(a) - y * sin(a), x * sin(a) + y * cos(a)
你应该能够使用 sin
和 cos
函数来实现上面的功能,无论是来自 math
(built-in 模块)还是 numpy
,但是注意不要弄错 x 和 y,特别是如果您使用 numpy
约定 (y,x) 并且提到的函数接受弧度值,而不是度数(请参阅 radians
函数了解可能的转换方式)。
trueNorth
似乎是北方相对于三角方向上升垂线的旋转角度。要应用旋转,您可以使用 Rotation matrix。小心将度数转换为弧度。
这是执行此操作的完整代码:
import matplotlib.pyplot as plt
import numpy as np
import utm
latlongs = np.loadtxt("coordinates.txt")
anchor = [29.66165674, -98.39334562]
center = utm.from_latlon(anchor[0], anchor[1])
latlongs = utm.from_latlon(latlongs[:, 0], latlongs[:, 1])
center_x, center_y = center[0], center[1]
x, y = latlongs[0], latlongs[1]
x -= center_x
y -= center_y
# Rotation
# ========
trueNorth = 166 * np.pi / 180
rot_x = x * np.cos(trueNorth) - y * np.sin(trueNorth)
rot_y = x * np.sin(trueNorth) + y * np.cos(trueNorth)
plt.axis('equal')
plt.scatter(rot_x, rot_y, marker='o', color='black')
plt.show()
输出如下所示: