การใช้ Apache log4net™

  1. ติดตั้ง log4net ผ่าน NuGet
  2. สร้างไฟล์ log4net.config
  3. บอก log4net ให้โหลดไฟล์คอนฟิก
  4. เพิ่มโค๊ดที่ Program.cs
  5. การกำหนดชื่อไฟล์ log เป็น ปี เดือน วัน
  6. การเก็บ log แบบ indent
  7. log4net levels
Continue reading

การแปลงพิกัดละติจูด และลองจิจูด

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            double lat = 38.89861;
            Console.WriteLine("{0} > {1}", lat, ConvertDoubleToDegreeAngleLat(lat));
            double lon = -76.96222;
            Console.WriteLine("{0} > {1}", lon, ConvertDoubleToDegreeAngleLon(lon));

            double degrees;
            double minutes;
            double seconds;
            string dir;

            Console.WriteLine();

            degrees = 38;
            minutes = 53;
            seconds = 55.0;
            dir = "N";
            Console.WriteLine("{0} {1} {2} {3} > {4:f5}", degrees, minutes, seconds, dir, ConvertDegreeAngleToDouble(degrees, minutes, seconds, dir));
            degrees = 76;
            minutes = 57;
            seconds = 44.0;
            dir = "W";
            Console.WriteLine("{0} {1} {2} {3} > {4:f5}", degrees, minutes, seconds, dir, ConvertDegreeAngleToDouble(degrees, minutes, seconds, dir));
        }

        public static string ConvertDoubleToDegreeAngleLat(double doubleDegrees)
        {
            string dir = (doubleDegrees >= 0 ? "N" : "S");
            return ConvertDoubleToDegreeAngle(doubleDegrees, dir);
        }
        public static string ConvertDoubleToDegreeAngleLon(double doubleDegrees)
        {
            string dir = (doubleDegrees >= 0 ? "E" : "W");
            return ConvertDoubleToDegreeAngle(doubleDegrees, dir);
        }
        public static string ConvertDoubleToDegreeAngle(double doubleDegrees, string dir)
        {
            doubleDegrees = Math.Abs(doubleDegrees);
            double latMinPart = ((doubleDegrees - Math.Truncate(doubleDegrees) / 1) * 60);
            double latSecPart = ((latMinPart - Math.Truncate(latMinPart) / 1) * 60);

            double degrees = Math.Truncate(doubleDegrees);
            double minutes = Math.Truncate(latMinPart);
            double seconds = latSecPart;

            return string.Format("{0} {1} {2} {3}", degrees, minutes, seconds.ToString("#.0"), dir);
        }

        public static double ConvertDegreeAngleToDouble(double degrees, double minutes, double seconds, string dir)
        {
            //Decimal degrees = 
            //   whole number of degrees, 
            //   plus minutes divided by 60, 
            //   plus seconds divided by 3600

            int multiplier = (dir == "S" || dir == "W") ? -1 : 1; //handle south and west
            return (degrees + (minutes / 60) + (seconds / 3600)) * multiplier;
        }
    }
}
Posted in C#