将GPS纬度和经度跟踪数据转换为足球场上的位置x和位置y?

西亚兰·谢兰(Ciaran Sheelan)

我目前有一个数据帧,其中包含播放器名称,时间,纬度,经度和速度(以m / s为单位)。我想绘制一个球员的热图,但是我的问题是将纬度和经度转换为足球场图像上的位置x和位置y。

目前可以像下面的图像1那样绘制纬度和经度路径,但是值不是在平坦的足球场上,而是在与图像2类似的方向上

在此处输入图片说明

在此处输入图片说明

理想情况下,我想将lat和lon值转换为足球场上的位置x和位置y,并输出类似于以下内容的图。

在此处输入图片说明

我到目前为止所做的尝试如下,我从Google地图中获取了最大和最小(纬度和经度)值,以获取左上,左下,右上和右下的音高。计算出节距长度和节距宽度,然后使用以下公式将两个新列添加到df中。但这并不能解决我的问题,我非常感谢您的任何想法。

#pitch dimensions taken from google
top_left_lat <- 51.662233
top_left_lon <- -0.273183
top_right_lat <- 51.662518
top_right_lon <- -0.272164
bottom_left_lat <- 51.661337
bottom_left_lon <- -0.272539
bottom_right_lat <- 51.661630
bottom_right_lon <- -0.271528

#calculate pitch length
pitch_length <- acos(cos(deg2rad(90 - top_left_lat)) * cos(deg2rad(90 - bottom_left_lat))
                      + sin(deg2rad(90 - top_left_lat)) * sin(deg2rad(90 - bottom_left_lat))
                      * cos(deg2rad(top_left_lon - bottom_left_lon))) * 6371

pitch_length

#calculate pitch width
pitch_width <- acos(cos(deg2rad(90 - top_left_lat)) * cos(deg2rad(90 - top_right_lat))
                     + sin(deg2rad(90 - top_left_lat)) * sin(deg2rad(90 - top_right_lat))
                     * cos(deg2rad(top_left_lon - top_right_lon))) * 6371

pitch_width


#convert lat lon to pos x and y on a pitch
a <- mutate(a, posX = (pitch_width/360)*(180 + a$Lon))
a <- mutate(a, posY = (pitch_length/180)*(90 - a$Lat))  
克里斯

不是最好的解决方案,但是我能够在进行以下必要的转换sf

首先,我获取您的俯仰坐标并将其转换为平面坐标(27700),并随机抽取一个样本来表示您的gps数据:

library(dplyr)
library(sf)
pts <- data.frame(lat = c(top_left_lat,bottom_left_lat, bottom_right_lat, top_right_lat),
           lng = c(top_left_lon,bottom_left_lon, bottom_right_lon, top_right_lon )) %>%
  st_as_sf(coords = c('lng', 'lat'), crs = 4326) %>%
  st_transform(27700)

poly <- pts %>%
  st_union() %>%
  st_convex_hull() 

centroid <- st_centroid(poly)

set.seed(2020)
path <- st_sample(poly, 20) %>%
  st_union() %>%
  st_cast("LINESTRING")


st_transform(poly, 4326) %>% 
  ggplot() +
  geom_sf(fill = NA, col = "black") +
  geom_sf(data = st_transform(path,4326), col = 'red')

初始情节

然后计算俯仰角,然后将数据旋转该角度(rotsf 小插图中找到函数):

# get angle of pitch
se <- st_coordinates(pts[1,])
ne <- st_coordinates(pts[2,])
dy <- ne[2] - se[2]
dx <- ne[1] - se[1]

angle = atan(dy/dx) 

# rotate 
rot <- function(a) matrix(c(cos(a), sin(a), -sin(a), cos(a)), 2, 2) 

poly2 <- (poly - centroid) * rot(angle) + centroid
path2 <- (path -  centroid) * rot(angle)+ centroid

最后转换为在(0,0)处左下角:

# translate to 0,0
xmin <- st_bbox(poly2)[1]
ymin <- st_bbox(poly2)[2]

pitch <- poly2 - c(xmin, ymin)
positions <- path2 - c(xmin, ymin)

## fetch the x,y coordinates:
position_xy <- positions %>%
  st_coordinates() %>%
  as.data.frame()

pitch_xy <- pitch %>%
  st_cast("LINESTRING") %>%
  st_coordinates %>%
  as.data.frame

