using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; using System.IO; using System.Diagnostics; namespace GeoSigma.SigmaDrawerUtil { public class Unit { public enum EType { UNIT_KM = 0, //公里 kilometres UNIT_M = 1, //米 metre UNIT_DM = 2, //分米 decimeter UNIT_CM = 3, //厘米 centimeter UNIT_MM = 4, //毫米 millimetres UNIT_SECOND = 5, //秒 second(60分之一分) UNIT_MS = 6, //毫秒 millisecond UNIT_FOOT = 7, //英尺 foot = 304.8mm UNIT_INCH = 8, //英寸 inch = 25.4mm UNIT_MILE = 9, //英里 mile = 1.609*1e6mm UNIT_YARD = 10, //码 yard = 914.4mm UNIT_SEA_MILE = 11, //海里 nautical mile = 1852000mm UNIT_RUSSIAN_MILE = 12, //俄里 Russian mile = 1.0668*1e6mm UNIT_RUSSIAN_UNIT_OF_LENGTH = 13, //俄丈 Russian unit of length = 2133.6mm UNIT_JAPANESE_MILE = 14, //日里 Japanese mile = 3.9273*1e6mm UNIT_JAPANESE_FOOT = 15, //日尺 Japanese foot = 303mm; //经纬度单位定义 UNIT_DEGREE = 16, //度(360度) UNIT_DMS = 17, //度分秒,即±DDDMMSS.SSSS格式 UNIT_MINUTE = 18, //分(60分之一度) UNIT_RADIAN = 19, //弧度 UNIT_GRAD = 20 //梯度 1梯度=0.015707963267949弧度 }; public Unit() { msPerCM = 100.0; } /// /// 1标准单位转换为毫米 /// /// /// public double Millimetres(int unit) { return Millimetres((EType)unit); } /// /// 返回的单位为 毫米 /// /// /// 返回的单位为 毫米 public double Millimetres(EType unit) { switch (unit) { case EType.UNIT_MM: return 1.0; case EType.UNIT_CM: return 10.0; case EType.UNIT_DM: return 100.0; case EType.UNIT_M: return 1000.0; case EType.UNIT_KM: return 1e6; case EType.UNIT_SECOND: //return msPerCM * 0.1 * 1000.0; //单位为 毫秒/毫米 case EType.UNIT_MS: return msPerCM * 0.1; //单位为 毫秒/毫米 case EType.UNIT_FOOT: return 304.8; case EType.UNIT_INCH: return 25.4; case EType.UNIT_MILE: return 1.609 * 1e6; case EType.UNIT_YARD: return 914.4; case EType.UNIT_SEA_MILE: return 1852000.0; case EType.UNIT_RUSSIAN_MILE: return 1.0668 * 1e6; case EType.UNIT_RUSSIAN_UNIT_OF_LENGTH: return 2133.6; case EType.UNIT_JAPANESE_MILE: return 3.9273 * 1e6; case EType.UNIT_JAPANESE_FOOT: return 303; } return 1.0; } /// /// 转换为毫米 /// /// 转换前数据 /// 数据单位 /// 转换为毫米的数据 public double Millimetres(double data, EType unit) { return data * Millimetres(unit); } /// /// 转换为米 /// /// 转换前的数据 /// 转换前数据的单位 /// 转换为米为单位的数据 public double Meter(double data, EType unit) { return Millimetres(data, unit) * 0.001; } public double Meter(EType unit) { return Millimetres(unit) * 0.001; } public double GetMillisecondPerCM() { return msPerCM; } double msPerCM; //(毫秒/厘米) } }