0
0

More than 3 years have passed since last update.

C# .NetCoreで、ボートレース結果の解析 構造検討

Last updated at Posted at 2020-10-25

やること

C# .NetCoreで、ボートレース結果の解析の前調査
https://qiita.com/TamanegiTarao/items/02a634c36131ca85837e
をもとに、取得データ構造の検討を行う。
前回の記事では読みこみ迄やりたかったけど、長くなりそうだから
今回はここまでにする。

データ構造

前回の内容より、取得データの内容の検討する。
データ量が多くなることが想定されるため、
いくつかデータを以下の通り分ける。

節間タイトル

  • 名前
  • グレード情報
  • 開催期間

節間のタイトルに関する情報、グレード情報が解析時必要となるため。
グレード情報は手作業にならざるを得ない。

    public enum Internode1
    {
        General = 0,
        G3,
        G2,
        G1,
        SG,
    }

    public enum Internode2
    {
        Masters = 0,
        Wemen,
    }

    public class InternodeTitle
    {
        public string Title;
        public Internode1 Internode1;
        public Internode2 Internode2;
        public DateTime Start;
        public DateTime End;
    }

レース名

  • 名前
  • 特徴

レースの名前と特徴をまとめる。
特徴とは、進入固定や準優、優勝戦、シード番組など。
特徴をまとめるには手作業現状、手作業にならざるを得ない。

    public class RaceTitle
    {
        public string Title;
        public bool FixedApproach;
        public bool SemiFinal;
        public bool Final;
        public bool Seed;
    }

レース

  • 開催場
  • 開催日
  • 節間日
  • レース番号

レース内容の基本的な情報。レース結果と、レース情報の紐づけに使用する。

    public class Race
    {
        public int Place;
        public DateTime Date;
        public int InDay;
        public int RaceNum;
    }

レース結果

  • 単勝
  • 複勝
  • 2連単
  • 2連複
  • 3連単
  • 3連複
  • 各連複

配当情報。レース、選手に紐づけるのが目的。
組み合わせ、人気、配当が対象。

    public class ResultOne
    {
        public int Popler;
        public int Yen;
        public int First;
    }

    public class ResultTwo : ResultOne
    {
        public int Second;
    }

    public class ResultThree: ResultTwo
    {
        public int Thired;
    }


    public class RaceResult
    {
        public Race Race;
        public ResultOne Tansho;
        public ResultOne Fukusho1;
        public ResultOne Fukusho2;
        public ResultTwo NirenTan;
        public ResultTwo NirenFuku;
        public ResultThree SanrenTan;
        public ResultThree SanrenFuku;
        public ResultTwo Kakuren1;
        public ResultTwo Kakuren2;
        public ResultTwo Kakuren3;
    }

レース情報

  • 節間タイトル
  • レース名
  • レース結果
  • レース
  • 決まり手
  • 風向
  • 風速 レースのセンス情報以外の内容。 上記の、節間タイトル、レース名、レース結果を含む。
    public enum WindDirection { None, N, NE, E, ES, S, SW, W, WN };
    public enum Kimarite { Nige, Makuri, Sashi, Makurisashi, Megumare, Nuki, Huseiritsu }
    public class RaceInfo
    {
        public InternodeTitle InternodeTitle;
        public RaceTitle RaceTitle;
        public Race Race;
        public RaceResult RaceResult;
        public Kimarite Kimarite;
        public WindDirection WindDirection;
        public int WindMetor;
    }

選手成績

  • レース情報
  • 着順
  • 枠番
  • 進入
  • 登録番号
  • モーター
  • ボート
  • 展示
  • スタート

選手成績は選手に限定する情報のみにして、他の内容は、レース情報に紐づけておく。
レースタイムはあまり意味がない気がしているので除外する。

    public class PlayerResult
    {
        public RaceInfo RaceInfo;
        public int Number;
        public int Result;
        public int Wakuban;
        public int Cource;
        public int Motor;
        public int Boat;
        public double Tenji;
        public double Start;
    }

レース結果まとめ

  • 節間タイトルリスト
  • レース名リスト
  • レース結果リスト
  • 選手結果リスト

選手結果リストは、必要に応じてメンバリストの内容を紐づけることが前提。

    public class RaceResults
    {
        public List<InternodeTitle> InternodeTitles;
        public List<RaceTitle> RaceTitles;
        public List<RaceResult> Results;
        public List<PlayerResult> PlayerResults;
    }   

まとめ

今回はレースのデータ構造について検討を行った。
構造の是非はともかくこれで、要素ごとに分割した内容ができそうな予感はしている。
前置きが長くなってきているのが反省点。
次回は、実際にファイルを読んでみたいと思う。
だがしかし、すべてを読み込もうとするとボリュームが増えそうなので、
絞って記載しようかと考えている。

次回
C# .NetCoreで、ボートレース結果の解析 読み込みその1
https://qiita.com/TamanegiTarao/items/33284c3111a547b0ee8d

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0