PosData.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations.Schema;
  4. using System.ComponentModel.DataAnnotations;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using DW5S.ViewModel;
  9. namespace DW5S.Entity
  10. {
  11. /// <summary>
  12. /// 指示某个属性需要导出
  13. /// </summary>
  14. [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
  15. public class ExportCellAttribute : Attribute
  16. {
  17. /// <summary>
  18. /// 指示某个属性需要导出
  19. /// </summary>
  20. public ExportCellAttribute()
  21. {
  22. }
  23. /// <summary>
  24. /// 指示某个属性需要导出
  25. /// </summary>
  26. /// <param name="format">浮点数(默认f4)、时间(默认yyyy-MM-dd HH:mm:ss)等导出时的格式化字符串</param>
  27. public ExportCellAttribute(string format)
  28. {
  29. this.Format = format;
  30. }
  31. /// <summary>
  32. /// 浮点数(默认f4)、时间(默认yyyy-MM-dd HH:mm:ss)等导出时的格式化字符串
  33. /// </summary>
  34. public string Format { get; set; }
  35. /// <summary>
  36. /// 列的排列顺序,未指定的ColumnIndex的按照属性顺序排在之后
  37. /// </summary>
  38. public int ColumnIndex { get; set; } = -1;
  39. }
  40. /// <summary>
  41. /// 指示某个属性在ToolTip中显示
  42. /// </summary>
  43. [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
  44. public class ToolTipAttribute : Attribute
  45. {
  46. /// <summary>
  47. /// 指示某个属性在ToolTip中显示
  48. /// </summary>
  49. public ToolTipAttribute()
  50. {
  51. }
  52. /// <summary>
  53. /// 指示某个属性在ToolTip中显示
  54. /// </summary>
  55. /// <param name="format">浮点数(默认f4)、时间(默认yyyy-MM-dd HH:mm:ss)等导出时的格式化字符串</param>
  56. public ToolTipAttribute(string format)
  57. {
  58. this.Format = format;
  59. }
  60. /// <summary>
  61. /// 浮点数(默认f4)、时间(默认yyyy-MM-dd HH:mm:ss)等导出时的格式化字符串
  62. /// </summary>
  63. public string Format { get; set; }
  64. /// <summary>
  65. /// ToolTip从上到下的排列顺序,未指定的Index将按照属性顺序排在之后
  66. /// </summary>
  67. public int Index { get; set; } = 10000;
  68. }
  69. /// <summary>
  70. /// 定位点绑定到地图的对象
  71. /// </summary>
  72. public class PosData : BaseViewModel<long>
  73. {
  74. /// <summary>
  75. /// 信号时刻
  76. /// </summary>
  77. [Display(Name = "信号时刻")]
  78. [DisplayFormat(DataFormatString = "yyyy-MM-dd HH:mm:ss.fff")]
  79. [ExportCell(ColumnIndex = 0)]//如果导出了SigTime,则内部会自动按照SigTime降序排列后再导出
  80. [ToolTip(Index = 0)]
  81. public DateTime SigTime { get; set; }
  82. /// <summary>
  83. /// 定位经度
  84. /// </summary>
  85. [Display(Name = "定位经度", AutoGenerateField = false)]
  86. [ExportCell("f4")]
  87. [ToolTip("f4")]
  88. public double PosLon { get; set; }
  89. /// <summary>
  90. /// 定位纬度
  91. /// </summary>
  92. [Display(Name = "定位纬度", AutoGenerateField = false)]
  93. [ExportCell("f4")]
  94. [ToolTip("f4")]
  95. public double PosLat { get; set; }
  96. /// <summary>
  97. /// 定位经度
  98. /// </summary>
  99. [Display(Name = "镜像经度", AutoGenerateField = false)]
  100. [ExportCell("f4")]
  101. [ToolTip("f4")]
  102. public double MirrLon { get; set; }
  103. /// <summary>
  104. /// 定位纬度
  105. /// </summary>
  106. [Display(Name = "镜像纬度", AutoGenerateField = false)]
  107. [ExportCell("f4")]
  108. [ToolTip("f4")]
  109. public double MirrLat { get; set; }
  110. /// <summary>
  111. /// 置信度
  112. /// </summary>
  113. [Display(Name = "置信度")]
  114. [ExportCell()]
  115. [ToolTip()]
  116. public int Confidence { get; set; }
  117. /// <summary>
  118. /// 当前点是否被选中(默认false)
  119. /// </summary>
  120. [Display(Name = "是否选中", AutoGenerateField = false)]
  121. [NotMapped]
  122. public bool Selected { get; set; }
  123. /// <summary>
  124. /// 当前点是否可见(默认true)
  125. /// </summary>
  126. [Display(Name = "是否可见", AutoGenerateField = false)]
  127. [NotMapped]
  128. public bool Visible { get; set; } = true;
  129. /// <summary>
  130. /// 用于生成颜色的一个key,相同的key具有相同的颜色,当ColorKey为html颜色时则使用此颜色(如#A1B2FF),默认红色#CC3333
  131. /// </summary>、
  132. [Display(Name = "颜色标记", AutoGenerateField = false)]
  133. [NotMapped]
  134. public string ColorKey { get; set; } = "#CC3333";
  135. /// <summary>
  136. /// 判断定位点是否在一个框选的矩形区域内
  137. /// </summary>
  138. /// <param name="startLon"></param>
  139. /// <param name="startLat"></param>
  140. /// <param name="endLon"></param>
  141. /// <param name="endLat"></param>
  142. /// <returns></returns>
  143. public bool InRectangle(double startLon, double startLat, double endLon, double endLat)
  144. {
  145. return PosLon >= startLon && PosLon <= endLon && PosLat >= startLat && PosLat <= endLat;
  146. }
  147. /// <summary>
  148. /// 内部调用的属性
  149. /// </summary>
  150. [Display(AutoGenerateField = false)]
  151. [NotMapped]
  152. public int ClusterCount { get; set; } = 1;
  153. /// <summary>
  154. /// 内部调用的属性
  155. /// </summary>
  156. [Display(AutoGenerateField = false)]
  157. [NotMapped]
  158. public int ClusterKey { get; set; } = int.MinValue;
  159. }
  160. }