У меня есть координаты широты и долготы. Поскольку мне нужно было их повернуть, я преобразовал координаты широты и долготы WGS84 в расстояния от заданной точки и повернул вокруг этой точки, используя матрицу вращения. Но для построения графика мне теперь нужно преобразовать вновь повернутые значения расстояния (x и y) обратно в координаты широты и долготы WGS84. Но я не могу найти способ сделать это.
Я преобразовал начальные значения широты и долготы в расстояния от выбранной точки следующим образом:
g_mat_x <- cbind(lon, rep(sp_lat,length(lon)))
dist_x <- distGeo(c(sp_lon,sp_lat),g_mat_x)
g_mat_y <- cbind(rep(sp_lon,length(lat)),lat)
dist_y <- distGeo(c(sp_lon,sp_lat),g_mat_y)*(-1)
Где sp_lon
и sp_lat
- координаты произвольно выбранной точки. lon
и lat
- это векторы из измерения с координатами, для которых мне нужны были расстояния.
Это отлично работает, но я не могу понять, как преобразовать расстояния обратно в соответствующие Значения широты и долготы с использованием одной и той же точки (sp_lon
/ sp_lat
).
Существуют ли поблизости функции, способные на это?
Примеры данных:
sp_lon <- 6.5
sp_lat <- 54.1
Данные широты и долготы можно найти здесь:
https://pastebin.com/8ZMGkG2P for lat values
lon <- c(7.03922544225856, 7.03921652830416, 7.03920761347249, 7.03919870033677,
7.03918980775434, 7.039180893677, 7.03917198029713, 7.03916306606371,
7.03915415091448, 7.03914523638381, 7.03913632276797)
https://pastebin.com/bz4zRDb4 for lon values
lat <- c(53.8599307418054, 53.8599299782294, 53.8599292147252, 53.8599284513955,
53.8599276909077, 53.8599269276675, 53.8599261646716, 53.8599254016427,
53.8599246387294, 53.8599238760691, 53.8599231135803)
результаты для расстояний от distGeo:
https://pastebin.com/b1rK2i0H for dist_x
dist_x <- c(35275.2396149456, 35274.6564815661, 35274.0732907975, 35273.4902109736,
35272.9084757064, 35272.3253342833, 35271.7422384877, 35271.1590868543,
35270.5758753102, 35269.9927042311, 35269.4095929985)
dist_x_rot <- c(27157.4079196703, 27156.82265961, 27156.2373461817, 27155.6521449452,
27155.0683243199, 27154.4830661607, 27153.897859114, 27153.3125971812,
27152.7272807104, 27152.1420106127, 27151.556803262)
https://pastebin.com/tL7qhXwk for dist_y
dist_y <- c(-26720.819753436, -26720.9047412656, -26720.9897211144, -26721.0746815378,
-26721.1593256438, -26721.2442761088, -26721.3291993745, -26721.4141263143,
-26721.4990403831, -26721.5839262974, -26721.6687931261)
dist_y_rot <- c(-34940.2337323618, -34940.1648982768, -34940.0960416297, -34940.0271949336,
-34939.9583906952, -34939.8895184371, -34939.8206317157, -34939.7517340913,
-34939.6828085284, -34939.6138662435, -34939.5449210127)
Надеюсь, это нормально. Я бы предпочел дать вам небольшую часть реальных данных вместо того, чтобы создавать данные.
EDIT: Хорошо, я получил его с помощью destPoint и простой тригонометрии, чтобы получить вектор dist и угол.