Magglingen2013

Recorded position data of professional football matches. The data includes positions on football field in 100ms steps (10Hz) of the players, and the ball.

The games were performed in real competition situation by top swiss football club players (U19). The data was intentionally anonymized, not at last because of the high density of information available.

This dataset gives you a glimpse on a possible data stream originating from a live match in some not to distant future.

The terrain was an artificial green. Recordings are available from beginning of the first half time up to the end to the second half time.

Data Format

There is the "Game" structure which holds the position data, and the "Description" structure specifies the team affiliation of each player.

Basic Structure

The games are provided as an array of frames. Each frame describes a state on the football field, extended with accumulated values.

"{
    "_id": "vc4ZHCQCgH3DfbvRR",
    "game": "mwHuzM6QKphFDw3Sm",
    "ts": 3239387,
    "data": [
        {
            "id": 5,
            "x": -2.122,
            "y": 22.198,
        },
        {
            "id": 11,
            "x": 12.629,
            "y": 4.808,
        },
        ... all players ...
    ],
    "last_id": "jxNvHNquyK8sMsX5Q"
}

This example shows the frame with the most basic information available:

  • _id: The frame id, randomly choosen.
  • game: The id of the game, not incorporated in the processing
  • ts: Timestamp as integer which is absolute or relative but must be in ms.
  • data: The array of all player positions and the ball.

    The ball is denoted by definition as id 5.

    • id: The id of the player, reference to in the GameDesc.
    • x,y: Position in meter, origin is the center of the play field.
  • last_id: The id of the precedent frame.

Extended Data

The available information in the data object per player.

{
    "id": 11,
    "x": 12.629,
    "y": 4.808,
    "v": {              # vector of movement
        "x": -0.123,    # distance in meters
        "y": 0.072  
    },
    "dir": 4.182799381602617,           # direction in radian
    "dis": 0.14252368224263642,     # distance in meters
    "spd": 1.425236822426364,           # speed in meters per second
    "distToBall": 22.8035984221789, # distance from player to ball in meters
    "poss": false                       # player possessing the ball
},

Calculated and accumulated values on a per Frame basis.

"calc": {
    "pressingIndex": 0,     # The pressing calculated for this frame.
    "curPass": 2,           # How many passes achieved since last change in team.
    "curBPTeam": 2,         # Which team has the ball possession.
    "curBPTime": 1300,      # Since how long has the team the ball.
    "curBPTimeTeam": {      # Possession of the ball accumulated on the whole game.
        "0": {              # 0 -> error, time is not added to any team
            "a": 0,         # For the whole play field.
            "s": {          # Split for different sectors of the field.
                "1": 0,
                "2": 0,
                "3": 0
            }
        },
        "1": {              # 1 -> team number 1, regarding GameDesc
            "a": 5500,
            "s": {
                "1": 0,
                "2": 5600,
                "3": 0
            }
        },
        "2": {              # 2 -> team number 2
            "a": 1300,
            "s": {
                "1": 0,
                "2": 1400,
                "3": 0
            }
        }
    },
    "curBPPassS": 2,        # 
    "curBPPass": 0          #
}

Data and Resources

Additional Info

Field Value
Author Martin Rumo
Maintainer Michael Luggen
Last Updated May 23, 2014, 05:51 (UTC)
Created May 22, 2014, 07:48 (UTC)
comments powered by Disqus
comments powered by Disqus