// Start is called before the first frame update
    void Start()
    {
        //The csv file needs to be in the resources folder of the project
        List <Dictionary <string, object> > dataSalinity = CSVReader.Read("alldata2006-2010-2012");


        SalinityPoint[] salinityPoints = new SalinityPoint[dataSalinity.Count];
        List <int>[]    salinityIndexesXYearMixUlimit = new List <int> [years.Length];
        List <int>[]    salinityIndexesXYearMixDLimit = new List <int> [years.Length];

        string path = Application.persistentDataPath;



        for (int i = 0; i < salinityIndexesXYearMixDLimit.Length; i++)
        {
            salinityIndexesXYearMixUlimit[i] = new List <int>();
            salinityIndexesXYearMixDLimit[i] = new List <int>();
        }


        //
        for (int i = 0; i < dataSalinity.Count; i++)
        {
            float n;



            //Gets all the datapoints with freshwater and adds them to lists. They will be later used in the TimeChange script
            //The file needs to contain the following fields:
            //-Var: The salinity value of the data point. The units are PPT (Parts per thousand)
            //-X: X coordinate of the location of the data point. The units are meters.
            //-Y: Y coordinate of the location of the data point. The units are meters.
            //-Level: Water level of the data point. Its 10 for the deepest and 1 for the closest to the surface.
            //-Year: Year when the sample was taken.
            if (float.TryParse(dataSalinity[i]["X"].ToString(), out n) && float.TryParse(dataSalinity[i]["var"].ToString(), out n) &&
                float.TryParse(dataSalinity[i]["Y"].ToString(), out n))
            {
                salinityPoints[i].x = float.Parse(dataSalinity[i]["X"].ToString());
                salinityPoints[i].y = float.Parse(dataSalinity[i]["Y"].ToString());

                salinityPoints[i].salinity   = float.Parse(dataSalinity[i]["var"].ToString());
                salinityPoints[i].waterLayer = int.Parse(dataSalinity[i]["level"].ToString());
                salinityPoints[i].year       = int.Parse(dataSalinity[i]["year"].ToString());

                if (salinityPoints[i].salinity <= 0.5 && salinityPoints[i].year != 0)
                {
                    salinityIndexesXYearMixDLimit[Array.IndexOf(years, salinityPoints[i].year)].Add(i);
                }

                if (salinityPoints[i].salinity <= 10 && salinityPoints[i].year != 0)
                {
                    salinityIndexesXYearMixUlimit[Array.IndexOf(years, salinityPoints[i].year)].Add(i);
                }
            }
        }


        SaveSalinityPoints(salinityPoints);

        int dummyIndex;

        for (int i = 0; i < years.Length; i++)
        {
            for (int j = 0; j < salinityIndexesXYearMixDLimit[i].Count - 1; j++)
            {
                for (int k = j + 1; k < salinityIndexesXYearMixDLimit[i].Count; k++)
                {
                    if (salinityPoints[salinityIndexesXYearMixDLimit[i][k]].salinity > salinityPoints[salinityIndexesXYearMixDLimit[i][j]].salinity)
                    {
                        dummyIndex = salinityIndexesXYearMixDLimit[i][j];
                        salinityIndexesXYearMixDLimit[i][j] = salinityIndexesXYearMixDLimit[i][k];
                        salinityIndexesXYearMixDLimit[i][k] = dummyIndex;
                    }
                }
            }
        }

        for (int i = 0; i < years.Length; i++)
        {
            for (int j = 0; j < salinityIndexesXYearMixUlimit[i].Count - 1; j++)
            {
                for (int k = j + 1; k < salinityIndexesXYearMixUlimit[i].Count; k++)
                {
                    if (salinityPoints[salinityIndexesXYearMixUlimit[i][k]].salinity > salinityPoints[salinityIndexesXYearMixUlimit[i][j]].salinity)
                    {
                        dummyIndex = salinityIndexesXYearMixUlimit[i][j];
                        salinityIndexesXYearMixUlimit[i][j] = salinityIndexesXYearMixUlimit[i][k];
                        salinityIndexesXYearMixUlimit[i][k] = dummyIndex;
                    }
                }
            }
        }

        Save(salinityIndexesXYearMixDLimit, 1);
        Save(salinityIndexesXYearMixUlimit, 2);


        List <int>[] exArray1 = Load(1);
        List <int>[] exArray2 = Load(2);
    }
