Exemple #1
0
        private Coordinate GetFieldFromGps(Gps gps)
        {
            var x = (int)((gps.Longitude - XLowerLeftCorner) / CellSize);
            var y = (int)((gps.Latitude - YLowerLeftCorner) / CellSize);

            return(new Coordinate(x, y));
        }
Exemple #2
0
        /// <summary>
        /// Retrieves a pixel value at a position from GPS.
        /// </summary>
        /// <param name="gps">A Gps position for the desired pixel.</param>
        /// <returns>The value of the pixel.</returns>
        public double GetValueFromGps(Gps gps)
        {
            if (gps.Longitude < XLowerLeftCorner || gps.Longitude > XLowerLeftCorner + NumberOfColumns * CellSize ||
                gps.Latitude < YLowerLeftCorner || gps.Latitude > YLowerLeftCorner + NumberOfRows * CellSize)
            {
                return(NoDataValue);
            }

            var coordinate = GetFieldFromGps(gps);

            return(GetValue(coordinate));
        }
Exemple #3
0
        public double DistanceTo(Gps targetGps)
        {
            var theta     = Longitude - targetGps.Longitude;
            var thetaRad  = Math.PI * theta / 180;
            var baseRad   = Math.PI * Latitude / 180;
            var targetRad = Math.PI * targetGps.Latitude / 180;

            var dist = Math.Sin(baseRad) * Math.Sin(targetRad) +
                       Math.Cos(baseRad) * Math.Cos(targetRad) * Math.Cos(thetaRad);

            dist = Math.Acos(dist);

            dist = dist * 180 / Math.PI;
            dist = dist * 60 * 1.1515;

            const double kilometers = 1.609344;

            return(kilometers * dist);
        }