position_xy %>%
  ggplot() +
  geom_path(aes(x = X, y= Y), col= 'red') +
  geom_path(data = pitch_xy ,aes(x = X, y = Y)) 

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将足球场上的位置转换为矩形上的坐标?

来自分类Dev

将GPS数据转换为纬度和经度C#

来自分类Dev

在边界框内将纬度/经度转换为X,Y位置

来自分类Dev

将 X 和 Y 转换为纬度和经度

来自分类Dev

将X,Y像素转换为经度和纬度

来自分类Dev

使用ruby将exif gps数据数组格式转换为经度和纬度浮点数

来自分类Dev

将图像转换为二进制不会显示足球场的白线

来自分类Dev

如何将向量(X,Y)位置转换为纬度/经度坐标?Java脚本

来自分类Dev

我如何知道iBeacons的纬度(X)和经度(Y)位置

来自分类Dev

将地理位置纬度和经度转换为自定义图像上的像素坐标

来自分类Dev

将物理地址转换为地理位置纬度和经度

来自分类Dev

使用python将经度和纬度转换为x和y网格系统

来自分类Dev

以正确的方式将经度和纬度坐标转换为地图像素(X和Y)

来自分类Dev

将经度和纬度转换为Alber投影上的图像X,Y像素坐标

来自分类Dev

将String转换为经度和纬度

来自分类Dev

将经度和纬度转换为度

来自分类Dev

将String转换为经度和纬度

来自分类Dev

无法获取GPS当前位置的纬度和经度Android

来自分类Dev

靠近纬度和经度的位置

来自分类Dev

如何将经度和纬度转换为GPS Exif字节数组

来自分类Dev

从GPS数据计算距离[经度和纬度]

来自分类Dev

将经度和纬度转换为ECEF坐标系

来自分类Dev

将MapKit纬度和经度转换为DMS格式

来自分类Dev

c#:将地址转换为经度和纬度

来自分类Dev

Java地理编码-将经度和纬度转换为地址

来自分类Dev

将getLastLocation()结果转换为单独的纬度和经度

来自分类Dev

将纬度和经度转换为图像上的坐标

来自分类Dev

如果我知道GPS的中心和左上角的位置,如何获得矩形的纬度和经度?

来自分类Dev

从PHP中的经度和纬度获取位置

Related 相关文章

  1. 1

    如何将足球场上的位置转换为矩形上的坐标?

  2. 2

    将GPS数据转换为纬度和经度C#

  3. 3

    在边界框内将纬度/经度转换为X,Y位置

  4. 4

    将 X 和 Y 转换为纬度和经度

  5. 5

    将X,Y像素转换为经度和纬度

  6. 6

    使用ruby将exif gps数据数组格式转换为经度和纬度浮点数

  7. 7

    将图像转换为二进制不会显示足球场的白线

  8. 8

    如何将向量(X,Y)位置转换为纬度/经度坐标?Java脚本

  9. 9

    我如何知道iBeacons的纬度(X)和经度(Y)位置

  10. 10

    将地理位置纬度和经度转换为自定义图像上的像素坐标

  11. 11

    将物理地址转换为地理位置纬度和经度

  12. 12

    使用python将经度和纬度转换为x和y网格系统

  13. 13

    以正确的方式将经度和纬度坐标转换为地图像素(X和Y)

  14. 14

    将经度和纬度转换为Alber投影上的图像X,Y像素坐标

  15. 15

    将String转换为经度和纬度

  16. 16

    将经度和纬度转换为度

  17. 17

    将String转换为经度和纬度

  18. 18

    无法获取GPS当前位置的纬度和经度Android

  19. 19

    靠近纬度和经度的位置

  20. 20

    如何将经度和纬度转换为GPS Exif字节数组

  21. 21

    从GPS数据计算距离[经度和纬度]

  22. 22

    将经度和纬度转换为ECEF坐标系

  23. 23

    将MapKit纬度和经度转换为DMS格式

  24. 24

    c#:将地址转换为经度和纬度

  25. 25

    Java地理编码-将经度和纬度转换为地址

  26. 26

    将getLastLocation()结果转换为单独的纬度和经度

  27. 27

    将纬度和经度转换为图像上的坐标

  28. 28

    如果我知道GPS的中心和左上角的位置,如何获得矩形的纬度和经度?

  29. 29

    从PHP中的经度和纬度获取位置

热门标签

归档