Beispiel #2
0
    // Start is called before the first frame update
    void Start()
    {
        List <Dictionary <string, object> > dataSalinity = CSVReader.Read("alldata2006-2010-2012");


        SalinityPoint[] salinityPoints = new SalinityPoint[dataSalinity.Count];
        List <int>[]    salinityIndexesXYearMixUlimit = new List <int> [5];
        List <int>[]    salinityIndexesXYearMixDLimit = new List <int> [5];

        string path = Application.persistentDataPath;



        for (int i = 0; i < 5; i++)
        {
            salinityIndexesXYearMixUlimit[i] = new List <int>();
            salinityIndexesXYearMixDLimit[i] = new List <int>();
        }


        for (int i = 0; i < dataSalinity.Count; i++)
        {
            float n;



            if (float.TryParse(dataSalinity[i]["X"].ToString(), out n) && float.TryParse(dataSalinity[i]["var"].ToString(), out n) &&
                float.TryParse(dataSalinity[i]["Y"].ToString(), out n))
            {
                salinityPoints[i].x = float.Parse(dataSalinity[i]["X"].ToString());
                salinityPoints[i].y = float.Parse(dataSalinity[i]["Y"].ToString());

                salinityPoints[i].salinity   = float.Parse(dataSalinity[i]["var"].ToString());
                salinityPoints[i].waterLayer = int.Parse(dataSalinity[i]["level"].ToString());
                salinityPoints[i].year       = int.Parse(dataSalinity[i]["year"].ToString());

                if (salinityPoints[i].salinity <= 0.5 && salinityPoints[i].year != 0)
                {
                    salinityIndexesXYearMixDLimit[(salinityPoints[i].year - 2005) / 2].Add(i);
                }

                if (salinityPoints[i].salinity <= 10 && salinityPoints[i].year != 0)
                {
                    salinityIndexesXYearMixUlimit[(salinityPoints[i].year - 2005) / 2].Add(i);
                }
            }
        }


        SaveSalinityPoints(salinityPoints);

        int dummyIndex;

        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < salinityIndexesXYearMixDLimit[i].Count - 1; j++)
            {
                for (int k = j + 1; k < salinityIndexesXYearMixDLimit[i].Count; k++)
                {
                    if (salinityPoints[salinityIndexesXYearMixDLimit[i][k]].salinity > salinityPoints[salinityIndexesXYearMixDLimit[i][j]].salinity)
                    {
                        dummyIndex = salinityIndexesXYearMixDLimit[i][j];
                        salinityIndexesXYearMixDLimit[i][j] = salinityIndexesXYearMixDLimit[i][k];
                        salinityIndexesXYearMixDLimit[i][k] = dummyIndex;
                    }
                }
            }
        }

        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < salinityIndexesXYearMixUlimit[i].Count - 1; j++)
            {
                for (int k = j + 1; k < salinityIndexesXYearMixUlimit[i].Count; k++)
                {
                    if (salinityPoints[salinityIndexesXYearMixUlimit[i][k]].salinity > salinityPoints[salinityIndexesXYearMixUlimit[i][j]].salinity)
                    {
                        dummyIndex = salinityIndexesXYearMixUlimit[i][j];
                        salinityIndexesXYearMixUlimit[i][j] = salinityIndexesXYearMixUlimit[i][k];
                        salinityIndexesXYearMixUlimit[i][k] = dummyIndex;
                    }
                }
            }
        }

        Save(salinityIndexesXYearMixDLimit, 1);
        Save(salinityIndexesXYearMixUlimit, 2);


        List <int>[] exArray1 = Load(1);
        List <int>[] exArray2 = Load(2);
    }