PosData.cs 5.6 KB

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